From 6a188c008e8798cef68035369bf46e76081d82b4 Mon Sep 17 00:00:00 2001 From: Guy Bedford Date: Thu, 9 May 2024 11:21:33 -0700 Subject: [PATCH] always call host hook for objects, separate metadata methods --- README.md | 28 +++++------- build/index.html | 112 ++++++++++++++++++++++++++++------------------- spec.emu | 90 ++++++++++++++++++++++++------------- 3 files changed, 138 insertions(+), 92 deletions(-) diff --git a/README.md b/README.md index 6458dad..c665321 100644 --- a/README.md +++ b/README.md @@ -123,20 +123,9 @@ These helper methods are designed to allow for determining the static public exp imports of a module, but do not give information about the internal module identifiers or dynamic import. -### `ModuleSource.prototype.metadata()` +### `AbstractModuleSource.prototype.imports()` -Returns metadata about the modular structure of the module: - -```ts -interface ModuleMetadata { - imports: Import[], - hasDynamicImport: bool, - hasImportMeta: bool, - hasTopLevelAwait: bool, -} -``` - -where `Import` is deifned by: +Returns a list of the imports of the module of the form `Import[]` defined by: ```ts interface Import { @@ -145,10 +134,17 @@ interface Import { } ``` -* `hasDynamicImport` is *true* if and only if there is usage of dynamic import. -* `hasImportMeta` is *true* if and only if there is usage of import meta. -* `hasTopLevelAwait` is *true* if and only if there is usage of top-level await in the module. +### `AbstractModuleSource.prototype.hasDynamicImport` + +A boolean property indicating if the module may call dynamic import. + +### `AbstractModuleSource.prototype.hasImportMeta` + +A boolean property indicating if the module accesses the module `import.meta`. + +### `AbstractModuleSource.prototype.hasTopLevelAwait` +A boolean property indicating if the module contains use of top-level await. ### Dynamic Import diff --git a/build/index.html b/build/index.html index f6b31fb..3c62d30 100644 --- a/build/index.html +++ b/build/index.html @@ -1423,7 +1423,7 @@ }); let sdoMap = JSON.parse(`{"prod-uZn3IQfi":{"Evaluation":{"clause":"13.3.10.1","ids":["prod-4N8EtSSM"]}},"prod-WqUZkrPx":{"Evaluation":{"clause":"13.3.10.1","ids":["prod-E9lFAjcF"]}}}`); -let biblio = JSON.parse(`{"refsByClause":{"sec-well-known-intrinsic-objects":["_ref_0","_ref_1","_ref_2"],"sec-ContinueDynamicImport":["_ref_3","_ref_13"],"sec-abstract-module-records":["_ref_4","_ref_5","_ref_6","_ref_14","_ref_15","_ref_16","_ref_17","_ref_18","_ref_19","_ref_20","_ref_21","_ref_22","_ref_23","_ref_24","_ref_25","_ref_26"],"sec-cyclic-module-records":["_ref_7","_ref_8","_ref_27","_ref_28","_ref_29","_ref_30","_ref_31","_ref_32","_ref_33"],"sec-import-call-runtime-semantics-evaluation":["_ref_9","_ref_10"],"sec-evaluate-import-call":["_ref_11","_ref_12"],"sec-modulegetmetadata":["_ref_34"],"sec-source-text-module-record-getmodulesource":["_ref_35"],"sec-HostGetModuleSourceName":["_ref_36","_ref_37"],"sec-HostGetModuleSourceRecord":["_ref_38","_ref_39","_ref_40","_ref_41"],"sec-module-source-objects":["_ref_42","_ref_43"],"sec-%abstractmodulesource%.prototype":["_ref_44"],"sec-get-%abstractmodulesource%.prototype.@@tostringtag":["_ref_45","_ref_46","_ref_47","_ref_48"],"sec-%abstractmodulesource%.prototype.metadata":["_ref_49","_ref_50"],"sec-properties-of-the-%modulesource%-prototype-object":["_ref_51"],"sec-properties-of-modulesource-instances":["_ref_52"],"sec-getmodulesourcesourcetextmodulerecord":["_ref_53"],"sec-host-hooks-summary":["_ref_54","_ref_55"],"sec-parsemodule":["_ref_56"]},"entries":[{"type":"table","id":"table-well-known-intrinsic-objects","number":1,"caption":"Table 1: Well-Known Intrinsic Objects","referencingIds":["_ref_0"]},{"type":"clause","id":"sec-well-known-intrinsic-objects","titleHTML":"Well-Known Intrinsic Objects","number":"1.1.1.1"},{"type":"clause","id":"sec-object-type","titleHTML":"Object Type","number":"1.1.1","referencingIds":["_ref_45","_ref_46"]},{"type":"clause","id":"sec-ecmascript-language-types","titleHTML":"ECMAScript Language Types","number":"1.1"},{"type":"op","aoid":"Type","refId":"sec-ecmascript-data-types-and-values"},{"type":"clause","id":"sec-ecmascript-data-types-and-values","titleHTML":"ECMAScript Data Types and Values","number":"1"},{"type":"production","id":"prod-ImportCall","name":"ImportCall","referencingIds":["_ref_56"]},{"type":"clause","id":"sec-import-call-runtime-semantics-evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.3.10.1"},{"type":"op","aoid":"EvaluateImportCall","refId":"sec-evaluate-import-call"},{"type":"clause","id":"sec-evaluate-import-call","title":"EvaluateImportCall ( specifierExpression, phase )","titleHTML":"EvaluateImportCall ( specifierExpression, phase )","number":"13.3.10.2","referencingIds":["_ref_9","_ref_10"]},{"type":"clause","id":"sec-import-calls","titleHTML":"Import Calls","number":"13.3.10","referencingIds":["_ref_3"]},{"type":"op","aoid":"ContinueDynamicImport","refId":"sec-ContinueDynamicImport"},{"type":"clause","id":"sec-ContinueDynamicImport","title":"ContinueDynamicImport ( promiseCapability, phase, moduleCompletion )","titleHTML":"ContinueDynamicImport ( promiseCapability, phase, moduleCompletion )","number":"13.3.11","referencingIds":["_ref_12"]},{"type":"clause","id":"sec-left-hand-side-expressions","titleHTML":"Left-Hand-Side Expressions","number":"13.3"},{"type":"clause","id":"sec-ecmascript-language-expressions","titleHTML":"ECMAScript Language: Expressions","number":"13"},{"type":"term","term":"Module Record","refId":"sec-abstract-module-records"},{"type":"table","id":"table-module-record-fields","number":2,"caption":"Table 2: Module Record Fields","referencingIds":["_ref_4","_ref_7"]},{"type":"table","id":"table-abstract-methods-of-module-records","number":3,"caption":"Table 3: Abstract Methods of Module Records","referencingIds":["_ref_5"]},{"type":"term","term":"ResolvedBinding Record","id":"resolvedbinding-record"},{"type":"clause","id":"sec-abstract-module-records","titleHTML":"Abstract Module Records","number":"16.1.1.1","referencingIds":["_ref_13","_ref_15","_ref_16","_ref_17","_ref_19","_ref_20","_ref_22","_ref_23","_ref_24","_ref_25","_ref_26","_ref_28","_ref_38","_ref_39"]},{"type":"term","term":"Cyclic Module Record","id":"cyclic-module-record","referencingIds":["_ref_14","_ref_27","_ref_29","_ref_30","_ref_31","_ref_32","_ref_33","_ref_34","_ref_50"]},{"type":"table","id":"table-cyclic-module-fields","number":4,"caption":"Table 4: Additional Fields of Cyclic Module Records","referencingIds":["_ref_8"]},{"type":"clause","id":"sec-modulegetmetadata","title":"GetMetadata ( )","titleHTML":"GetMetadata ( )","number":"16.1.1.2.1"},{"type":"clause","id":"sec-cyclic-module-records","titleHTML":"Cyclic Module Records","number":"16.1.1.2"},{"type":"op","aoid":"ParseModule","refId":"sec-parsemodule"},{"type":"clause","id":"sec-parsemodule","title":"ParseModule ( sourceText, realm, hostDefined )","titleHTML":"ParseModule ( sourceText, realm, hostDefined )","number":"16.1.1.3.1"},{"type":"clause","id":"sec-source-text-module-record-getmodulesource","titleHTML":"GetModuleSource ( )","number":"16.1.1.3.2"},{"type":"clause","id":"sec-source-text-module-records","titleHTML":"Source Text Module Records","number":"16.1.1.3"},{"type":"op","aoid":"HostGetModuleSourceName","refId":"sec-HostGetModuleSourceName"},{"type":"clause","id":"sec-HostGetModuleSourceName","title":"HostGetModuleSourceName ( moduleSource )","titleHTML":"HostGetModuleSourceName ( moduleSource )","number":"16.1.1.4","referencingIds":["_ref_42","_ref_47","_ref_54"]},{"type":"op","aoid":"HostGetModuleSourceRecord","refId":"sec-HostGetModuleSourceRecord"},{"type":"clause","id":"sec-HostGetModuleSourceRecord","title":"HostGetModuleSourceRecord ( moduleSource )","titleHTML":"HostGetModuleSourceRecord ( moduleSource )","number":"16.1.1.5","referencingIds":["_ref_11","_ref_43","_ref_48","_ref_49","_ref_53","_ref_55"]},{"type":"clause","id":"sec-module-semantics","titleHTML":"Module Semantics","number":"16.1.1"},{"type":"clause","id":"sec-modules","titleHTML":"Modules","number":"16.1"},{"type":"clause","id":"sec-ecmascript-language-scripts-and-modules","titleHTML":"ECMAScript Language: Scripts and Modules","number":"16"},{"type":"term","term":"Module Source Object","refId":"sec-module-source-objects"},{"type":"clause","id":"sec-%abstractmodulesource%","titleHTML":"%AbstractModuleSource% ( )","number":"28.1.1.1"},{"type":"clause","id":"sec-%abstractmodulesource%-constructor","titleHTML":"The %AbstractModuleSource% Constructor","number":"28.1.1","referencingIds":["_ref_1"]},{"type":"clause","id":"sec-%abstractmodulesource%.prototype","titleHTML":"%AbstractModuleSource%.prototype","number":"28.1.2.1"},{"type":"clause","id":"sec-properties-of-the-%abstractmodulesource%-intrinsic-object","titleHTML":"Properties of the %AbstractModuleSource% Intrinsic Object","number":"28.1.2"},{"type":"term","term":"%AbstractModuleSource% prototype object","refId":"sec-properties-of-the-%abstractmodulesource%-prototype-object"},{"type":"term","term":"%AbstractModuleSource.prototype%","refId":"sec-properties-of-the-%abstractmodulesource%-prototype-object"},{"type":"clause","id":"sec-%abstractmodulesource%.prototype.constructor","titleHTML":"%AbstractModuleSource%.prototype.constructor","number":"28.1.3.1"},{"type":"clause","id":"sec-get-%abstractmodulesource%.prototype.@@tostringtag","titleHTML":"get %AbstractModuleSource%.prototype [ @@toStringTag ]","number":"28.1.3.2"},{"type":"clause","id":"sec-%abstractmodulesource%.prototype.metadata","title":"%AbstractModuleSource%.prototype.metadata ( )","titleHTML":"%AbstractModuleSource%.prototype.metadata ( )","number":"28.1.3.3"},{"type":"clause","id":"sec-properties-of-the-%abstractmodulesource%-prototype-object","titleHTML":"Properties of the %AbstractModuleSource% Prototype Object","number":"28.1.3","referencingIds":["_ref_21","_ref_44","_ref_51"]},{"type":"clause","id":"sec-%modulesource%","titleHTML":"%ModuleSource% ( )","number":"28.1.4.1"},{"type":"clause","id":"sec-module-source-object","title":"The %ModuleSource% Constructor","titleHTML":"The %ModuleSource% Constructor","number":"28.1.4","referencingIds":["_ref_2"]},{"type":"term","term":"%ModuleSource% prototype object","refId":"sec-properties-of-the-%modulesource%-prototype-object"},{"type":"term","term":"%ModuleSource.prototype%","refId":"sec-properties-of-the-%modulesource%-prototype-object"},{"type":"clause","id":"sec-%modulesource%.prototype.constructor","title":"%ModuleSource%.prototype.constructor","titleHTML":"%ModuleSource%.prototype.constructor","number":"28.1.5.1"},{"type":"clause","id":"sec-properties-of-the-%modulesource%-prototype-object","title":"Properties of the %ModuleSource% Prototype Object","titleHTML":"Properties of the %ModuleSource% Prototype Object","number":"28.1.5","referencingIds":["_ref_35","_ref_52"]},{"type":"clause","id":"sec-properties-of-modulesource-instances","title":"Properties of ModuleSource Instances","titleHTML":"Properties of ModuleSource Instances","number":"28.1.6"},{"type":"op","aoid":"GetModuleSourceSourceTextModuleRecord","refId":"sec-getmodulesourcesourcetextmodulerecord"},{"type":"clause","id":"sec-getmodulesourcesourcetextmodulerecord","title":"GetModuleSourceSourceTextModuleRecord ( M )","titleHTML":"GetModuleSourceSourceTextModuleRecord ( M )","number":"28.1.7.1","referencingIds":["_ref_40"]},{"type":"clause","id":"sec-abstract-operations-for-modulesource-objects","title":"Abstract Operations for ModuleSource Objects","titleHTML":"Abstract Operations for ModuleSource Objects","number":"28.1.7"},{"type":"clause","id":"sec-module-source-objects","titleHTML":"Module Source Objects","number":"28.1","referencingIds":["_ref_6","_ref_18","_ref_36","_ref_37","_ref_41"]},{"type":"clause","id":"sec-reflection","titleHTML":"Reflection","number":"28"},{"type":"clause","id":"sec-host-hooks-summary","titleHTML":"Host Hooks","number":"A.1"},{"type":"clause","id":"sec-host-layering-points","titleHTML":"Host Layering Points","number":"A"},{"type":"clause","id":"sec-copyright-and-software-license","title":"Copyright & Software License","titleHTML":"Copyright & Software License","number":"B"}]}`); +let biblio = JSON.parse(`{"refsByClause":{"sec-well-known-intrinsic-objects":["_ref_0","_ref_1","_ref_2"],"sec-ContinueDynamicImport":["_ref_3","_ref_14"],"sec-abstract-module-records":["_ref_4","_ref_5","_ref_6","_ref_15","_ref_16","_ref_17","_ref_18","_ref_19","_ref_20","_ref_21","_ref_22","_ref_23","_ref_24","_ref_25"],"sec-cyclic-module-records":["_ref_7","_ref_8","_ref_26","_ref_27","_ref_28","_ref_29","_ref_30","_ref_31","_ref_32"],"sec-import-call-runtime-semantics-evaluation":["_ref_9","_ref_10"],"sec-evaluate-import-call":["_ref_11","_ref_12","_ref_13"],"sec-modulegetimports":["_ref_33"],"sec-source-text-module-record-getmodulesource":["_ref_34"],"sec-HostGetModuleSourceName":["_ref_35","_ref_36"],"sec-HostGetModuleSourceRecord":["_ref_37","_ref_38","_ref_39","_ref_40","_ref_41"],"sec-module-source-objects":["_ref_42","_ref_43"],"sec-%abstractmodulesource%.prototype":["_ref_44"],"sec-get-%abstractmodulesource%.prototype.@@tostringtag":["_ref_45","_ref_46","_ref_47","_ref_48"],"sec-%abstractmodulesource%.prototype.imports":["_ref_49","_ref_50"],"sec-%abstractmodulesource%.prototype.hasDynamicImport":["_ref_51","_ref_52","_ref_53"],"sec-%abstractmodulesource%.prototype.hasImportMeta":["_ref_54","_ref_55","_ref_56"],"sec-%abstractmodulesource%.prototype.hasTopLevelAwait":["_ref_57","_ref_58","_ref_59"],"sec-properties-of-the-%modulesource%-prototype-object":["_ref_60"],"sec-properties-of-modulesource-instances":["_ref_61"],"sec-getmodulesourcesourcetextmodulerecord":["_ref_62"],"sec-host-hooks-summary":["_ref_63","_ref_64"],"sec-parsemodule":["_ref_65"]},"entries":[{"type":"table","id":"table-well-known-intrinsic-objects","number":1,"caption":"Table 1: Well-Known Intrinsic Objects","referencingIds":["_ref_0"]},{"type":"clause","id":"sec-well-known-intrinsic-objects","titleHTML":"Well-Known Intrinsic Objects","number":"1.1.1.1"},{"type":"clause","id":"sec-object-type","titleHTML":"Object Type","number":"1.1.1","referencingIds":["_ref_11","_ref_45","_ref_46","_ref_51","_ref_54","_ref_57"]},{"type":"clause","id":"sec-ecmascript-language-types","titleHTML":"ECMAScript Language Types","number":"1.1"},{"type":"op","aoid":"Type","refId":"sec-ecmascript-data-types-and-values"},{"type":"clause","id":"sec-ecmascript-data-types-and-values","titleHTML":"ECMAScript Data Types and Values","number":"1"},{"type":"production","id":"prod-ImportCall","name":"ImportCall","referencingIds":["_ref_65"]},{"type":"clause","id":"sec-import-call-runtime-semantics-evaluation","titleHTML":"Runtime Semantics: Evaluation","number":"13.3.10.1"},{"type":"op","aoid":"EvaluateImportCall","refId":"sec-evaluate-import-call"},{"type":"clause","id":"sec-evaluate-import-call","title":"EvaluateImportCall ( specifierExpression, phase )","titleHTML":"EvaluateImportCall ( specifierExpression, phase )","number":"13.3.10.2","referencingIds":["_ref_9","_ref_10"]},{"type":"clause","id":"sec-import-calls","titleHTML":"Import Calls","number":"13.3.10","referencingIds":["_ref_3"]},{"type":"op","aoid":"ContinueDynamicImport","refId":"sec-ContinueDynamicImport"},{"type":"clause","id":"sec-ContinueDynamicImport","title":"ContinueDynamicImport ( promiseCapability, phase, moduleCompletion )","titleHTML":"ContinueDynamicImport ( promiseCapability, phase, moduleCompletion )","number":"13.3.11","referencingIds":["_ref_13"]},{"type":"clause","id":"sec-left-hand-side-expressions","titleHTML":"Left-Hand-Side Expressions","number":"13.3"},{"type":"clause","id":"sec-ecmascript-language-expressions","titleHTML":"ECMAScript Language: Expressions","number":"13"},{"type":"term","term":"Module Record","refId":"sec-abstract-module-records"},{"type":"table","id":"table-module-record-fields","number":2,"caption":"Table 2: Module Record Fields","referencingIds":["_ref_4","_ref_7"]},{"type":"table","id":"table-abstract-methods-of-module-records","number":3,"caption":"Table 3: Abstract Methods of Module Records","referencingIds":["_ref_5"]},{"type":"term","term":"ResolvedBinding Record","id":"resolvedbinding-record"},{"type":"clause","id":"sec-abstract-module-records","titleHTML":"Abstract Module Records","number":"16.1.1.1","referencingIds":["_ref_14","_ref_16","_ref_17","_ref_18","_ref_20","_ref_21","_ref_23","_ref_24","_ref_25","_ref_27","_ref_37","_ref_38"]},{"type":"term","term":"Cyclic Module Record","id":"cyclic-module-record","referencingIds":["_ref_15","_ref_26","_ref_28","_ref_29","_ref_30","_ref_31","_ref_32","_ref_33","_ref_50","_ref_53","_ref_56","_ref_59"]},{"type":"table","id":"table-cyclic-module-fields","number":4,"caption":"Table 4: Additional Fields of Cyclic Module Records","referencingIds":["_ref_8"]},{"type":"clause","id":"sec-modulegetimports","title":"GetImports ( )","titleHTML":"GetImports ( )","number":"16.1.1.2.1"},{"type":"clause","id":"sec-cyclic-module-records","titleHTML":"Cyclic Module Records","number":"16.1.1.2"},{"type":"op","aoid":"ParseModule","refId":"sec-parsemodule"},{"type":"clause","id":"sec-parsemodule","title":"ParseModule ( sourceText, realm, hostDefined )","titleHTML":"ParseModule ( sourceText, realm, hostDefined )","number":"16.1.1.3.1"},{"type":"clause","id":"sec-source-text-module-record-getmodulesource","titleHTML":"GetModuleSource ( )","number":"16.1.1.3.2"},{"type":"clause","id":"sec-source-text-module-records","titleHTML":"Source Text Module Records","number":"16.1.1.3"},{"type":"op","aoid":"HostGetModuleSourceName","refId":"sec-HostGetModuleSourceName"},{"type":"clause","id":"sec-HostGetModuleSourceName","title":"HostGetModuleSourceName ( moduleSource )","titleHTML":"HostGetModuleSourceName ( moduleSource )","number":"16.1.1.4","referencingIds":["_ref_42","_ref_47","_ref_63"]},{"type":"op","aoid":"HostGetModuleSourceRecord","refId":"sec-HostGetModuleSourceRecord"},{"type":"clause","id":"sec-HostGetModuleSourceRecord","title":"HostGetModuleSourceRecord ( moduleSource )","titleHTML":"HostGetModuleSourceRecord ( moduleSource )","number":"16.1.1.5","referencingIds":["_ref_12","_ref_43","_ref_48","_ref_49","_ref_52","_ref_55","_ref_58","_ref_62","_ref_64"]},{"type":"clause","id":"sec-module-semantics","titleHTML":"Module Semantics","number":"16.1.1"},{"type":"clause","id":"sec-modules","titleHTML":"Modules","number":"16.1"},{"type":"clause","id":"sec-ecmascript-language-scripts-and-modules","titleHTML":"ECMAScript Language: Scripts and Modules","number":"16"},{"type":"term","term":"Module Source Object","refId":"sec-module-source-objects"},{"type":"clause","id":"sec-%abstractmodulesource%","titleHTML":"%AbstractModuleSource% ( )","number":"28.1.1.1"},{"type":"clause","id":"sec-%abstractmodulesource%-constructor","titleHTML":"The %AbstractModuleSource% Constructor","number":"28.1.1","referencingIds":["_ref_1"]},{"type":"clause","id":"sec-%abstractmodulesource%.prototype","titleHTML":"%AbstractModuleSource%.prototype","number":"28.1.2.1"},{"type":"clause","id":"sec-properties-of-the-%abstractmodulesource%-intrinsic-object","titleHTML":"Properties of the %AbstractModuleSource% Intrinsic Object","number":"28.1.2"},{"type":"term","term":"%AbstractModuleSource% prototype object","refId":"sec-properties-of-the-%abstractmodulesource%-prototype-object"},{"type":"term","term":"%AbstractModuleSource.prototype%","refId":"sec-properties-of-the-%abstractmodulesource%-prototype-object"},{"type":"clause","id":"sec-%abstractmodulesource%.prototype.constructor","titleHTML":"%AbstractModuleSource%.prototype.constructor","number":"28.1.3.1"},{"type":"clause","id":"sec-get-%abstractmodulesource%.prototype.@@tostringtag","titleHTML":"get %AbstractModuleSource%.prototype [ @@toStringTag ]","number":"28.1.3.2"},{"type":"clause","id":"sec-%abstractmodulesource%.prototype.imports","title":"%AbstractModuleSource%.prototype.imports ( )","titleHTML":"%AbstractModuleSource%.prototype.imports ( )","number":"28.1.3.3"},{"type":"clause","id":"sec-%abstractmodulesource%.prototype.hasDynamicImport","title":"get AbstractModuleSource.prototype.hasDynamicImport","titleHTML":"get AbstractModuleSource.prototype.hasDynamicImport","number":"28.1.3.4"},{"type":"clause","id":"sec-%abstractmodulesource%.prototype.hasImportMeta","title":"get AbstractModuleSource.prototype.hasImportMeta","titleHTML":"get AbstractModuleSource.prototype.hasImportMeta","number":"28.1.3.5"},{"type":"clause","id":"sec-%abstractmodulesource%.prototype.hasTopLevelAwait","title":"get AbstractModuleSource.prototype.hasTopLevelAwait","titleHTML":"get AbstractModuleSource.prototype.hasTopLevelAwait","number":"28.1.3.6"},{"type":"clause","id":"sec-properties-of-the-%abstractmodulesource%-prototype-object","titleHTML":"Properties of the %AbstractModuleSource% Prototype Object","number":"28.1.3","referencingIds":["_ref_22","_ref_44","_ref_60"]},{"type":"clause","id":"sec-%modulesource%","titleHTML":"%ModuleSource% ( )","number":"28.1.4.1"},{"type":"clause","id":"sec-module-source-object","title":"The %ModuleSource% Constructor","titleHTML":"The %ModuleSource% Constructor","number":"28.1.4","referencingIds":["_ref_2"]},{"type":"term","term":"%ModuleSource% prototype object","refId":"sec-properties-of-the-%modulesource%-prototype-object"},{"type":"term","term":"%ModuleSource.prototype%","refId":"sec-properties-of-the-%modulesource%-prototype-object"},{"type":"clause","id":"sec-%modulesource%.prototype.constructor","title":"%ModuleSource%.prototype.constructor","titleHTML":"%ModuleSource%.prototype.constructor","number":"28.1.5.1"},{"type":"clause","id":"sec-properties-of-the-%modulesource%-prototype-object","title":"Properties of the %ModuleSource% Prototype Object","titleHTML":"Properties of the %ModuleSource% Prototype Object","number":"28.1.5","referencingIds":["_ref_34","_ref_61"]},{"type":"clause","id":"sec-properties-of-modulesource-instances","title":"Properties of ModuleSource Instances","titleHTML":"Properties of ModuleSource Instances","number":"28.1.6"},{"type":"op","aoid":"GetModuleSourceSourceTextModuleRecord","refId":"sec-getmodulesourcesourcetextmodulerecord"},{"type":"clause","id":"sec-getmodulesourcesourcetextmodulerecord","title":"GetModuleSourceSourceTextModuleRecord ( M )","titleHTML":"GetModuleSourceSourceTextModuleRecord ( M )","number":"28.1.7.1","referencingIds":["_ref_39"]},{"type":"clause","id":"sec-abstract-operations-for-modulesource-objects","title":"Abstract Operations for ModuleSource Objects","titleHTML":"Abstract Operations for ModuleSource Objects","number":"28.1.7"},{"type":"clause","id":"sec-module-source-objects","titleHTML":"Module Source Objects","number":"28.1","referencingIds":["_ref_6","_ref_19","_ref_35","_ref_36","_ref_40","_ref_41"]},{"type":"clause","id":"sec-reflection","titleHTML":"Reflection","number":"28"},{"type":"clause","id":"sec-host-hooks-summary","titleHTML":"Host Hooks","number":"A.1"},{"type":"clause","id":"sec-host-layering-points","titleHTML":"Host Layering Points","number":"A"},{"type":"clause","id":"sec-copyright-and-software-license","title":"Copyright & Software License","titleHTML":"Copyright & Software License","number":"B"}]}`); ;let usesMultipage = false