Sha256: d331d315ee01be07810eca546ca49dd1973bc939c3071845fb559d0dd2b66646

Contents?: true

Size: 1.29 KB

Versions: 36

Compression:

Stored size: 1.29 KB

Contents

import { join } from 'std/path/mod.ts'
import { parseFromString } from 'import-maps/resolve'

const baseURL = new URL('file://')

class ImportMapError extends Error {
  constructor(fileName, ...params) {
    super(...params)

    if (Error.captureStackTrace) {
      Error.captureStackTrace(this, ImportMapError)
    }

    this.name = 'ImportMapError'
    this.file = fileName
  }
}

export function readImportMap(fileName, rootDir) {
  let importMap

  if (fileName) {
    importMap = readFile(fileName, rootDir, true)
  } else {
    fileName = ['config/import_map.json', 'config/import_map.js'].find(f => {
      const result = readFile(f, rootDir)
      if (result) {
        importMap = result
        return true
      }
    })
  }

  return importMap
}

function readFile(file, rootDir, required = false) {
  let contents = null

  try {
    contents = Deno.readTextFileSync(join(rootDir, file))
  } catch (error) {
    if (required) {
      throw new ImportMapError(file, error.message, { cause: error })
    }
  }

  if (contents === null) return null

  try {
    if (file.endsWith('.js')) {
      contents = JSON.stringify(eval(contents)(Deno.env.get('RAILS_ENV')))
    }

    return parseFromString(contents, baseURL)
  } catch (error) {
    throw new ImportMapError(file, error.message, { cause: error })
  }
}

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
proscenium-0.5.1-arm64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.5.1-x86_64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.5.1-x86_64-linux lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.5.0-arm64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.5.0-x86_64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.5.0-x86_64-linux lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.4.2-arm64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.4.2-x86_64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.4.2-x86_64-linux lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.4.1-arm64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.4.1-x86_64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.4.1-x86_64-linux lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.4.0-arm64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.4.0-x86_64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.4.0-x86_64-linux lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.3.0-arm64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.3.0-x86_64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.3.0-x86_64-linux lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.2.1-arm64-darwin lib/proscenium/compilers/esbuild/import_map.js
proscenium-0.2.1-x86_64-darwin lib/proscenium/compilers/esbuild/import_map.js