blob: 4b2f1eeada92efc78048aabcf91f4fc886b1ace6 [file] [log] [blame]
{
"importMapBaseURL": "https://base.example/path1/path2/path3",
"tests": {
"Relative URL scope keys should work with no prefix": {
"importMap": {
"scopes": {
"foo": {}
}
},
"expectedParsedImportMap": {
"imports": {},
"scopes": {
"https://base.example/path1/path2/foo": {}
}
}
},
"Relative URL scope keys should work with ./, ../, and / prefixes": {
"importMap": {
"scopes": {
"./foo": {},
"../foo": {},
"/foo": {}
}
},
"expectedParsedImportMap": {
"imports": {},
"scopes": {
"https://base.example/path1/path2/foo": {},
"https://base.example/path1/foo": {},
"https://base.example/foo": {}
}
}
},
"Absolute URL scope keys should ignore relative URL scope keys when the base URL is a data: URL": {
"importMap": {
"scopes": {
"./foo": {},
"../foo": {},
"/foo": {}
}
},
"importMapBaseURL": "data:text/html,test",
"expectedParsedImportMap": {
"imports": {},
"scopes": {}
}
},
"Relative URL scope keys should work with ./, ../, or / with no suffix": {
"importMap": {
"scopes": {
"./": {},
"../": {},
"/": {}
}
},
"expectedParsedImportMap": {
"imports": {},
"scopes": {
"https://base.example/path1/path2/": {},
"https://base.example/path1/": {},
"https://base.example/": {}
}
}
},
"Relative URL scope keys should work with /s, ?s, and #s": {
"importMap": {
"scopes": {
"foo/bar?baz#qux": {}
}
},
"expectedParsedImportMap": {
"imports": {},
"scopes": {
"https://base.example/path1/path2/foo/bar?baz#qux": {}
}
}
},
"Relative URL scope keys should work with an empty string scope key": {
"importMap": {
"scopes": {
"": {}
}
},
"expectedParsedImportMap": {
"imports": {},
"scopes": {
"https://base.example/path1/path2/path3": {}
}
}
},
"Relative URL scope keys should work with / suffixes": {
"importMap": {
"scopes": {
"foo/": {},
"./foo/": {},
"../foo/": {},
"/foo/": {},
"/foo//": {}
}
},
"expectedParsedImportMap": {
"imports": {},
"scopes": {
"https://base.example/path1/path2/foo/": {},
"https://base.example/path1/foo/": {},
"https://base.example/foo/": {},
"https://base.example/foo//": {}
}
}
},
"Relative URL scope keys should deduplicate based on URL parsing rules": {
"importMap": {
"scopes": {
"foo/\\": {
"1": "./a"
},
"foo//": {
"2": "./b"
},
"foo\\\\": {
"3": "./c"
}
}
},
"expectedParsedImportMap": {
"imports": {},
"scopes": {
"https://base.example/path1/path2/foo//": {
"3": "https://base.example/path1/path2/c"
}
}
}
},
"Absolute URL scope keys should accept all absolute URL scope keys, with or without fetch schemes": {
"importMap": {
"scopes": {
"about:good": {},
"blob:good": {},
"data:good": {},
"file:///good": {},
"filesystem:http://example.com/good/": {},
"http://good/": {},
"https://good/": {},
"ftp://good/": {},
"import:bad": {},
"mailto:bad": {},
"javascript:bad": {},
"wss:ba": {}
}
},
"expectedParsedImportMap": {
"imports": {},
"scopes": {
"about:good": {},
"blob:good": {},
"data:good": {},
"file:///good": {},
"filesystem:http://example.com/good/": {},
"http://good/": {},
"https://good/": {},
"ftp://good/": {},
"import:bad": {},
"mailto:bad": {},
"javascript:bad": {},
"wss://ba/": {}
}
}
},
"Absolute URL scope keys should parse absolute URL scope keys, ignoring unparseable ones": {
"importMap": {
"scopes": {
"https://example.com:demo": {},
"http://[www.example.com]/": {},
"https:example.org": {},
"https://///example.com///": {},
"https://example.net": {},
"https://ex%41mple.com/foo/": {}
}
},
"expectedParsedImportMap": {
"imports": {},
"scopes": {
"https://base.example/path1/path2/example.org": {},
"https://example.com///": {},
"https://example.net/": {},
"https://example.com/foo/": {}
}
}
}
}
}