| { |
| "name": "Exact vs. prefix based matching", |
| "details": "Scopes are matched with base URLs that are exactly the same or subpaths under the scopes with trailing shashes", |
| "link": "https://wicg.github.io/import-maps/#resolve-a-module-specifier Step 8.1", |
| "tests": { |
| "Scope without trailing slash only": { |
| "importMap": { |
| "scopes": { |
| "/js": { |
| "moment": "/only-triggered-by-exact/moment", |
| "moment/": "/only-triggered-by-exact/moment/" |
| } |
| } |
| }, |
| "importMapBaseURL": "https://example.com/app/index.html", |
| "tests": { |
| "Non-trailing-slash base URL (exact match)": { |
| "baseURL": "https://example.com/js", |
| "expectedResults": { |
| "moment": "https://example.com/only-triggered-by-exact/moment", |
| "moment/foo": "https://example.com/only-triggered-by-exact/moment/foo" |
| } |
| }, |
| "Trailing-slash base URL (fail)": { |
| "baseURL": "https://example.com/js/", |
| "expectedResults": { |
| "moment": null, |
| "moment/foo": null |
| } |
| }, |
| "Subpath base URL (fail)": { |
| "baseURL": "https://example.com/js/app.mjs", |
| "expectedResults": { |
| "moment": null, |
| "moment/foo": null |
| } |
| }, |
| "Non-subpath base URL (fail)": { |
| "baseURL": "https://example.com/jsiscool", |
| "expectedResults": { |
| "moment": null, |
| "moment/foo": null |
| } |
| } |
| } |
| }, |
| "Scope with trailing slash only": { |
| "importMap": { |
| "scopes": { |
| "/js/": { |
| "moment": "/triggered-by-any-subpath/moment", |
| "moment/": "/triggered-by-any-subpath/moment/" |
| } |
| } |
| }, |
| "importMapBaseURL": "https://example.com/app/index.html", |
| "tests": { |
| "Non-trailing-slash base URL (fail)": { |
| "baseURL": "https://example.com/js", |
| "expectedResults": { |
| "moment": null, |
| "moment/foo": null |
| } |
| }, |
| "Trailing-slash base URL (exact match)": { |
| "baseURL": "https://example.com/js/", |
| "expectedResults": { |
| "moment": "https://example.com/triggered-by-any-subpath/moment", |
| "moment/foo": "https://example.com/triggered-by-any-subpath/moment/foo" |
| } |
| }, |
| "Subpath base URL (prefix match)": { |
| "baseURL": "https://example.com/js/app.mjs", |
| "expectedResults": { |
| "moment": "https://example.com/triggered-by-any-subpath/moment", |
| "moment/foo": "https://example.com/triggered-by-any-subpath/moment/foo" |
| } |
| }, |
| "Non-subpath base URL (fail)": { |
| "baseURL": "https://example.com/jsiscool", |
| "expectedResults": { |
| "moment": null, |
| "moment/foo": null |
| } |
| } |
| } |
| }, |
| "Scopes with and without trailing slash": { |
| "importMap": { |
| "scopes": { |
| "/js": { |
| "moment": "/only-triggered-by-exact/moment", |
| "moment/": "/only-triggered-by-exact/moment/" |
| }, |
| "/js/": { |
| "moment": "/triggered-by-any-subpath/moment", |
| "moment/": "/triggered-by-any-subpath/moment/" |
| } |
| } |
| }, |
| "importMapBaseURL": "https://example.com/app/index.html", |
| "tests": { |
| "Non-trailing-slash base URL (exact match)": { |
| "baseURL": "https://example.com/js", |
| "expectedResults": { |
| "moment": "https://example.com/only-triggered-by-exact/moment", |
| "moment/foo": "https://example.com/only-triggered-by-exact/moment/foo" |
| } |
| }, |
| "Trailing-slash base URL (exact match)": { |
| "baseURL": "https://example.com/js/", |
| "expectedResults": { |
| "moment": "https://example.com/triggered-by-any-subpath/moment", |
| "moment/foo": "https://example.com/triggered-by-any-subpath/moment/foo" |
| } |
| }, |
| "Subpath base URL (prefix match)": { |
| "baseURL": "https://example.com/js/app.mjs", |
| "expectedResults": { |
| "moment": "https://example.com/triggered-by-any-subpath/moment", |
| "moment/foo": "https://example.com/triggered-by-any-subpath/moment/foo" |
| } |
| }, |
| "Non-subpath base URL (fail)": { |
| "baseURL": "https://example.com/jsiscool", |
| "expectedResults": { |
| "moment": null, |
| "moment/foo": null |
| } |
| } |
| } |
| } |
| } |
| } |