Sha256: 6ddd698013dc11760e821245f051399c19d4c543224911c25f309aadbc7eefeb

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

import * as Normalize from './normalize'
import { promises as fs } from 'fs'
import unfetch from 'isomorphic-unfetch'

const fetchOrReadFile = async (
  input: string,
): Promise<Response | { json: () => Promise<unknown> }> => {
  const fileURL = new URL(`${Normalize.config.japaneseAddressesApi}${input}`)
  if (fileURL.protocol === 'http:' || fileURL.protocol === 'https:') {
    if (Normalize.config.geoloniaApiKey) {
      fileURL.search = `?geolonia-api-key=${Normalize.config.geoloniaApiKey}`
    }
    return unfetch(fileURL.toString())
  } else if (fileURL.protocol === 'file:') {
    const filePath = process.platform === 'win32' ? decodeURI(fileURL.pathname).substr(1) : decodeURI(fileURL.pathname);
    return {
      json: async () => {
        const contents = await fs.readFile(filePath)
        return JSON.parse(contents.toString('utf-8'))
      },
    }
  } else {
    throw new Error(`Unknown URL schema: ${fileURL.protocol}`)
  }
}

Normalize.__internals.fetch = fetchOrReadFile
export const config = Normalize.config
export const normalize = Normalize.normalize

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
japanese_address_parser-3.1.0 js/node_modules/@geolonia/normalize-japanese-addresses/src/main-node.ts