{
  "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/": {}
        }
      }
    }
  }
}
