import { Value, JSStringValue, ObjectValue, BooleanValue } from './value.mts'; import { type GCMarker } from './host-defined/engine.mts'; import { ExecutionContext } from './execution-context/ExecutionContext.mts'; import { type ImportEntry, type ExportEntry } from './static-semantics/all.mts'; import { Completion, NormalCompletion, ThrowCompletion } from './completion.mts'; import { type Evaluator, type PlainEvaluator, type ValueEvaluator } from './evaluator.mts'; import type { ParseNode } from './parser/ParseNode.mts'; import { PromiseCapabilityRecord, Realm } from '#self'; import { type ImportAttributeRecord, type ImportedNamesValue, type ModuleRequestRecord, type PlainCompletion, type PromiseObject, ModuleEnvironmentRecord } from '#self'; export interface LoadedModuleRequestRecord { readonly Specifier: string; readonly Attributes: readonly ImportAttributeRecord[]; readonly Module: AbstractModuleRecord; } export declare class ResolvedBindingRecord { readonly Module: AbstractModuleRecord; readonly BindingName: 'namespace' | 'deferred-namespace' | 'source' | JSStringValue; constructor({ Module, BindingName }: Pick); mark(m: GCMarker): void; } export type ModuleRecordHostDefinedPublic = unknown; export type ModuleRecordHostDefined = { public?: ModuleRecordHostDefinedPublic; specifier?: string | undefined; readonly SourceTextModuleRecord?: typeof SourceTextModuleRecord; scriptId?: string; readonly doNotTrackScriptId?: boolean; }; export interface AbstractModuleInit { readonly Realm: AbstractModuleRecord['Realm']; readonly Environment: AbstractModuleRecord['Environment']; readonly HostDefined: AbstractModuleRecord['HostDefined']; readonly ModuleSource?: AbstractModuleRecord['ModuleSource']; readonly Namespace: AbstractModuleRecord['Namespace']; } interface ResolveSetItem { readonly Module: AbstractModuleRecord; readonly ExportName: JSStringValue; } /** https://tc39.es/ecma262/#sec-abstract-module-records */ export declare abstract class AbstractModuleRecord { abstract LoadRequestedModules(hostDefined?: ModuleRecordHostDefined, importedNames?: ImportedNamesValue): PromiseObject; abstract GetExportedNames(exportStarSet?: AbstractModuleRecord[]): readonly JSStringValue[]; abstract ResolveExport(exportName: JSStringValue, resolveSet?: ResolveSetItem[]): 'ambiguous' | ResolvedBindingRecord | null; abstract Link(importedNames?: ImportedNamesValue): PlainCompletion; abstract Evaluate(importedNames?: ImportedNamesValue): Evaluator; /** https://tc39.es/proposal-deferred-reexports/#abstract-getoptionalindirectexportsmodulerequests */ GetOptionalIndirectExportsModuleRequests(_importedNames: ImportedNamesValue): readonly ModuleRequestRecord[]; GetModuleSourceKind(): string; readonly Realm: Realm; readonly Environment: ModuleEnvironmentRecord | undefined; readonly Namespace: ObjectValue | undefined; readonly DeferredNamespace: ObjectValue | undefined; readonly ModuleSource: ObjectValue | undefined; readonly HostDefined: ModuleRecordHostDefined | undefined; constructor(init: AbstractModuleInit); mark(m: GCMarker): void; } export { AbstractModuleRecord as ModuleRecord }; export type CyclicModuleRecordInit = AbstractModuleInit & Readonly>; export type CyclicModuleRecordStatus = 'new' | 'unlinked' | 'linking' | 'linked' | 'evaluating' | 'evaluating-async' | 'evaluated'; /** https://tc39.es/ecma262/#sec-cyclic-module-records */ export declare abstract class CyclicModuleRecord extends AbstractModuleRecord { Status: CyclicModuleRecordStatus; EvaluationError: ThrowCompletion | undefined; DFSAncestorIndex: number | undefined; readonly RequestedModules: readonly ModuleRequestRecord[]; readonly LoadedModules: LoadedModuleRequestRecord[]; readonly HasTLA: BooleanValue; AsyncEvaluationOrder: 'unset' | number | 'done'; AsyncParentModules: CyclicModuleRecord[]; CycleRoot: CyclicModuleRecord | undefined; TopLevelCapability: PromiseCapabilityRecord | undefined; PendingAsyncDependencies: number | undefined; constructor(init: CyclicModuleRecordInit); abstract ExecuteModule(capability?: PromiseCapabilityRecord): ValueEvaluator; /** https://tc39.es/ecma262/#sec-LoadRequestedModules */ LoadRequestedModules(hostDefined?: ModuleRecordHostDefined, importedNames?: ImportedNamesValue): PromiseObject; /** https://tc39.es/ecma262/#sec-moduledeclarationlinking */ Link(importedNames?: ImportedNamesValue): PlainCompletion; /** https://tc39.es/ecma262/#sec-moduleevaluation */ Evaluate(importedNames?: ImportedNamesValue): Evaluator; mark(m: GCMarker): void; } export type SourceTextModuleRecordInit = CyclicModuleRecordInit & Pick & Partial>; /** https://tc39.es/ecma262/#sec-source-text-module-records */ export declare class SourceTextModuleRecord extends CyclicModuleRecord { ImportMeta: ObjectValue | undefined; readonly ECMAScriptCode: ParseNode.Module; readonly Context: ExecutionContext | undefined; readonly ImportEntries: readonly ImportEntry[]; readonly LocalExportEntries: readonly ExportEntry[]; readonly IndirectExportEntries: readonly ExportEntry[]; readonly StarExportEntries: readonly ExportEntry[]; /** https://tc39.es/proposal-deferred-reexports/ — deferred re-export entries (`export defer ... from`). */ readonly OptionalIndirectExportEntries: readonly ExportEntry[]; constructor(init: SourceTextModuleRecordInit); /** https://tc39.es/ecma262/#sec-getexportednames */ GetExportedNames(exportStarSet: AbstractModuleRecord[]): JSStringValue[]; /** https://tc39.es/ecma262/#sec-resolveexport */ ResolveExport(exportName: JSStringValue, resolveSet?: ResolveSetItem[]): "ambiguous" | ResolvedBindingRecord | null; /** https://tc39.es/proposal-deferred-reexports/#sec-GetOptionalIndirectExportsModuleRequests */ GetOptionalIndirectExportsModuleRequests(importedNames: ImportedNamesValue): readonly ModuleRequestRecord[]; /** https://tc39.es/ecma262/#sec-source-text-module-record-initialize-environment */ InitializeEnvironment(): NormalCompletion | ThrowCompletion; /** https://tc39.es/ecma262/#sec-source-text-module-record-execute-module */ ExecuteModule(capability?: PromiseCapabilityRecord): ValueEvaluator; mark(m: GCMarker): void; } export type SyntheticModuleRecordInit = AbstractModuleInit & Pick; /** https://tc39.es/ecma262/#sec-synthetic-module-records */ export declare class SyntheticModuleRecord extends AbstractModuleRecord { LoadRequestedModules(): PromiseObject; readonly ExportNames: readonly JSStringValue[]; readonly EvaluationSteps: (module: SyntheticModuleRecord) => PlainEvaluator | Completion | void; constructor(init: SyntheticModuleRecordInit); /** https://tc39.es/ecma262/#sec-synthetic-module-record-getexportednames */ GetExportedNames(): readonly JSStringValue[]; /** https://tc39.es/ecma262/#sec-synthetic-module-record-resolveexport */ ResolveExport(exportName: JSStringValue): ResolvedBindingRecord | null; /** https://tc39.es/ecma262/#sec-synthetic-module-record-link */ Link(): undefined; /** https://tc39.es/ecma262/#sec-synthetic-module-record-evaluate */ Evaluate(): Evaluator; SetSyntheticExport(name: JSStringValue, value: Value): PlainEvaluator; } //# sourceMappingURL=modules.d.mts.map