| { |
| "importMap": { |
| "imports": { |
| "/lib/foo.mjs": "./more/bar.mjs", |
| "./dotrelative/foo.mjs": "/lib/dot.mjs", |
| "../dotdotrelative/foo.mjs": "/lib/dotdot.mjs", |
| "/": "/lib/slash-only/", |
| "./": "/lib/dotslash-only/", |
| "/test/": "/lib/url-trailing-slash/", |
| "./test/": "/lib/url-trailing-slash-dot/", |
| "/test": "/lib/test1.mjs", |
| "../test": "/lib/test2.mjs" |
| } |
| }, |
| "importMapBaseURL": "https://example.com/app/index.html", |
| "baseURL": "https://example.com/js/app.mjs", |
| "name": "URL-like specifiers", |
| "tests": { |
| "Ordinary URL-like specifiers": { |
| "expectedResults": { |
| "https://example.com/lib/foo.mjs": "https://example.com/app/more/bar.mjs", |
| "https://///example.com/lib/foo.mjs": "https://example.com/app/more/bar.mjs", |
| "/lib/foo.mjs": "https://example.com/app/more/bar.mjs", |
| "https://example.com/app/dotrelative/foo.mjs": "https://example.com/lib/dot.mjs", |
| "../app/dotrelative/foo.mjs": "https://example.com/lib/dot.mjs", |
| "https://example.com/dotdotrelative/foo.mjs": "https://example.com/lib/dotdot.mjs", |
| "../dotdotrelative/foo.mjs": "https://example.com/lib/dotdot.mjs" |
| } |
| }, |
| "Import map entries just composed from / and .": { |
| "expectedResults": { |
| "https://example.com/": "https://example.com/lib/slash-only/", |
| "/": "https://example.com/lib/slash-only/", |
| "../": "https://example.com/lib/slash-only/", |
| "https://example.com/app/": "https://example.com/lib/dotslash-only/", |
| "/app/": "https://example.com/lib/dotslash-only/", |
| "../app/": "https://example.com/lib/dotslash-only/" |
| } |
| }, |
| "prefix-matched by keys with trailing slashes": { |
| "expectedResults": { |
| "/test/foo.mjs": "https://example.com/lib/url-trailing-slash/foo.mjs", |
| "https://example.com/app/test/foo.mjs": "https://example.com/lib/url-trailing-slash-dot/foo.mjs" |
| } |
| }, |
| "should use the last entry's address when URL-like specifiers parse to the same absolute URL": { |
| "expectedResults": { |
| "/test": "https://example.com/lib/test2.mjs" |
| } |
| }, |
| "backtracking (relative URLs)": { |
| "expectedResults": { |
| "/test/..": "https://example.com/lib/slash-only/", |
| "/test/../backtrack": "https://example.com/lib/slash-only/backtrack", |
| "/test/../../backtrack": "https://example.com/lib/slash-only/backtrack", |
| "/test/../../../backtrack": "https://example.com/lib/slash-only/backtrack" |
| } |
| }, |
| "backtracking (absolute URLs)": { |
| "expectedResults": { |
| "https://example.com/test/..": "https://example.com/lib/slash-only/", |
| "https://example.com/test/../backtrack": "https://example.com/lib/slash-only/backtrack", |
| "https://example.com/test/../../backtrack": "https://example.com/lib/slash-only/backtrack", |
| "https://example.com/test/../../../backtrack": "https://example.com/lib/slash-only/backtrack" |
| } |
| } |
| } |
| } |