{
  "name": "Absolute URL addresses",
  "tests": {
    "should only accept absolute URL addresses with fetch schemes": {
      "importMap": {
        "imports": {
          "about": "about:good",
          "blob": "blob:good",
          "data": "data:good",
          "file": "file:///good",
          "filesystem": "filesystem:http://example.com/good/",
          "http": "http://good/",
          "https": "https://good/",
          "ftp": "ftp://good/",
          "import": "import:bad",
          "mailto": "mailto:bad",
          "javascript": "javascript:bad",
          "wss": "wss:bad"
        }
      },
      "importMapBaseURL": "https://base.example/path1/path2/path3",
      "expectedParsedImportMap": {
        "imports": {
          "about": "about:good",
          "blob": "blob:good",
          "data": "data:good",
          "file": "file:///good",
          "filesystem": "filesystem:http://example.com/good/",
          "http": "http://good/",
          "https": "https://good/",
          "ftp": "ftp://good/",
          "import": "import:bad",
          "javascript": "javascript:bad",
          "mailto": "mailto:bad",
          "wss": "wss://bad/"
        },
        "scopes": {}
      }
    },
    "should parse absolute URLs, ignoring unparseable ones": {
      "importMap": {
        "imports": {
          "unparseable2": "https://example.com:demo",
          "unparseable3": "http://[www.example.com]/",
          "invalidButParseable1": "https:example.org",
          "invalidButParseable2": "https://///example.com///",
          "prettyNormal": "https://example.net",
          "percentDecoding": "https://ex%41mple.com/"
        }
      },
      "importMapBaseURL": "https://base.example/path1/path2/path3",
      "expectedParsedImportMap": {
        "imports": {
          "unparseable2": null,
          "unparseable3": null,
          "invalidButParseable1": "https://example.org/",
          "invalidButParseable2": "https://example.com///",
          "prettyNormal": "https://example.net/",
          "percentDecoding": "https://example.com/"
        },
        "scopes": {}
      }
    }
  }
}
