1'use strict'; 2// Flags: --expose-internals 3 4// This test ensures that the type checking of ModuleMap throws 5// errors appropriately 6 7require('../common'); 8 9const assert = require('assert'); 10const { Loader } = require('internal/modules/esm/loader'); 11const ModuleMap = require('internal/modules/esm/module_map'); 12const ModuleJob = require('internal/modules/esm/module_job'); 13const createDynamicModule = require( 14 'internal/modules/esm/create_dynamic_module'); 15 16const stubModuleUrl = new URL('file://tmp/test'); 17const stubModule = createDynamicModule(['default'], stubModuleUrl); 18const loader = new Loader(); 19const moduleMap = new ModuleMap(); 20const moduleJob = new ModuleJob(loader, stubModule.module, 21 () => new Promise(() => {})); 22 23assert.throws( 24 () => moduleMap.get(1), 25 { 26 code: 'ERR_INVALID_ARG_TYPE', 27 name: 'TypeError', 28 message: 'The "url" argument must be of type string. Received type number' + 29 ' (1)' 30 } 31); 32 33assert.throws( 34 () => moduleMap.set(1, moduleJob), 35 { 36 code: 'ERR_INVALID_ARG_TYPE', 37 name: 'TypeError', 38 message: 'The "url" argument must be of type string. Received type number' + 39 ' (1)' 40 } 41); 42 43assert.throws( 44 () => moduleMap.set('somestring', 'notamodulejob'), 45 { 46 code: 'ERR_INVALID_ARG_TYPE', 47 name: 'TypeError', 48 message: 'The "job" argument must be an instance of ModuleJob. ' + 49 "Received type string ('notamodulejob')" 50 } 51); 52 53assert.throws( 54 () => moduleMap.has(1), 55 { 56 code: 'ERR_INVALID_ARG_TYPE', 57 name: 'TypeError', 58 message: 'The "url" argument must be of type string. Received type number' + 59 ' (1)' 60 } 61); 62