diff --git a/source b/source index 2b9cb4f0107..c43c3b292ef 100644 --- a/source +++ b/source @@ -87810,7 +87810,38 @@ document.querySelector("button").addEventListener("click", bound); URL">absolute URLs to values that are either a module script, null (used to represent failed fetches), or a placeholder value "fetching". Module maps are used to ensure that imported JavaScript modules are - only fetched, parsed, and evaluated once per Document or worker.

+ only fetched, parsed, and evaluated once per Document or worker.

+ +
+

Since module maps are keyed by URL, the following code will + create three separate entries in the module map, since it results in three different + URLs:

+ +
import "https://example.com/module.js";
+import "https://example.com/module.js#map-buster";
+import "https://example.com/module.js?debug=true";
+ +

That is, URL queries and fragments can be varied to create distinct entries in the + module map; they are not ignored. Thus, three separate fetches and three separate + module evaluations will be performed.

+ +

In contrast, the following code would only create a single entry in the module + map, since after applying the URL parser to these inputs, the resulting URL records are equal:

+ +
import "https://example.com/module2.js";
+import "https:example.com/module2.js";
+import "https://///example.com\\module2.js";
+import "https://example.com/foo/../module2.js";
+ +

So in this second example, only one fetch and one module evaluation will occur.

+ +

Note that this behavior is the same as how shared workers are keyed by their parsed constructor url.

+

To resolve a module specifier given a module script script and a string specifier, perform the following steps. It will return either an