diff --git a/source b/source index e18b7bc37e8..819dc10c14c 100644 --- a/source +++ b/source @@ -2395,6 +2395,19 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
The following terms are defined in the WHATWG Infra standard:
Let outputTransferList be a new empty List.
Let outputTransferList be a new empty List.
For each object transferable in transferList: @@ -7904,7 +7917,7 @@ https://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E.
Let output be a new Map object in targetRealm whose [[MapData]] - internal slot value is a new empty List.
Set deepClone to true.
Let output be a new Set object in targetRealm whose [[SetData]] - internal slot value is a new empty List.
Set deepClone to true.
Let inputList the value of input's [[MapData]] internal slot.
Let copiedList be a new empty List. +
Let copiedList be a new empty List.
Repeat for each Record { [[Key]], [[Value]] } entry that is an @@ -8050,7 +8063,8 @@ https://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E.
Otherwise:
Let enumerableKeys be a new empty List.
Let enumerableKeys be a new empty List.
For each key in ! input.[[OwnPropertyKeys]]():
@@ -78221,7 +78235,7 @@ console.assert(iframeWindow.frameElement === null);Let keys be a new empty List.
Let keys be a new empty List.
Repeat for each e that is an element of @@ -79243,7 +79257,7 @@ callback FrameRequestCallback = void (DOMHighResTimeStampWindow]] internal slot of this.
Let keys be a new empty List.
Let keys be a new empty List.
Let maxProperties be the number of document-tree child browsing contexts of W.
In the above algorithm, a module script script's uninstantiated - inclusive descendant module scripts is a set of module - scripts determined as follows:
+ inclusive descendant module scripts is a set of module scripts determined as follows:Let module map be script's settings object's +
Let moduleMap be script's settings object's module map.
Let stack be a list containing script.
Let stack be the stack « script ».
Let inclusive descendants be an empty set.
Let inclusive descendants be an empty set.
While stack is not empty:
+While stack is not empty:
Let current be the last element of stack. Remove it from +
Let current the result of popping from stack.
If current is not in inclusive descendants and is not in - stack, then:
+If inclusive descendants and stack both do not contain current, then:
Add current to inclusive descendants.
Append current to + inclusive descendants.
Let child specifiers be the value of current's module record's [[RequestedModules]] internal slot.
Let child URLs be the set obtained by calling resolve a module - specifier once for each element of child specifiers, given - current and that element. Omit any failures.
Let child URLs be the list obtained by calling + resolve a module specifier once for each item of child specifiers, + given current and that item. Omit any failures.
Let child modules be the set obtained by looking up each value in - module map whose key is given by an element of child URLs.
Let child modules be the list obtained by getting each value in moduleMap whose key is given by an + item of child URLs.
For each s in child modules that is not in inclusive - descendants, add s to stack.
For each s in child modules + that is not contained by inclusive + descendants, push s onto + stack.
Return a list containing all elements of inclusive descendants whose instantiation state is " Return a set containing all items of inclusive descendants whose
+ instantiation state is "uninstantiated
".
The above algorithm gives a depth-first search of the module dependency graph. The main interesting part is in how the "edges" of this graph are determined. The actual search implementation is not important; any other technique for exploring the graph will suffice, given - that the output is an unordered set.
+ that the output is a set only used for membership testing and whose order is thus not + important.To fetch a single module script, given a url, a fetch client settings object, a destination, a cryptographic nonce, a parser @@ -86821,17 +86840,18 @@ interface NavigatorOnLine { success).
Let module map be module map settings object's Let moduleMap be module map settings object's module map.
If module map contains an entry with key url whose value is "fetching
", wait (in parallel) until that entry's value changes,
- then proceed to the next step.
If moduleMap[url] is "fetching
", wait
+ (in parallel) until that entry's value changes, then proceed to the next
+ step.
If module map contains an entry with key url, asynchronously - complete this algorithm with that entry's value, and abort these steps.
If moduleMap[url] exists, + asynchronously complete this algorithm with moduleMap[url], and abort these + steps.
Create an entry in module map with key url and value " Set moduleMap[url] to " Let request be a new request whose
@@ -86864,9 +86884,9 @@ interface NavigatorOnLine {
If any of the following conditions are met, set the value of the entry in module
- map whose key is url to null, asynchronously complete this algorithm with
- null, and abort these steps: If any of the following conditions are met, set
+ moduleMap[url] to null, asynchronously complete this algorithm with null,
+ and abort these steps: response's type is " Set the value of the entry in module map whose key is url to
- module script, and asynchronously complete this algorithm with module
- script. Set moduleMap[url] to module
+ script, and asynchronously complete this algorithm with module script. It is intentional that the module map is keyed by the request URL, whereas the NavigatorOnLine {
Let record be module script's module record. If record.[[RequestedModules]] is empty, asynchronously complete this
- algorithm with module script. If record.[[RequestedModules]] is empty,
+ asynchronously complete this algorithm with module script. Let urls be a new empty list. Let urls be a new empty list. For each string requested of record.[[RequestedModules]], For each string requested of
+ record.[[RequestedModules]], Let url be the result of resolving
@@ -86942,19 +86962,20 @@ interface NavigatorOnLine {
Otherwise, if url is not in ancestor list, add url to
- urls. Otherwise, if ancestor list does not contain url, append
+ url to urls.fetching
".
NavigatorOnLine {
nonce, parser state, and credentials mode.
For each url in urls, perform the internal module script tree
- fetching procedure given url, module script's credentials mode, module
- script's cryptographic nonce,
- module script's parser state,
- destination, module script's settings object, module
- script's settings object, ancestor list, module
+ For each url in urls, perform the
+ internal module script tree fetching procedure given url, module
+ script's credentials mode,
+ module script's cryptographic
+ nonce, module script's parser
+ state, destination, module script's settings object,
+ module script's settings object, ancestor list, module
script's base URL, and with the
top-level module fetch flag unset. If the caller of this algorithm specified custom
perform the fetch steps, pass those along
@@ -87881,11 +87902,11 @@ document.querySelector("button").addEventListener("click", bound);
scripts versus module scripts, since both of them use
the A module map is a map of absolute URLs to values that are either a
- module script, null (used to represent failed fetches), or a placeholder value " A module map is a map of absolute URLs to values that are either a module script, null (used to
+ represent failed fetches), or a placeholder value " To resolve a module specifier given a module script script
and a string specifier, perform the following steps. It will return either an
@@ -87967,16 +87988,17 @@ document.querySelector("button").addEventListener("click", bound);
Let referencing module script be
referencingModule.[[HostDefined]]. Let module map be referencing module script's settings
+ Let moduleMap be referencing module script's settings
object's module map. Let url be the result of resolving a
module specifier given referencing module script and specifier. If
- the result is failure, throw a Let resolved module script be the value of the entry in module map
- whose key is url. If no such entry exists, or if the value is null or " Let resolved module script be moduleMap[url]. If no such
+ entry exists, or if resolved module script is null or
+ " If resolved module script's script
element.fetching
". Module maps are used to ensure that
- imported JavaScript modules are only fetched, parsed, and evaluated once per Document
- or worker.fetching
". Module maps are used to ensure that imported JavaScript modules are
+ only fetched, parsed, and evaluated once per Document
or worker.TypeError
exception and abort these steps.TypeError
exception and abort these
+ steps.fetching
", throw a TypeError
exception and abort these
+ fetching
", then throw a TypeError
exception and abort these
steps.