diff --git a/spec.html b/spec.html index 4b3f04c202..540e776fe7 100644 --- a/spec.html +++ b/spec.html @@ -18754,6 +18754,7 @@
A ModuleRequest Record represents the request to import a module up to a given phase. It consists of the following fields:
++ Field Name + | ++ Value Type + | ++ Meaning + | +
---|---|---|
+ [[Specifier]] + | ++ String + | ++ The module specifier + | +
+ [[Phase]] + | ++ ~source~ or ~evaluation~ + | ++ The target import phase + | +
A ModuleSource Record represents the request to import a module up to a given phase. It consists of the following fields:
++ Field Name + | ++ Value Type + | ++ Meaning + | +
---|---|---|
+ [[SourceClassName]] + | ++ String + | ++ The unique source class name string used to represent this module source. Source Text Module Records are usually represented by the *"ModuleSource"* class. + | +
A Module Record encapsulates structural information about the imports and exports of a single module. This information is used to link the imports and exports of sets of connected modules. A Module Record includes four fields that are only used when evaluating a module.
@@ -26024,6 +26140,17 @@It returns either a normal completion completion for the ModuleSource Object corresponding to this source Module Record's source phase (
When called multiple times on the same Module Record, if GetModuleSource() returns a normal completion it must always return a normal completion containing the same object.
+The returned object should be an instance of a subclass of %AbstractModuleSource%, and it must have an internal slot [[ModuleSourceRecord]].
+Module Record's that do not have a source represemtation must always return a throw completion containing a *ReferenceError*.
+Source Text Module Record provides a GetModuleSource implementation with an abrupt completion to provide a standard reference error that a source phase import is not available.
+An implementation of HostLoadImportedModule must conform to the following requirements:
The actual process performed is host-defined, but typically consists of performing whatever I/O operations are necessary to load the appropriate Module Record. Multiple different (_referrer_, _specifier_) pairs may map to the same Module Record instance. The actual mapping semantics is host-defined but typically a normalization process is applied to _specifier_ as part of the mapping process. A typical normalization process would include actions such as expansion of relative and abbreviated path specifiers.
+The actual process performed is host-defined, but typically consists of performing whatever I/O operations are necessary to load the appropriate Module Record. Multiple different (_referrer_, _moduleRequest_.[[Specifier]]) pairs may map to the same Module Record instance. The actual mapping semantics is host-defined but typically a normalization process is applied to _specifier_ as part of the mapping process. A typical normalization process would include actions such as expansion of relative and abbreviated path specifiers.
+ +Module Source Objects represent modules in their source import phase, which are not linked, instantiated or executed.
+All Module Source Objects should have a prototype of %AbstractModuleSource%.prototype and must define a [[ModuleSourceRecord]] internal slot.
+Hosts may define their own Module Source subclasses for custom module record types.
+ +The %AbstractModuleSource% constructor:
+This function performs the following steps when called:
+The *"length"* property of this function is *+0*𝔽.
+The %AbstractModuleSource% intrinsic object:
+The initial value of %AbstractModuleSource%`.prototype` is the %AbstractModuleSource% prototype object.
+This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.
+The %AbstractModuleSource% prototype object:
+The initial value of %AbstractModuleSource%`.prototype.constructor` is %AbstractModuleSource%.
+%AbstractModuleSource%.prototype `[@@toStringTag]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:
+This property has the attributes { [[Enumerable]]: *false*, [[Configurable]]: *true* }.
+The initial value of the *"name"* property of this function is *"get [Symbol.toStringTag]"*.
+A Module Namespace Object is a module namespace exotic object that provides runtime property-based access to a module's exported bindings. There is no constructor function for Module Namespace Objects. Instead, such an object is created for each module that is imported by an |ImportDeclaration| that contains a |NameSpaceImport|.
@@ -48976,6 +49226,7 @@[[HostDefined]] on Realm Records: See
[[HostDefined]] on Script Records: See
[[HostDefined]] on Module Records: See
[[HostDefined]] on ModuleSource Records: See
[[HostDefined]] on JobCallback Records: See
[[HostSynchronizesWith]] on Candidate Executions: See
[[IsHTMLDDA]]: See