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