diff --git a/source b/source index 3982175f26f..fb8d429f6e0 100644 --- a/source +++ b/source @@ -3025,6 +3025,7 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
  • The Property Descriptor specification type
  • The ModuleRequest Record specification type
  • The Script Record specification type
  • +
  • The Module Record specification type
  • The Synthetic Module Record specification type
  • The Cyclic Module Record specification type
  • The Source Text Module Record specification type and its @@ -3135,6 +3136,16 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute

    Users agents that support JavaScript must also implement ECMAScript Internationalization API. JSINTL

    +

    User agents that support JavaScript must also implement the ESM Phase Imports + proposal. The following terms are defined there, and used in this specification: + JSESMPHASEIMPORTS

    + + +

    User agents that support JavaScript must also implement the Temporal proposal. The following terms are defined there, and used in this specification: JSTEMPORAL

    @@ -4549,7 +4560,9 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute @@ -9845,6 +9858,29 @@ interface DOMStringList {
  • +
  • +

    Otherwise, if value has a [[SourceTextModuleRecord]] internal slot, then:

    + +
      +
    1. If forStorage is true, then throw a + "DataCloneError" DOMException.

    2. + +
    3. Let moduleScript be value.[[SourceTextModuleRecord]]. + [[HostDefined]].

    4. + +
    5. Let rooted be moduleScript's rooted source.

    6. + +
    7. Let baseURL be moduleScript's + base URL, if rooted is true; otherwise + null.

    8. + +
    9. Set serialized to { [[Type]]: "SourceTextModule", [[SourceText]]: + value.[[SourceTextModuleRecord]].[[SourceText]], [[BaseURL]]: baseURL, + [[Rooted]]: rooted, [[AgentCluster]]: the surrounding agent's + agent cluster }.

    10. +
    +
  • +
  • Otherwise, if value has an [[ErrorData]] internal slot and value is not a platform object, then:

    @@ -10248,6 +10284,33 @@ o.myself = o;
  • +
  • +

    Otherwise, if serialized.[[Type]] is "SourceTextModule", then:

    + +
      +
    1. If targetRealm's corresponding agent cluster is not + serialized.[[AgentCluster]], then throw a + "DataCloneError" DOMException.

    2. + +
    3. Let settingsObject be targetRealm's environment settings + object.

    4. + +
    5. Let options be a the default script fetch options.

    6. + +
    7. Let baseURL be serialized.[[BaseURL]] if serialized. + [[BaseURL]] is not null; otherwise settingsObject's API base URL.

      +
    8. + +
    9. Let moduleScript be the result of creating a JavaScript module script + using serialized.[[SourceText]], settingsObject, + baseURL, options, and serialized.[[Rooted]].

    10. + +
    11. Let moduleRecord be moduleScript's record.

    12. + +
    13. Set value to moduleRecord.[[ModuleSource]].

    14. +
    +
  • +
  • Otherwise, if serialized.[[Type]] is "Map", then:

    @@ -108852,8 +108915,18 @@ document.querySelector("button").addEventListener("click", bound);

    A module script is another type of script. It has no additional items.

    + data-x="concept-script">script that has the following additional + item:

    + +
    +
    A rooted source boolean
    + +

    A boolean which, if true, means that this script was initialized from a source text that + was directly obtained from a "script" destination request for its base URL, against the realm's policy container. It is + false for dynamically created modules.

    +

    Module scripts can be classified into four types:

    @@ -109415,8 +109488,8 @@ document.querySelector("button").addEventListener("click", bound);
    1. Let script be the result of creating a JavaScript module script - using sourceText, settingsObject, baseURL, and - options.

    2. + using sourceText, settingsObject, baseURL, options, + and false.

    3. Fetch the descendants of and link script, given settingsObject, "credentialsMode, referrer policy is the empty string, and fetch priority is "auto".

      + data-x="">auto".

    4. Fetch a single module script given url, @@ -109780,6 +109853,9 @@ document.querySelector("button").addEventListener("click", bound);

    5. Let moduleScript be null.

    6. +
    7. Let rooted be true if response's URL is equal to url.

    8. +
    9. Let referrerPolicy be the result of parsing the `Referrer-Policy` header given response. REFERRERPOLICY

    10. @@ -109793,7 +109869,7 @@ document.querySelector("button").addEventListener("click", bound); data-x="">javascript-or-wasm", then set moduleScript to the result of creating a WebAssembly module script given bodyBytes, settingsObject, response's URL, and options.

      + data-x="concept-response-url">URL, options, and rooted.

    11. Otherwise:

      @@ -109805,7 +109881,7 @@ document.querySelector("button").addEventListener("click", bound); is "javascript-or-wasm", then set moduleScript to the result of creating a JavaScript module script given sourceText, settingsObject, response's URL, and options.

    12. + data-x="concept-response-url">URL, options, and rooted.

    13. If the MIME type essence of mimeType is "text/css" and moduleType is "css", then set moduleScript to @@ -109935,8 +110011,8 @@ document.querySelector("button").addEventListener("click", bound);

      To create a JavaScript module script, given a string source, an environment settings - object settings, a URL baseURL, and a script fetch - options options:

      + object settings, a URL baseURL, a script fetch + options options, and a boolean rootedSource:

      1. If scripting is disabled for @@ -109957,6 +110033,9 @@ document.querySelector("button").addEventListener("click", bound);

      2. Set script's parse error and error to rethrow to null.

      3. +
      4. Set script's rooted source boolean to rootedSource.

        +
      5. +
      6. Let result be ParseModule(source, settings's realm, @@ -109984,15 +110063,16 @@ document.querySelector("button").addEventListener("click", bound);

      To create a WebAssembly module script, - given a byte sequence bodyBytes, an environment settings - object settings, a URL baseURL, and a script fetch - options options:

      + given a byte sequence or + WebAssembly module objectbytesOrModule, an environment settings + object settings, a URL baseURL, a script fetch + options options, and a boolean rootedSource:

      1. If scripting is disabled for - settings, then set bodyBytes to the byte sequence 0x00 0x61 0x73 0x6d 0x01 - 0x00 0x00 0x00.

        + settings, then set bytesOrModule to the byte sequence 0x00 0x61 0x73 0x6d + 0x01 0x00 0x00 0x00.

        This byte sequence corresponds to an empty WebAssembly module with only the magic bytes and version number provided.

        @@ -110013,29 +110093,58 @@ document.querySelector("button").addEventListener("click", bound);
      2. Set script's parse error and error to rethrow to null.

      3. +
      4. Set script's rooted source boolean to rootedSource.

        +
      5. +
      6. -

        Let result be the result of parsing a - WebAssembly module given bodyBytes, - settings's realm, and - script.

        +

        If bytesOrModule is a byte sequence then:

        +
          +
        1. +

          Let module object be the result of calling the WebAssembly.Module + constructor given bytesOrModule.

          + +

          Cached or streaming WebAssembly compilation from the response should be substituted in the + above given that there are no observable differences for this in the module system. In + addition, any synchronous compilation Wasm binary size limits must not be applied for the above + module object creation.

          +
        2. -

          Passing script as the last parameter here ensures - result.[[HostDefined]] will be script.

          +
        3. +

          If the previous step threw an error error, then:

          + +
            +
          1. Set script's parse error to + error.

          2. + +
          3. Return script.

          4. +
          +
        4. +
      7. -

        If the previous step threw an error error, then:

        +

        Otherwise:

          -
        1. Set script's parse error to - error.

        2. +
        3. Assert: bytesOrModule.[[ModuleRecord]] is null.

        4. -
        5. Return script.

        6. +
        7. Let module object be bytesOrModule.

      8. +
      9. +

        Let record be the result of creating a WebAssembly Module Record with + module object, settings's realm execution context and + script.

        + +

        Passing script as the last parameter here ensures + record.[[HostDefined]] will be script.

        +
      10. +
      11. Set script's record to - result.

      12. + record.

      13. Return script.

      @@ -112664,6 +112773,114 @@ import "https://example.com/foo/../module2.mjs";
  • +
  • +

    If moduleRequest is a Module Record then:

    + +
      +
    1. Let moduleScript be moduleRequest.[[HostDefined]].

    2. + +
    3. +

      If moduleScript is empty, then:

      + +
        +
      1. Set moduleScript to a new module script that this algorithm + will subsequently initialize.

      2. + +
      3. Set moduleScript's settings + object to settingsObject.

      4. + +
      5. Set moduleScript's base URL to + settingsObject's API base URL.

      6. + +
      7. Set moduleScript's fetch + options to the default script fetch options.

      8. + +
      9. Set moduleScript's parse + error and error to rethrow to + null.

      10. + +
      11. Set moduleScript's rooted source boolean to false.

      12. + +
      13. Set moduleScript's record to + moduleRequest.

      14. + +
      15. Set moduleRequest.[[HostDefined]] to moduleScript.

      16. +
      + +

      This corresponds to + import(new WebAssembly.Module(bytes)), where a WebAssembly Module + initializes a new WebAssembly Module Record through + HostGetModuleSourceModuleRecord that + is not associated with an existing script. This is currently the only way to obtain a script + whose rooted source boolean is false.

      +
    4. + +
    5. Assert: moduleScript is a JavaScript module script + or a WebAssembly module script.

    6. + +
    7. Let url be moduleScript's + base URL.

    8. + +
    9. Let moduleType be "javascript-or-wasm".

    10. + +
    11. Let moduleMap be settingsObject's module map.

    12. + +
    13. Let completion be uninitialized.

    14. + +
    15. +

      If moduleMap[(url, moduleType)] does not exist, then:

      + +
        +
      1. Set moduleMap[(url, moduleType)] to moduleScript + .

      2. + +
      3. Set completion to Completion Record { [[Type]]: normal, + [[Value]]: moduleRequest, [[Target]]: empty }.

      4. +
      + +

      Otherwise:

      +
        +
      1. If moduleMap[(url, moduleType)] is " + fetching", wait in parallel until that entry's value changes, then + queue a task on the networking task source to proceed with running + the following steps.

      2. + +
      3. Let registryModule be moduleMap[(url, + moduleType)].

      4. + +
      5. +

        If registryModule is not null, moduleScript's rooted + source is true, and moduleRequest.ModuleSourcesEqual( + registryModule) is true then:

        + +
          +
        1. Set completion to Completion Record { [[Type]]: normal, + [[Value]]: registryModule, [[Target]]: empty }.

        2. +
        +
      6. + +
      7. +

        Otherwise:

        + +
          +
        1. +

          Set completion to Completion Record { [[Type]]: normal, + [[Value]]: moduleRequest, [[Target]]: empty }.

          + +

          When a different rooted module at the same module key already exists, we + load the module that was requested, but do not insert it into the registry, retaining the + original reference. Unrooted sources are effectively their own keys.

          +
        2. +
        +
      8. +
      +
    16. + +
    17. Perform FinishLoadingImportedModule(referrer, + moduleRequest, payload, completion).

    18. +
    +
  • +
  • Let referencingScript be null.

  • Let originalFetchOptions be the default script fetch @@ -121745,6 +121962,12 @@ function showLogout() {

    var worker = new Worker('helper.mjs', { type: "module" });
    +

    Alternatively a module script Module Source Object + object can be provided directly:

    + +
    import source MyModule from './module.js';
    +var worker = new Worker(MyModule);
    +  
    Communicating with a dedicated worker
    @@ -122202,12 +122425,16 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope

    Processing model

    When a user agent is to run a worker for a script with Worker or - SharedWorker object worker, URL url, - environment settings object outside settings, MessagePort - outside port, and a WorkerOptions dictionary options, it must - run the following steps.

    + SharedWorker object worker, URL or module record + urlOrModuleRecord, environment settings object outside settings, + MessagePort outside port, and a WorkerOptions dictionary + options, it must run the following steps.

      +
    1. Assert: If urlOrModuleRecord is a URL, then + options's type member is not "classic" +

    2. +
    3. Let is shared be true if worker is a SharedWorker object, and false otherwise.

    4. @@ -122260,9 +122487,11 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope outside settings's origin.

      +
    5. Assert: urlOrModuleRecord is a URL.

    6. +
    7. Set worker global scope's constructor url to - url.

    8. + urlOrModuleRecord.

    9. Set worker global scope's type to the value of options's @@ -122279,10 +122508,15 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope shared is true, and "worker" otherwise.

    10. -

      Obtain script by switching on the value of options's type member:

      +

      If urlOrModuleRecord is a URL, then obtain script by + switching on the value of options's type member:

      +
      "auto"
      +
      Fetch a classic worker script given url, outside + settings, destination, inside settings, and with + onComplete and performFetch as defined below.
      +
      "classic"
      Fetch a classic worker script given url, outside settings, destination, inside settings, and with @@ -122295,7 +122529,7 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope performFetch as defined below.
      -

      In both cases, let performFetch be the following In all cases, let performFetch be the following perform the fetch hook given request, isTopLevel and processCustomFetchResponse:

      @@ -122380,127 +122614,249 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope
    -

    In both cases, let onComplete given script be the following steps:

    +

    In all cases, let onComplete given script be the following step:

      -
    1. If script is null or if script's error to rethrow is non-null, then:

      +
    2. Initialize a worker given worker, outside port, + is shared, script, inside settings, and worker global scope + .

    3. +
    +
  • -
      -
    1. Queue a global task on the DOM manipulation task source given - worker's relevant global object to fire an event named error - at worker.

    2. +
    3. +

      Otherwise:

      -
    4. Run the environment discarding steps - for inside settings.

    5. +
        +
      1. Let moduleScript be urlOrModuleRecord.[[HostDefined]].

      2. -
      3. Abort these steps.

      4. -
      +
    6. Let rooted source be moduleScript's rooted source if + moduleScript is not empty; otherwise, false.

    7. -
    8. Associate worker with worker global scope.

    9. +
    10. Set worker global scope's url + to moduleScript's baseURL if + rooted source is true; otherwise, null.

    11. -
    12. Let inside port be a new MessagePort object in - inside settings's realm.

    13. +
    14. Set workerGlobalScope's policy container to a clone of outside settings's + policy container.

    15. + +
    16. Let options be a script fetch options whose cryptographic nonce is the empty string, integrity metadata is the empty string, + parser metadata is "not-parser-inserted", credentials mode is the value of the + credentials member of options, referrer policy is the empty + string, and fetch priority is + "auto".

    17. + +
    18. Let baseURL be moduleScript's baseURL if moduleScript is not empty; + otherwise, outside settings's API base URL.

    19. -

      If is shared is false, then:

      +

      If urlOrModuleRecord is a Source Text Module Record then:

        -
      1. Set inside port's message event target to worker global - scope.

      2. +
      3. Let sourceText be urlOrModuleRecord.[[SourceText]].

      4. -
      5. Set worker global scope's inside port to inside - port.

      6. +
      7. Let target module to the result of creating a JavaScript module script + with sourceText, inside settings, baseURL, + options and rooted source.

    20. +
    21. +

      Otherwise:

      -
    22. Entangle outside port and inside port.

    23. +
        +
      1. Assert: urlOrModuleRecord is a WebAssembly Module + Record.

      2. -
      3. Create a new WorkerLocation object and associate it with worker global - scope.

        +
      4. Let wasmModule be urlOrModuleRecord.[[ModuleSource]].

      5. -
      6. -

        Closing orphan workers: Start monitoring the worker such that no sooner than - it stops being a protected worker, and no later than it stops being a - permissible worker, worker global scope's closing flag is set to true.

        -
      7. +
      8. Let bodyBytes be wasmModule.[[Bytes]].

      9. -
      10. -

        Suspending workers: Start monitoring the worker, such that whenever - worker global scope's closing - flag is false and the worker is a suspendable worker, the user agent suspends - execution of script in that worker until such time as either the closing flag switches to true or the worker stops - being a suspendable worker.

        +
      11. Let target module to the result of creating a WebAssembly module + script with bodyBytes, inside settings, baseURL, + options and rooted source.

      12. +
      -
    24. Set inside settings's execution ready flag.

    25. +
    26. If the Run CSP initialization for a global object algorithm returns + "Blocked" when executed upon worker global scope, throw a new + DOMException and run fail worker initialization with worker + , and inside settings and abort these steps. CSP

    27. + +
    28. Set worker global scope's cross-origin isolated + capability to true if agent's agent cluster's cross-origin isolation mode is "concrete" and urlOrModuleRecord's + rooted source property is true.

    29. + +
    30. If owner's cross-origin isolated + capability is false, then set worker global scope's cross-origin isolated + capability to false.

    31. -

      If script is a classic script, then run the classic script script. Otherwise, it is a module - script; run the module script - script.

      - -

      In addition to the usual possibilities of returning a value or failing due to - an exception, this could be prematurely aborted by - the terminate a worker algorithm defined below.

      +

      Fetch the descendants + of and link target module given inside settings, + inside settings, "script", and with onComplete + given module defined as the following step:

      + +
        +
      1. Initialize a worker given worker, outside port, + false, module, insidesettings, and worker global scope.

        +
      2. +
    32. +
    + + -
  • Enable outside port's port message queue.

  • +
    -
  • If is shared is false, enable the port message queue - of the worker's implicit port.

  • +

    When a user agent is to fail worker initialization for a script with + Worker or SharedWorker object worker, and environment + settings object inside settings , it must run the following steps.

    -
  • If is shared is true, then queue a global task on DOM - manipulation task source given worker global scope to fire an event named connect at worker global scope, using - MessageEvent, with the data attribute - initialized to the empty string, the ports attribute - initialized to a new frozen array containing inside port, and the source attribute initialized to inside - port.

  • +
      +
    1. Queue a global task on the DOM manipulation task source given + worker's relevant global object to fire an event named error + at worker.

    2. -
    3. Enable the client message queue of the - ServiceWorkerContainer object whose associated service worker client is - worker global scope's relevant settings object.

    4. +
    5. Run the environment discarding steps + for inside settings.

    6. +
    -
  • -

    Event loop: Run the responsible - event loop specified by inside settings until it is destroyed.

    +
    -

    The handling of events or the execution of callbacks by tasks run by the event loop might get prematurely aborted by the terminate a - worker algorithm defined below.

    +

    When a user agent is to initialize a worker for a script with Worker + or SharedWorker object worker, MessagePort + outside port, boolean is shared, module script or classic + script script, environment settings object inside settings + , and a global object worker global scope, it must run the following + steps.

    -

    The worker processing model remains on this step until the event loop is - destroyed, which happens after the closing - flag is set to true, as described in the event loop processing model.

    -
  • +
      +
    1. +

      If script is null or if script's error to rethrow is non-null, then:

      -
    2. -

      Clear the worker global scope's - map of active timers.

      -
    3. +
        +
      1. Fail worker initialization given worker and inside settings +

      2. -
      3. -

        Disentangle all the ports in the list of the worker's ports.

        -
      4. +
      5. Abort these steps.

      6. +
      + -
    4. -

      Empty worker global scope's owner set.

      -
    5. +
    6. Associate worker with worker global scope.

    7. + +
    8. Let inside port be a new MessagePort object in + inside settings's realm.

    9. + +
    10. +

      If is shared is false, then:

      + +
        +
      1. Set inside port's message event target to worker global + scope.

      2. + +
      3. Set worker global scope's inside port to inside + port.

    11. + +
    12. Entangle outside port and inside port.

    13. + +
    14. Create a new WorkerLocation object and associate it with worker global + scope.

    15. + +
    16. +

      Closing orphan workers: Start monitoring the worker such that no sooner than + it stops being a protected worker, and no later than it stops being a + permissible worker, worker global scope's closing flag is set to true.

      +
    17. + +
    18. +

      Suspending workers: Start monitoring the worker, such that whenever + worker global scope's closing + flag is false and the worker is a suspendable worker, the user agent suspends + execution of script in that worker until such time as either the closing flag switches to true or the worker stops + being a suspendable worker.

      +
    19. + +
    20. Set inside settings's execution ready flag.

    21. + +
    22. +

      If script is a classic script, then run the classic script script. Otherwise, it is a module + script; run the module script + script.

      + +

      In addition to the usual possibilities of returning a value or failing due to + an exception, this could be prematurely aborted by + the terminate a worker algorithm defined below.

      +
    23. + +
    24. Enable outside port's port message queue.

    25. + +
    26. If is shared is false, enable the port message queue + of the worker's implicit port.

    27. + +
    28. If is shared is true, then queue a global task on DOM + manipulation task source given worker global scope to fire an event named connect at worker global scope, using + MessageEvent, with the data attribute + initialized to the empty string, the ports attribute + initialized to a new frozen array containing inside port, and the source attribute initialized to inside + port.

    29. + +
    30. Enable the client message queue of the + ServiceWorkerContainer object whose associated service worker client is + worker global scope's relevant settings object.

    31. + +
    32. +

      Event loop: Run the responsible + event loop specified by inside settings until it is destroyed.

      + +

      The handling of events or the execution of callbacks by tasks run by the event loop might get prematurely aborted by the terminate a + worker algorithm defined below.

      + +

      The worker processing model remains on this step until the event loop is + destroyed, which happens after the closing + flag is set to true, as described in the event loop processing model.

      +
    33. + +
    34. +

      Clear the worker global scope's + map of active timers.

      +
    35. + +
    36. +

      Disentangle all the ports in the list of the worker's ports.

      +
    37. + +
    38. +

      Empty worker global scope's owner set.

      +

    @@ -122662,7 +123018,7 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope
    [Exposed=(Window,DedicatedWorker,SharedWorker)]
     interface Worker : EventTarget {
    -  constructor((TrustedScriptURL or USVString) scriptURL, optional WorkerOptions options = {});
    +  constructor((TrustedScriptURL or USVString) urlOrModule, optional WorkerOptions options = {});
     
       undefined terminate();
     
    @@ -122671,26 +123027,28 @@ interface Worker : EventTarget {
     };
     
     dictionary WorkerOptions {
    -  WorkerType type = "classic";
    +  WorkerType type = "auto";
       RequestCredentials credentials = "same-origin"; // credentials is only used if type is "module"
       DOMString name = "";
     };
     
    -enum WorkerType { "classic", "module" };
    +enum WorkerType { "auto", "classic", "module" };
     
     Worker includes AbstractWorker;
     Worker includes MessageEventTarget;
    -
    worker = new Worker(scriptURL [, options ])
    -

    Returns a new Worker object. scriptURL will be fetched and - executed in the background, creating a new global environment for which worker - represents the communication channel. options can be used to define the worker = new Worker(urlOrModule [, options ]) +

    Returns a new Worker object. urlOrModule will be loaded in the + background, creating a new global environment for which worker represents the + communication channel. options can be used to define the name of that global environment via the name option, primarily for debugging purposes. It can also ensure this new - global environment supports JavaScript modules (specify type: "module"), - and if that is specified, can also be used to specify how scriptURL is fetched through - the credentials option.

    + data-x="">name option, primarily for debugging purposes. It can also be used to specify + that urlOrModule is to be loaded as a JavaScript module by setting + type: "module", and if that is specified, can also be used to specify how urlOrModule + and its dependencies are fetched through the credentials option. + When urlOrModule is a Module Source Object, type: "module" + is the default and only setting supported.

    worker.terminate()
    Aborts worker's associated global environment.
    @@ -122739,19 +123097,61 @@ enum WorkerType { "classic", "module" };
    -

    When the Worker(scriptURL, +

    When the Worker(urlOrModule, options) constructor is invoked, the user agent must run the following steps:

      +
    1. Let outside settings be the current settings object.

    2. + +
    3. +

      If urlOrModule is an object, then:

      + +
        +
      1. Let module be the result of invoking GetModuleSourceModuleRecord with + urlOrModule.

      2. + +
      3. +

        If module is not ~not-a-module~, then:

        + +
          +
        1. Assert: module is either a Source Text Module Record + or a WebAssembly Module Record.

        2. + +
        3. Let worker be a new Worker object.

        4. + +
        5. Let outside port be a new MessagePort in + outside settings's realm.

          +
        6. + +
        7. Associate the outside port with worker.

        8. + +
        9. If options's type member is "classic + ", then throw a TypeError exception.

          +
        10. + +
        11. +

          Run this step in parallel:

          + +
            +
          1. Run a worker given worker, module, + outside settings, outside port, and options.

          2. +
          +
        12. + +
        13. Return worker.

        14. +
        +
      4. +
      +
    4. +
    5. Let compliantScriptURL be the result of invoking the Get Trusted Type compliant string algorithm with TrustedScriptURL, this's relevant global - object, scriptURL, "Worker constructor", and ", urlOrModule, "Worker constructor", and "script".

    6. -
    7. Let outside settings be the current settings object.

      -
    8. Let worker URL be the result of encoding-parsing a URL given compliantScriptURL, relative to outside settings.

      @@ -146551,6 +146951,9 @@ INSERT INTERFACES HERE
      [JSDYNAMICCODEBRANDCHECKS]
      Dynamic code brand checks. Ecma International.
      +
      [JSESMPHASEIMPORTS]
      +
      ESM Phase Imports. Ecma International.
      +
      [JSINTL]
      ECMAScript Internationalization API Specification. Ecma International.