All files / lib/internal/modules/esm initialize_import_meta.js

100% Statements 32/32
100% Branches 9/9
100% Functions 3/3
100% Lines 32/32

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33133x 133x 133x 133x 133x 133x 133x 133x 3x 3x 18x 18x 18x 18x 15x 15x 18x 3x 3x 133x 115x 115x 115x 115x 115x 115x 115x 115x 133x 133x 133x 133x  
'use strict';
 
const { getOptionValue } = require('internal/options');
const experimentalImportMetaResolve =
getOptionValue('--experimental-import-meta-resolve');
const { PromisePrototypeThen, PromiseReject } = primordials;
const asyncESM = require('internal/process/esm_loader');
 
function createImportMetaResolve(defaultParentUrl) {
  return async function resolve(specifier, parentUrl = defaultParentUrl) {
    return PromisePrototypeThen(
      asyncESM.esmLoader.resolve(specifier, parentUrl),
      ({ url }) => url,
      (error) => (
        error.code === 'ERR_UNSUPPORTED_DIR_IMPORT' ?
          error.url : PromiseReject(error))
    );
  };
}
 
function initializeImportMeta(meta, context) {
  const url = context.url;
 
  // Alphabetical
  if (experimentalImportMetaResolve)
    meta.resolve = createImportMetaResolve(url);
  meta.url = url;
}
 
module.exports = {
  initializeImportMeta
};