handle resolution of relative URLs LHS in import maps (#2039)

This commit is contained in:
Guy Bedford 2019-10-04 22:31:34 -04:00 committed by GitHub
parent e7af7c9d54
commit 958aa919aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 1 deletions

View File

@ -121,6 +121,7 @@ function objectAssign (to, from) {
function resolveAndComposePackages (packages, outPackages, baseUrl, parentMap, parentUrl) {
for (let p in packages) {
const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p;
const rhs = packages[p];
// package fallbacks not currently supported
if (typeof rhs !== 'string')
@ -129,7 +130,7 @@ function resolveAndComposePackages (packages, outPackages, baseUrl, parentMap, p
if (!mapped)
targetWarning(p, rhs, 'bare specifier did not resolve');
else
outPackages[p] = mapped;
outPackages[resolvedLhs] = mapped;
}
}

View File

@ -12,6 +12,7 @@ function doResolveImportMap (id, parentUrl, importMap) {
describe('Import Maps', function () {
const firstImportMap = resolveAndComposeImportMap({
imports: {
"./asdf": "./asdf-asdf",
"t": "./src/t",
"t/": "./src/t/",
"r": "./src/r"
@ -55,6 +56,10 @@ describe('Import Maps', function () {
assert.equal(doResolveImportMap('/x', 'https://site.com/', baseImportMap), 'https://sample.com/x.js');
});
it('Can map relative URLs', function () {
assert.equal(doResolveImportMap('/asdf', 'https://sample.com/', baseImportMap), 'https://sample.com/asdf-asdf');
});
it('Resolves packages with main sugar', function () {
assert.equal(doResolveImportMap('x', 'https://site.com', baseImportMap), 'https://sample.com/y');
});