From d7c88cdb06bf7f1809394ffa437057a92c642aa3 Mon Sep 17 00:00:00 2001 From: wener Date: Fri, 23 Sep 2022 17:24:34 +0800 Subject: [PATCH] expose applyImportMap --- src/features/import-maps.js | 3 +++ src/system-node.js | 3 +++ test/browser/dynamic-import-maps.js | 13 +++++++++++++ test/system-node.mjs | 2 +- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/features/import-maps.js b/src/features/import-maps.js index 9b17315a0..79ee0f853 100644 --- a/src/features/import-maps.js +++ b/src/features/import-maps.js @@ -23,6 +23,9 @@ if (hasDocument) { processScripts(); window.addEventListener('DOMContentLoaded', processScripts); } +systemJSPrototype.applyImportMap = function (newMap, mapBase) { + resolveAndComposeImportMap(newMap, mapBase || baseUrl, importMap); +} function processScripts () { [].forEach.call(document.querySelectorAll('script'), function (script) { diff --git a/src/system-node.js b/src/system-node.js index 42bb15d61..51729c5dc 100644 --- a/src/system-node.js +++ b/src/system-node.js @@ -23,6 +23,9 @@ systemJSPrototype.resolve = function () { } return originalResolve.apply(this, arguments); }; +systemJSPrototype.applyImportMap = function (newMap, mapBase){ + applyImportMap(this, newMap, mapBase) +} export function applyImportMap(loader, newMap, mapBase) { ensureValidSystemLoader(loader); diff --git a/test/browser/dynamic-import-maps.js b/test/browser/dynamic-import-maps.js index 25a04eaa9..51ad390f1 100644 --- a/test/browser/dynamic-import-maps.js +++ b/test/browser/dynamic-import-maps.js @@ -67,4 +67,17 @@ suite('Dynamic import maps', function () { return importAfterImportMap(moduleId); }); }); + + test('Loading manually added import map', function () { + const moduleId = 'manual-map-1'; + return importNonExistent(moduleId) + .then(function () { + System.applyImportMap({ + "imports": { + [moduleId]: "./esm.js" + } + }) + return importAfterImportMap(moduleId); + }); + }); }); diff --git a/test/system-node.mjs b/test/system-node.mjs index 2e3f881cf..ff56db313 100644 --- a/test/system-node.mjs +++ b/test/system-node.mjs @@ -43,7 +43,7 @@ describe('NodeJS version of SystemJS', () => { }); it('can load a module from disk without setting base url, before prepareImport is called', async () => { - applyImportMap(System, {imports: {"foo": 'file://' + path.join(process.cwd(), 'test/fixtures/register-modules/export.js')}}); + System.applyImportMap({imports: {"foo": 'file://' + path.join(process.cwd(), 'test/fixtures/register-modules/export.js')}}); const foo = await System.import('foo'); assert.equal(foo.p, 5); });