1'use strict'; 2 3const ModuleJob = require('internal/modules/esm/module_job'); 4const { 5 SafeMap, 6} = primordials; 7let debug = require('internal/util/debuglog').debuglog('esm', (fn) => { 8 debug = fn; 9}); 10const { ERR_INVALID_ARG_TYPE } = require('internal/errors').codes; 11const { validateString } = require('internal/validators'); 12 13// Tracks the state of the loader-level module cache 14class ModuleMap extends SafeMap { 15 get(url) { 16 validateString(url, 'url'); 17 return super.get(url); 18 } 19 set(url, job) { 20 validateString(url, 'url'); 21 if (job instanceof ModuleJob !== true && 22 typeof job !== 'function') { 23 throw new ERR_INVALID_ARG_TYPE('job', 'ModuleJob', job); 24 } 25 debug(`Storing ${url} in ModuleMap`); 26 return super.set(url, job); 27 } 28 has(url) { 29 validateString(url, 'url'); 30 return super.has(url); 31 } 32} 33module.exports = ModuleMap; 34