OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-booking / node_modules / bare-module-traverse / lib / resolve / node.js

40 lines · javascript ref:
const lex = require('bare-module-lexer')
const resolve = require('../resolve')
const runtime = require('../runtime')

module.exports = function (entry, parentURL, opts = {}) {
  const { host = runtime.host, hosts = [host] } = opts

  let extensions
  let conditions

  if (entry.type & lex.constants.ADDON) {
    extensions = ['.node']
    conditions = hosts.map((host) => ['node', 'addon', ...host.split('-')])

    return resolve.addon(entry.specifier || '.', parentURL, {
      ...opts,
      extensions,
      conditions,
      hosts
    })
  }

  if (entry.type & lex.constants.ASSET) {
    conditions = ['node', 'asset']
  } else if (entry.type & lex.constants.REQUIRE) {
    extensions = ['.js', '.json', '.node']
    conditions = ['node', 'require']
  } else if (entry.type & lex.constants.IMPORT) {
    conditions = ['node', 'import']
  } else {
    conditions = ['node']
  }

  return resolve.module(entry.specifier, parentURL, {
    ...opts,
    extensions,
    conditions
  })
}