• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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