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

95.12% Statements 39/41
78.57% Branches 11/14
100% Functions 1/1
95.12% Lines 39/41

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 33 34 35 36 37 38 39 40 41 42142x 142x 142x 142x 142x 142x 142x 142x 142x 142x 142x 142x 142x 142x 142x 142x 142x 142x     142x 142x 142x 142x 142x 103x 103x 103x 103x 103x 103x 103x 103x 103x 13x 103x 142x 142x 142x 142x 142x  
'use strict';
 
const {
  RegExpPrototypeExec,
} = primordials;
const { getOptionValue } = require('internal/options');
 
const experimentalWasmModules = getOptionValue('--experimental-wasm-modules');
 
const extensionFormatMap = {
  '__proto__': null,
  '.cjs': 'commonjs',
  '.js': 'module',
  '.json': 'json',
  '.mjs': 'module',
};
 
if (experimentalWasmModules) {
  extensionFormatMap['.wasm'] = 'wasm';
}
 
/**
 * @param {string} mime
 * @returns {string | null}
 */
function mimeToFormat(mime) {
  if (
    RegExpPrototypeExec(
      /\s*(text|application)\/javascript\s*(;\s*charset=utf-?8\s*)?/i,
      mime
    ) !== null
  ) return 'module';
  if (mime === 'application/json') return 'json';
  if (experimentalWasmModules && mime === 'application/wasm') return 'wasm';
  return null;
}
 
module.exports = {
  extensionFormatMap,
  mimeToFormat,
};