Sha256: 3f7fe17a188be18697a00d7d16af8e95f448477d488e5bf8baefc69b0ce7e612

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

//
// Taken almost verbatim from https://github.com/open-wc/open-wc/tree/master/packages/import-maps-resolve
// Slightly modified to support aliases.
//

import { join } from 'std/path/mod.ts'
import { parseFromString } from './parser.js'

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 default function (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

3 entries across 3 versions & 1 rubygems

Version Path
proscenium-0.6.0-arm64-darwin lib/proscenium/compilers/esbuild/import_map/read.js
proscenium-0.6.0-x86_64-darwin lib/proscenium/compilers/esbuild/import_map/read.js
proscenium-0.6.0-x86_64-linux lib/proscenium/compilers/esbuild/import_map/read.js