mirror of
https://github.com/jlengrand/open-wc.git
synced 2026-03-10 08:31:19 +00:00
172 lines
6.2 KiB
JSON
172 lines
6.2 KiB
JSON
{
|
|
"importMapBaseURL": "https://example.com/app/index.html",
|
|
"tests": {
|
|
"Fallback to toplevel and between scopes": {
|
|
"importMap": {
|
|
"imports": {
|
|
"a": "/a-1.mjs",
|
|
"b": "/b-1.mjs",
|
|
"c": "/c-1.mjs",
|
|
"d": "/d-1.mjs"
|
|
},
|
|
"scopes": {
|
|
"/scope2/": {
|
|
"a": "/a-2.mjs",
|
|
"d": "/d-2.mjs"
|
|
},
|
|
"/scope2/scope3/": {
|
|
"b": "/b-3.mjs",
|
|
"d": "/d-3.mjs"
|
|
}
|
|
}
|
|
},
|
|
"tests": {
|
|
"should fall back to `imports` when no scopes match": {
|
|
"baseURL": "https://example.com/scope1/foo.mjs",
|
|
"expectedResults": {
|
|
"a": "https://example.com/a-1.mjs",
|
|
"b": "https://example.com/b-1.mjs",
|
|
"c": "https://example.com/c-1.mjs",
|
|
"d": "https://example.com/d-1.mjs"
|
|
}
|
|
},
|
|
"should use a direct scope override": {
|
|
"baseURL": "https://example.com/scope2/foo.mjs",
|
|
"expectedResults": {
|
|
"a": "https://example.com/a-2.mjs",
|
|
"b": "https://example.com/b-1.mjs",
|
|
"c": "https://example.com/c-1.mjs",
|
|
"d": "https://example.com/d-2.mjs"
|
|
}
|
|
},
|
|
"should use an indirect scope override": {
|
|
"baseURL": "https://example.com/scope2/scope3/foo.mjs",
|
|
"expectedResults": {
|
|
"a": "https://example.com/a-2.mjs",
|
|
"b": "https://example.com/b-3.mjs",
|
|
"c": "https://example.com/c-1.mjs",
|
|
"d": "https://example.com/d-3.mjs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"Relative URL scope keys": {
|
|
"importMap": {
|
|
"imports": {
|
|
"a": "/a-1.mjs",
|
|
"b": "/b-1.mjs",
|
|
"c": "/c-1.mjs"
|
|
},
|
|
"scopes": {
|
|
"": {
|
|
"a": "/a-empty-string.mjs"
|
|
},
|
|
"./": {
|
|
"b": "/b-dot-slash.mjs"
|
|
},
|
|
"../": {
|
|
"c": "/c-dot-dot-slash.mjs"
|
|
}
|
|
}
|
|
},
|
|
"tests": {
|
|
"An empty string scope is a scope with import map base URL": {
|
|
"baseURL": "https://example.com/app/index.html",
|
|
"expectedResults": {
|
|
"a": "https://example.com/a-empty-string.mjs",
|
|
"b": "https://example.com/b-dot-slash.mjs",
|
|
"c": "https://example.com/c-dot-dot-slash.mjs"
|
|
}
|
|
},
|
|
"'./' scope is a scope with import map base URL's directory": {
|
|
"baseURL": "https://example.com/app/foo.mjs",
|
|
"expectedResults": {
|
|
"a": "https://example.com/a-1.mjs",
|
|
"b": "https://example.com/b-dot-slash.mjs",
|
|
"c": "https://example.com/c-dot-dot-slash.mjs"
|
|
}
|
|
},
|
|
"'../' scope is a scope with import map base URL's parent directory": {
|
|
"baseURL": "https://example.com/foo.mjs",
|
|
"expectedResults": {
|
|
"a": "https://example.com/a-1.mjs",
|
|
"b": "https://example.com/b-1.mjs",
|
|
"c": "https://example.com/c-dot-dot-slash.mjs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"Package-like scenarios": {
|
|
"importMap": {
|
|
"imports": {
|
|
"moment": "/node_modules/moment/src/moment.js",
|
|
"moment/": "/node_modules/moment/src/",
|
|
"lodash-dot": "./node_modules/lodash-es/lodash.js",
|
|
"lodash-dot/": "./node_modules/lodash-es/",
|
|
"lodash-dotdot": "../node_modules/lodash-es/lodash.js",
|
|
"lodash-dotdot/": "../node_modules/lodash-es/"
|
|
},
|
|
"scopes": {
|
|
"/": {
|
|
"moment": "/node_modules_3/moment/src/moment.js",
|
|
"vue": "/node_modules_3/vue/dist/vue.runtime.esm.js"
|
|
},
|
|
"/js/": {
|
|
"lodash-dot": "./node_modules_2/lodash-es/lodash.js",
|
|
"lodash-dot/": "./node_modules_2/lodash-es/",
|
|
"lodash-dotdot": "../node_modules_2/lodash-es/lodash.js",
|
|
"lodash-dotdot/": "../node_modules_2/lodash-es/"
|
|
}
|
|
}
|
|
},
|
|
"tests": {
|
|
"Base URLs inside the scope should use the scope if the scope has matching keys": {
|
|
"baseURL": "https://example.com/js/app.mjs",
|
|
"expectedResults": {
|
|
"lodash-dot": "https://example.com/app/node_modules_2/lodash-es/lodash.js",
|
|
"lodash-dot/foo": "https://example.com/app/node_modules_2/lodash-es/foo",
|
|
"lodash-dotdot": "https://example.com/node_modules_2/lodash-es/lodash.js",
|
|
"lodash-dotdot/foo": "https://example.com/node_modules_2/lodash-es/foo"
|
|
}
|
|
},
|
|
"Base URLs inside the scope fallback to less specific scope": {
|
|
"baseURL": "https://example.com/js/app.mjs",
|
|
"expectedResults": {
|
|
"moment": "https://example.com/node_modules_3/moment/src/moment.js",
|
|
"vue": "https://example.com/node_modules_3/vue/dist/vue.runtime.esm.js"
|
|
}
|
|
},
|
|
"Base URLs inside the scope fallback to toplevel": {
|
|
"baseURL": "https://example.com/js/app.mjs",
|
|
"expectedResults": {
|
|
"moment/foo": "https://example.com/node_modules/moment/src/foo"
|
|
}
|
|
},
|
|
"Base URLs outside a scope shouldn't use the scope even if the scope has matching keys": {
|
|
"baseURL": "https://example.com/app.mjs",
|
|
"expectedResults": {
|
|
"lodash-dot": "https://example.com/app/node_modules/lodash-es/lodash.js",
|
|
"lodash-dotdot": "https://example.com/node_modules/lodash-es/lodash.js",
|
|
"lodash-dot/foo": "https://example.com/app/node_modules/lodash-es/foo",
|
|
"lodash-dotdot/foo": "https://example.com/node_modules/lodash-es/foo"
|
|
}
|
|
},
|
|
"Fallback to toplevel or not, depending on trailing slash match": {
|
|
"baseURL": "https://example.com/app.mjs",
|
|
"expectedResults": {
|
|
"moment": "https://example.com/node_modules_3/moment/src/moment.js",
|
|
"moment/foo": "https://example.com/node_modules/moment/src/foo"
|
|
}
|
|
},
|
|
"should still fail for package-like specifiers that are not declared": {
|
|
"baseURL": "https://example.com/js/app.mjs",
|
|
"expectedResults": {
|
|
"underscore/": null,
|
|
"underscore/foo": null
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|