// Manually “tree shaken” from: | |
// <https://github.com/nodejs/node/blob/81a9a97/lib/internal/modules/esm/utils.js> | |
// Last checked on: Apr 29, 2023. | |
import {codes} from './errors.js' | |
const {ERR_INVALID_ARG_VALUE} = codes | |
// In Node itself these values are populated from CLI arguments, before any | |
// user code runs. | |
// Here we just define the defaults. | |
const DEFAULT_CONDITIONS = Object.freeze(['node', 'import']) | |
const DEFAULT_CONDITIONS_SET = new Set(DEFAULT_CONDITIONS) | |
/** | |
* Returns the default conditions for ES module loading. | |
*/ | |
function getDefaultConditions() { | |
return DEFAULT_CONDITIONS | |
} | |
/** | |
* Returns the default conditions for ES module loading, as a Set. | |
*/ | |
function getDefaultConditionsSet() { | |
return DEFAULT_CONDITIONS_SET | |
} | |
/** | |
* @param {Array<string>} [conditions] | |
* @returns {Set<string>} | |
*/ | |
export function getConditionsSet(conditions) { | |
if (conditions !== undefined && conditions !== getDefaultConditions()) { | |
if (!Array.isArray(conditions)) { | |
throw new ERR_INVALID_ARG_VALUE( | |
'conditions', | |
conditions, | |
'expected an array' | |
) | |
} | |
return new Set(conditions) | |
} | |
return getDefaultConditionsSet() | |
} | |