@engine262/engine262 0.0.1-07c72085c73f960bcf0aa06db807321f3b446518
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +19 -0
- package/README.md +179 -0
- package/bin/engine262.js +6 -0
- package/declaration/abstract-ops/all.d.mts +35 -0
- package/declaration/abstract-ops/all.d.mts.map +1 -0
- package/declaration/abstract-ops/arguments-operations.d.mts +17 -0
- package/declaration/abstract-ops/arguments-operations.d.mts.map +1 -0
- package/declaration/abstract-ops/array-objects.d.mts +23 -0
- package/declaration/abstract-ops/array-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/arraybuffer-objects.d.mts +44 -0
- package/declaration/abstract-ops/arraybuffer-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/async-function-operations.d.mts +9 -0
- package/declaration/abstract-ops/async-function-operations.d.mts.map +1 -0
- package/declaration/abstract-ops/async-generator-objects.d.mts +42 -0
- package/declaration/abstract-ops/async-generator-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/data-types-and-values.d.mts +6 -0
- package/declaration/abstract-ops/data-types-and-values.d.mts.map +1 -0
- package/declaration/abstract-ops/dataview-objects.d.mts +32 -0
- package/declaration/abstract-ops/dataview-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/date-objects.d.mts +46 -0
- package/declaration/abstract-ops/date-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/error-objects.d.mts +5 -0
- package/declaration/abstract-ops/error-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/execution-contexts.d.mts +22 -0
- package/declaration/abstract-ops/execution-contexts.d.mts.map +1 -0
- package/declaration/abstract-ops/function-operations.d.mts +85 -0
- package/declaration/abstract-ops/function-operations.d.mts.map +1 -0
- package/declaration/abstract-ops/generator-operations.d.mts +37 -0
- package/declaration/abstract-ops/generator-operations.d.mts.map +1 -0
- package/declaration/abstract-ops/global-object.d.mts +7 -0
- package/declaration/abstract-ops/global-object.d.mts.map +1 -0
- package/declaration/abstract-ops/immutable-prototype-objects.d.mts +7 -0
- package/declaration/abstract-ops/immutable-prototype-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/import-calls.d.mts +5 -0
- package/declaration/abstract-ops/import-calls.d.mts.map +1 -0
- package/declaration/abstract-ops/iterator-operations.d.mts +56 -0
- package/declaration/abstract-ops/iterator-operations.d.mts.map +1 -0
- package/declaration/abstract-ops/module-namespace-exotic-objects.d.mts +13 -0
- package/declaration/abstract-ops/module-namespace-exotic-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/module-records.d.mts +34 -0
- package/declaration/abstract-ops/module-records.d.mts.map +1 -0
- package/declaration/abstract-ops/notational-conventions.d.mts +8 -0
- package/declaration/abstract-ops/notational-conventions.d.mts.map +1 -0
- package/declaration/abstract-ops/object-operations.d.mts +96 -0
- package/declaration/abstract-ops/object-operations.d.mts.map +1 -0
- package/declaration/abstract-ops/objects.d.mts +31 -0
- package/declaration/abstract-ops/objects.d.mts.map +1 -0
- package/declaration/abstract-ops/private-names.d.mts +36 -0
- package/declaration/abstract-ops/private-names.d.mts.map +1 -0
- package/declaration/abstract-ops/promise-operations.d.mts +62 -0
- package/declaration/abstract-ops/promise-operations.d.mts.map +1 -0
- package/declaration/abstract-ops/proxy-objects.d.mts +7 -0
- package/declaration/abstract-ops/proxy-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/realms.d.mts +174 -0
- package/declaration/abstract-ops/realms.d.mts.map +1 -0
- package/declaration/abstract-ops/reference-operations.d.mts +27 -0
- package/declaration/abstract-ops/reference-operations.d.mts.map +1 -0
- package/declaration/abstract-ops/regexp-objects.d.mts +40 -0
- package/declaration/abstract-ops/regexp-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/spec-types.d.mts +39 -0
- package/declaration/abstract-ops/spec-types.d.mts.map +1 -0
- package/declaration/abstract-ops/string-objects.d.mts +8 -0
- package/declaration/abstract-ops/string-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/symbol-objects.d.mts +6 -0
- package/declaration/abstract-ops/symbol-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/testing-comparison.d.mts +46 -0
- package/declaration/abstract-ops/testing-comparison.d.mts.map +1 -0
- package/declaration/abstract-ops/type-conversion.d.mts +55 -0
- package/declaration/abstract-ops/type-conversion.d.mts.map +1 -0
- package/declaration/abstract-ops/typedarray-objects.d.mts +33 -0
- package/declaration/abstract-ops/typedarray-objects.d.mts.map +1 -0
- package/declaration/abstract-ops/weak-operations.d.mts +16 -0
- package/declaration/abstract-ops/weak-operations.d.mts.map +1 -0
- package/declaration/api-types.d.mts +3 -0
- package/declaration/api-types.d.mts.map +1 -0
- package/declaration/api.d.mts +63 -0
- package/declaration/api.d.mts.map +1 -0
- package/declaration/completion.d.mts +163 -0
- package/declaration/completion.d.mts.map +1 -0
- package/declaration/engine.d.mts +143 -0
- package/declaration/engine.d.mts.map +1 -0
- package/declaration/environment.d.mts +209 -0
- package/declaration/environment.d.mts.map +1 -0
- package/declaration/evaluator.d.mts +14 -0
- package/declaration/evaluator.d.mts.map +1 -0
- package/declaration/helpers.d.mts +92 -0
- package/declaration/helpers.d.mts.map +1 -0
- package/declaration/inspect.d.mts +4 -0
- package/declaration/inspect.d.mts.map +1 -0
- package/declaration/intrinsics/AggregateError.d.mts +3 -0
- package/declaration/intrinsics/AggregateError.d.mts.map +1 -0
- package/declaration/intrinsics/AggregateErrorPrototype.d.mts +3 -0
- package/declaration/intrinsics/AggregateErrorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Array.d.mts +3 -0
- package/declaration/intrinsics/Array.d.mts.map +1 -0
- package/declaration/intrinsics/ArrayBuffer.d.mts +3 -0
- package/declaration/intrinsics/ArrayBuffer.d.mts.map +1 -0
- package/declaration/intrinsics/ArrayBufferPrototype.d.mts +3 -0
- package/declaration/intrinsics/ArrayBufferPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/ArrayIteratorPrototype.d.mts +3 -0
- package/declaration/intrinsics/ArrayIteratorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/ArrayPrototype.d.mts +3 -0
- package/declaration/intrinsics/ArrayPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/ArrayPrototypeShared.d.mts +10 -0
- package/declaration/intrinsics/ArrayPrototypeShared.d.mts.map +1 -0
- package/declaration/intrinsics/AsyncFromSyncIteratorPrototype.d.mts +6 -0
- package/declaration/intrinsics/AsyncFromSyncIteratorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/AsyncFunction.d.mts +3 -0
- package/declaration/intrinsics/AsyncFunction.d.mts.map +1 -0
- package/declaration/intrinsics/AsyncFunctionPrototype.d.mts +3 -0
- package/declaration/intrinsics/AsyncFunctionPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/AsyncGeneratorFunction.d.mts +3 -0
- package/declaration/intrinsics/AsyncGeneratorFunction.d.mts.map +1 -0
- package/declaration/intrinsics/AsyncGeneratorFunctionPrototype.d.mts +3 -0
- package/declaration/intrinsics/AsyncGeneratorFunctionPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/AsyncGeneratorFunctionPrototypePrototype.d.mts +3 -0
- package/declaration/intrinsics/AsyncGeneratorFunctionPrototypePrototype.d.mts.map +1 -0
- package/declaration/intrinsics/AsyncIteratorPrototype.d.mts +3 -0
- package/declaration/intrinsics/AsyncIteratorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/BigInt.d.mts +8 -0
- package/declaration/intrinsics/BigInt.d.mts.map +1 -0
- package/declaration/intrinsics/BigIntPrototype.d.mts +3 -0
- package/declaration/intrinsics/BigIntPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Boolean.d.mts +8 -0
- package/declaration/intrinsics/Boolean.d.mts.map +1 -0
- package/declaration/intrinsics/BooleanPrototype.d.mts +3 -0
- package/declaration/intrinsics/BooleanPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/DataView.d.mts +11 -0
- package/declaration/intrinsics/DataView.d.mts.map +1 -0
- package/declaration/intrinsics/DataViewPrototype.d.mts +3 -0
- package/declaration/intrinsics/DataViewPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Date.d.mts +7 -0
- package/declaration/intrinsics/Date.d.mts.map +1 -0
- package/declaration/intrinsics/DatePrototype.d.mts +10 -0
- package/declaration/intrinsics/DatePrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Error.d.mts +3 -0
- package/declaration/intrinsics/Error.d.mts.map +1 -0
- package/declaration/intrinsics/ErrorPrototype.d.mts +3 -0
- package/declaration/intrinsics/ErrorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/FinalizationRegistry.d.mts +16 -0
- package/declaration/intrinsics/FinalizationRegistry.d.mts.map +1 -0
- package/declaration/intrinsics/FinalizationRegistryPrototype.d.mts +3 -0
- package/declaration/intrinsics/FinalizationRegistryPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/ForInIteratorPrototype.d.mts +13 -0
- package/declaration/intrinsics/ForInIteratorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Function.d.mts +3 -0
- package/declaration/intrinsics/Function.d.mts.map +1 -0
- package/declaration/intrinsics/FunctionPrototype.d.mts +10 -0
- package/declaration/intrinsics/FunctionPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/GeneratorFunction.d.mts +3 -0
- package/declaration/intrinsics/GeneratorFunction.d.mts.map +1 -0
- package/declaration/intrinsics/GeneratorFunctionPrototype.d.mts +3 -0
- package/declaration/intrinsics/GeneratorFunctionPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/GeneratorFunctionPrototypePrototype.d.mts +3 -0
- package/declaration/intrinsics/GeneratorFunctionPrototypePrototype.d.mts.map +1 -0
- package/declaration/intrinsics/IteratorPrototype.d.mts +3 -0
- package/declaration/intrinsics/IteratorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/JSON.d.mts +3 -0
- package/declaration/intrinsics/JSON.d.mts.map +1 -0
- package/declaration/intrinsics/Map.d.mts +12 -0
- package/declaration/intrinsics/Map.d.mts.map +1 -0
- package/declaration/intrinsics/MapIteratorPrototype.d.mts +7 -0
- package/declaration/intrinsics/MapIteratorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/MapPrototype.d.mts +3 -0
- package/declaration/intrinsics/MapPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Math.d.mts +4 -0
- package/declaration/intrinsics/Math.d.mts.map +1 -0
- package/declaration/intrinsics/NativeError.d.mts +6 -0
- package/declaration/intrinsics/NativeError.d.mts.map +1 -0
- package/declaration/intrinsics/Number.d.mts +7 -0
- package/declaration/intrinsics/Number.d.mts.map +1 -0
- package/declaration/intrinsics/NumberPrototype.d.mts +3 -0
- package/declaration/intrinsics/NumberPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Object.d.mts +3 -0
- package/declaration/intrinsics/Object.d.mts.map +1 -0
- package/declaration/intrinsics/ObjectPrototype.d.mts +3 -0
- package/declaration/intrinsics/ObjectPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Promise.d.mts +12 -0
- package/declaration/intrinsics/Promise.d.mts.map +1 -0
- package/declaration/intrinsics/PromisePrototype.d.mts +3 -0
- package/declaration/intrinsics/PromisePrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Proxy.d.mts +11 -0
- package/declaration/intrinsics/Proxy.d.mts.map +1 -0
- package/declaration/intrinsics/Reflect.d.mts +3 -0
- package/declaration/intrinsics/Reflect.d.mts.map +1 -0
- package/declaration/intrinsics/RegExp.d.mts +12 -0
- package/declaration/intrinsics/RegExp.d.mts.map +1 -0
- package/declaration/intrinsics/RegExpPrototype.d.mts +18 -0
- package/declaration/intrinsics/RegExpPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/RegExpStringIteratorPrototype.d.mts +7 -0
- package/declaration/intrinsics/RegExpStringIteratorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Set.d.mts +7 -0
- package/declaration/intrinsics/Set.d.mts.map +1 -0
- package/declaration/intrinsics/SetIteratorPrototype.d.mts +7 -0
- package/declaration/intrinsics/SetIteratorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/SetPrototype.d.mts +3 -0
- package/declaration/intrinsics/SetPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/String.d.mts +9 -0
- package/declaration/intrinsics/String.d.mts.map +1 -0
- package/declaration/intrinsics/StringIteratorPrototype.d.mts +3 -0
- package/declaration/intrinsics/StringIteratorPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/StringPrototype.d.mts +3 -0
- package/declaration/intrinsics/StringPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/Symbol.d.mts +12 -0
- package/declaration/intrinsics/Symbol.d.mts.map +1 -0
- package/declaration/intrinsics/SymbolPrototype.d.mts +3 -0
- package/declaration/intrinsics/SymbolPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/ThrowTypeError.d.mts +3 -0
- package/declaration/intrinsics/ThrowTypeError.d.mts.map +1 -0
- package/declaration/intrinsics/TypedArray.d.mts +181 -0
- package/declaration/intrinsics/TypedArray.d.mts.map +1 -0
- package/declaration/intrinsics/TypedArrayConstructors.d.mts +3 -0
- package/declaration/intrinsics/TypedArrayConstructors.d.mts.map +1 -0
- package/declaration/intrinsics/TypedArrayPrototype.d.mts +3 -0
- package/declaration/intrinsics/TypedArrayPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/TypedArrayPrototypes.d.mts +4 -0
- package/declaration/intrinsics/TypedArrayPrototypes.d.mts.map +1 -0
- package/declaration/intrinsics/URIHandling.d.mts +3 -0
- package/declaration/intrinsics/URIHandling.d.mts.map +1 -0
- package/declaration/intrinsics/WeakMap.d.mts +11 -0
- package/declaration/intrinsics/WeakMap.d.mts.map +1 -0
- package/declaration/intrinsics/WeakMapPrototype.d.mts +3 -0
- package/declaration/intrinsics/WeakMapPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/WeakRef.d.mts +8 -0
- package/declaration/intrinsics/WeakRef.d.mts.map +1 -0
- package/declaration/intrinsics/WeakRefPrototype.d.mts +3 -0
- package/declaration/intrinsics/WeakRefPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/WeakSet.d.mts +8 -0
- package/declaration/intrinsics/WeakSet.d.mts.map +1 -0
- package/declaration/intrinsics/WeakSetPrototype.d.mts +3 -0
- package/declaration/intrinsics/WeakSetPrototype.d.mts.map +1 -0
- package/declaration/intrinsics/bootstrap.d.mts +14 -0
- package/declaration/intrinsics/bootstrap.d.mts.map +1 -0
- package/declaration/intrinsics/eval.d.mts +3 -0
- package/declaration/intrinsics/eval.d.mts.map +1 -0
- package/declaration/intrinsics/isFinite.d.mts +3 -0
- package/declaration/intrinsics/isFinite.d.mts.map +1 -0
- package/declaration/intrinsics/isNaN.d.mts +3 -0
- package/declaration/intrinsics/isNaN.d.mts.map +1 -0
- package/declaration/intrinsics/parseFloat.d.mts +3 -0
- package/declaration/intrinsics/parseFloat.d.mts.map +1 -0
- package/declaration/intrinsics/parseInt.d.mts +3 -0
- package/declaration/intrinsics/parseInt.d.mts.map +1 -0
- package/declaration/messages.d.mts +160 -0
- package/declaration/messages.d.mts.map +1 -0
- package/declaration/modules.d.mts +115 -0
- package/declaration/modules.d.mts.map +1 -0
- package/declaration/parse.d.mts +34 -0
- package/declaration/parse.d.mts.map +1 -0
- package/declaration/parser/BaseParser.d.mts +24 -0
- package/declaration/parser/BaseParser.d.mts.map +1 -0
- package/declaration/parser/ExpressionParser.d.mts +52 -0
- package/declaration/parser/ExpressionParser.d.mts.map +1 -0
- package/declaration/parser/FunctionParser.d.mts +43 -0
- package/declaration/parser/FunctionParser.d.mts.map +1 -0
- package/declaration/parser/IdentifierParser.d.mts +12 -0
- package/declaration/parser/IdentifierParser.d.mts.map +1 -0
- package/declaration/parser/LanguageParser.d.mts +10 -0
- package/declaration/parser/LanguageParser.d.mts.map +1 -0
- package/declaration/parser/Lexer.d.mts +71 -0
- package/declaration/parser/Lexer.d.mts.map +1 -0
- package/declaration/parser/ModuleParser.d.mts +16 -0
- package/declaration/parser/ModuleParser.d.mts.map +1 -0
- package/declaration/parser/ParseNode.d.mts +976 -0
- package/declaration/parser/ParseNode.d.mts.map +1 -0
- package/declaration/parser/Parser.d.mts +32 -0
- package/declaration/parser/Parser.d.mts.map +1 -0
- package/declaration/parser/RegExpParser.d.mts +46 -0
- package/declaration/parser/RegExpParser.d.mts.map +1 -0
- package/declaration/parser/Scope.d.mts +106 -0
- package/declaration/parser/Scope.d.mts.map +1 -0
- package/declaration/parser/StatementParser.d.mts +49 -0
- package/declaration/parser/StatementParser.d.mts.map +1 -0
- package/declaration/parser/tokens.d.mts +32 -0
- package/declaration/parser/tokens.d.mts.map +1 -0
- package/declaration/runtime-semantics/AdditiveExpression.d.mts +3 -0
- package/declaration/runtime-semantics/AdditiveExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/ApplyStringOrNumericBinaryOperator.d.mts +11 -0
- package/declaration/runtime-semantics/ApplyStringOrNumericBinaryOperator.d.mts.map +1 -0
- package/declaration/runtime-semantics/ArgumentListEvaluation.d.mts +6 -0
- package/declaration/runtime-semantics/ArgumentListEvaluation.d.mts.map +1 -0
- package/declaration/runtime-semantics/ArrayLiteral.d.mts +5 -0
- package/declaration/runtime-semantics/ArrayLiteral.d.mts.map +1 -0
- package/declaration/runtime-semantics/ArrowFunction.d.mts +4 -0
- package/declaration/runtime-semantics/ArrowFunction.d.mts.map +1 -0
- package/declaration/runtime-semantics/AssignmentExpression.d.mts +14 -0
- package/declaration/runtime-semantics/AssignmentExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/AsyncArrowFunction.d.mts +4 -0
- package/declaration/runtime-semantics/AsyncArrowFunction.d.mts.map +1 -0
- package/declaration/runtime-semantics/AsyncFunctionExpression.d.mts +4 -0
- package/declaration/runtime-semantics/AsyncFunctionExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/AsyncGeneratorExpression.d.mts +4 -0
- package/declaration/runtime-semantics/AsyncGeneratorExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/AwaitExpression.d.mts +5 -0
- package/declaration/runtime-semantics/AwaitExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/BindingInitialization.d.mts +8 -0
- package/declaration/runtime-semantics/BindingInitialization.d.mts.map +1 -0
- package/declaration/runtime-semantics/BitwiseOperators.d.mts +5 -0
- package/declaration/runtime-semantics/BitwiseOperators.d.mts.map +1 -0
- package/declaration/runtime-semantics/Block.d.mts +20 -0
- package/declaration/runtime-semantics/Block.d.mts.map +1 -0
- package/declaration/runtime-semantics/BreakStatement.d.mts +4 -0
- package/declaration/runtime-semantics/BreakStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/BreakableStatement.d.mts +4 -0
- package/declaration/runtime-semantics/BreakableStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/CallExpression.d.mts +5 -0
- package/declaration/runtime-semantics/CallExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/ClassDeclaration.d.mts +8 -0
- package/declaration/runtime-semantics/ClassDeclaration.d.mts.map +1 -0
- package/declaration/runtime-semantics/ClassDefinitionEvaluation.d.mts +12 -0
- package/declaration/runtime-semantics/ClassDefinitionEvaluation.d.mts.map +1 -0
- package/declaration/runtime-semantics/ClassExpression.d.mts +5 -0
- package/declaration/runtime-semantics/ClassExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/ClassFieldDefinitionEvaluation.d.mts +10 -0
- package/declaration/runtime-semantics/ClassFieldDefinitionEvaluation.d.mts.map +1 -0
- package/declaration/runtime-semantics/ClassStaticBlockDefinitionEvaluation.d.mts +10 -0
- package/declaration/runtime-semantics/ClassStaticBlockDefinitionEvaluation.d.mts.map +1 -0
- package/declaration/runtime-semantics/CoalesceExpression.d.mts +5 -0
- package/declaration/runtime-semantics/CoalesceExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/CommaOperator.d.mts +5 -0
- package/declaration/runtime-semantics/CommaOperator.d.mts.map +1 -0
- package/declaration/runtime-semantics/ConditionalExpression.d.mts +5 -0
- package/declaration/runtime-semantics/ConditionalExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/ContinueStatement.d.mts +4 -0
- package/declaration/runtime-semantics/ContinueStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/CreateDynamicFunction.d.mts +10 -0
- package/declaration/runtime-semantics/CreateDynamicFunction.d.mts.map +1 -0
- package/declaration/runtime-semantics/DebuggerStatement.d.mts +5 -0
- package/declaration/runtime-semantics/DebuggerStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/DefineMethod.d.mts +10 -0
- package/declaration/runtime-semantics/DefineMethod.d.mts.map +1 -0
- package/declaration/runtime-semantics/DestructuringAssignmentEvaluation.d.mts +5 -0
- package/declaration/runtime-semantics/DestructuringAssignmentEvaluation.d.mts.map +1 -0
- package/declaration/runtime-semantics/EmptyStatement.d.mts +5 -0
- package/declaration/runtime-semantics/EmptyStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/EqualityExpression.d.mts +5 -0
- package/declaration/runtime-semantics/EqualityExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/EvaluateBody.d.mts +69 -0
- package/declaration/runtime-semantics/EvaluateBody.d.mts.map +1 -0
- package/declaration/runtime-semantics/EvaluateCall.d.mts +11 -0
- package/declaration/runtime-semantics/EvaluateCall.d.mts.map +1 -0
- package/declaration/runtime-semantics/EvaluatePropertyAccess.d.mts +9 -0
- package/declaration/runtime-semantics/EvaluatePropertyAccess.d.mts.map +1 -0
- package/declaration/runtime-semantics/EvaluateStringOrNumericBinaryExpression.d.mts +6 -0
- package/declaration/runtime-semantics/EvaluateStringOrNumericBinaryExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/ExponentiationExpression.d.mts +5 -0
- package/declaration/runtime-semantics/ExponentiationExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/ExportDeclaration.d.mts +17 -0
- package/declaration/runtime-semantics/ExportDeclaration.d.mts.map +1 -0
- package/declaration/runtime-semantics/ExpressionStatement.d.mts +5 -0
- package/declaration/runtime-semantics/ExpressionStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/FunctionDeclaration.d.mts +5 -0
- package/declaration/runtime-semantics/FunctionDeclaration.d.mts.map +1 -0
- package/declaration/runtime-semantics/FunctionDeclarationInstantiation.d.mts +6 -0
- package/declaration/runtime-semantics/FunctionDeclarationInstantiation.d.mts.map +1 -0
- package/declaration/runtime-semantics/FunctionExpression.d.mts +4 -0
- package/declaration/runtime-semantics/FunctionExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/FunctionStatementList.d.mts +15 -0
- package/declaration/runtime-semantics/FunctionStatementList.d.mts.map +1 -0
- package/declaration/runtime-semantics/GeneratorExpression.d.mts +4 -0
- package/declaration/runtime-semantics/GeneratorExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/GetSubstitution.d.mts +5 -0
- package/declaration/runtime-semantics/GetSubstitution.d.mts.map +1 -0
- package/declaration/runtime-semantics/GlobalDeclarationInstantiation.d.mts +12 -0
- package/declaration/runtime-semantics/GlobalDeclarationInstantiation.d.mts.map +1 -0
- package/declaration/runtime-semantics/HoistableDeclaration.d.mts +5 -0
- package/declaration/runtime-semantics/HoistableDeclaration.d.mts.map +1 -0
- package/declaration/runtime-semantics/IdentifierReference.d.mts +6 -0
- package/declaration/runtime-semantics/IdentifierReference.d.mts.map +1 -0
- package/declaration/runtime-semantics/IfStatement.d.mts +17 -0
- package/declaration/runtime-semantics/IfStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/ImportCall.d.mts +6 -0
- package/declaration/runtime-semantics/ImportCall.d.mts.map +1 -0
- package/declaration/runtime-semantics/ImportDeclaration.d.mts +5 -0
- package/declaration/runtime-semantics/ImportDeclaration.d.mts.map +1 -0
- package/declaration/runtime-semantics/ImportMeta.d.mts +5 -0
- package/declaration/runtime-semantics/ImportMeta.d.mts.map +1 -0
- package/declaration/runtime-semantics/InstantiateArrowFunctionExpression.d.mts +5 -0
- package/declaration/runtime-semantics/InstantiateArrowFunctionExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/InstantiateAsyncArrowFunctionExpression.d.mts +5 -0
- package/declaration/runtime-semantics/InstantiateAsyncArrowFunctionExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/InstantiateAsyncFunctionExpression.d.mts +5 -0
- package/declaration/runtime-semantics/InstantiateAsyncFunctionExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.d.mts +5 -0
- package/declaration/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/InstantiateFunctionObject.d.mts +12 -0
- package/declaration/runtime-semantics/InstantiateFunctionObject.d.mts.map +1 -0
- package/declaration/runtime-semantics/InstantiateGeneratorFunctionExpression.d.mts +5 -0
- package/declaration/runtime-semantics/InstantiateGeneratorFunctionExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/InstantiateOrdinaryFunctionExpression.d.mts +5 -0
- package/declaration/runtime-semantics/InstantiateOrdinaryFunctionExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/IteratorBindingInitialization.d.mts +9 -0
- package/declaration/runtime-semantics/IteratorBindingInitialization.d.mts.map +1 -0
- package/declaration/runtime-semantics/KeyedBindingInitialization.d.mts +6 -0
- package/declaration/runtime-semantics/KeyedBindingInitialization.d.mts.map +1 -0
- package/declaration/runtime-semantics/LabelledEvaluation.d.mts +9 -0
- package/declaration/runtime-semantics/LabelledEvaluation.d.mts.map +1 -0
- package/declaration/runtime-semantics/LabelledStatement.d.mts +4 -0
- package/declaration/runtime-semantics/LabelledStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/LexicalDeclaration.d.mts +10 -0
- package/declaration/runtime-semantics/LexicalDeclaration.d.mts.map +1 -0
- package/declaration/runtime-semantics/Literal.d.mts +6 -0
- package/declaration/runtime-semantics/Literal.d.mts.map +1 -0
- package/declaration/runtime-semantics/LogicalANDExpression.d.mts +5 -0
- package/declaration/runtime-semantics/LogicalANDExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/LogicalORExpression.d.mts +5 -0
- package/declaration/runtime-semantics/LogicalORExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/MV.d.mts +3 -0
- package/declaration/runtime-semantics/MV.d.mts.map +1 -0
- package/declaration/runtime-semantics/MemberExpression.d.mts +7 -0
- package/declaration/runtime-semantics/MemberExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/MethodDefinitionEvaluation.d.mts +16 -0
- package/declaration/runtime-semantics/MethodDefinitionEvaluation.d.mts.map +1 -0
- package/declaration/runtime-semantics/Module.d.mts +17 -0
- package/declaration/runtime-semantics/Module.d.mts.map +1 -0
- package/declaration/runtime-semantics/ModuleBody.d.mts +15 -0
- package/declaration/runtime-semantics/ModuleBody.d.mts.map +1 -0
- package/declaration/runtime-semantics/MultiplicativeExpression.d.mts +5 -0
- package/declaration/runtime-semantics/MultiplicativeExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/NamedEvaluation.d.mts +4 -0
- package/declaration/runtime-semantics/NamedEvaluation.d.mts.map +1 -0
- package/declaration/runtime-semantics/NewExpression.d.mts +5 -0
- package/declaration/runtime-semantics/NewExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/NewTarget.d.mts +3 -0
- package/declaration/runtime-semantics/NewTarget.d.mts.map +1 -0
- package/declaration/runtime-semantics/NumberToBigInt.d.mts +10 -0
- package/declaration/runtime-semantics/NumberToBigInt.d.mts.map +1 -0
- package/declaration/runtime-semantics/ObjectLiteral.d.mts +5 -0
- package/declaration/runtime-semantics/ObjectLiteral.d.mts.map +1 -0
- package/declaration/runtime-semantics/OptionalExpression.d.mts +5 -0
- package/declaration/runtime-semantics/OptionalExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/ParenthesizedExpression.d.mts +4 -0
- package/declaration/runtime-semantics/ParenthesizedExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/PropertyBindingInitialization.d.mts +6 -0
- package/declaration/runtime-semantics/PropertyBindingInitialization.d.mts.map +1 -0
- package/declaration/runtime-semantics/PropertyDefinitionEvaluation.d.mts +7 -0
- package/declaration/runtime-semantics/PropertyDefinitionEvaluation.d.mts.map +1 -0
- package/declaration/runtime-semantics/PropertyName.d.mts +6 -0
- package/declaration/runtime-semantics/PropertyName.d.mts.map +1 -0
- package/declaration/runtime-semantics/RegExp.d.mts +17 -0
- package/declaration/runtime-semantics/RegExp.d.mts.map +1 -0
- package/declaration/runtime-semantics/RegularExpressionLiteral.d.mts +4 -0
- package/declaration/runtime-semantics/RegularExpressionLiteral.d.mts.map +1 -0
- package/declaration/runtime-semantics/RelationalExpression.d.mts +26 -0
- package/declaration/runtime-semantics/RelationalExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/RestBindingInitialization.d.mts +5 -0
- package/declaration/runtime-semantics/RestBindingInitialization.d.mts.map +1 -0
- package/declaration/runtime-semantics/ReturnStatement.d.mts +6 -0
- package/declaration/runtime-semantics/ReturnStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/Script.d.mts +17 -0
- package/declaration/runtime-semantics/Script.d.mts.map +1 -0
- package/declaration/runtime-semantics/ScriptBody.d.mts +14 -0
- package/declaration/runtime-semantics/ScriptBody.d.mts.map +1 -0
- package/declaration/runtime-semantics/ShiftExpression.d.mts +7 -0
- package/declaration/runtime-semantics/ShiftExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/StatementList.d.mts +16 -0
- package/declaration/runtime-semantics/StatementList.d.mts.map +1 -0
- package/declaration/runtime-semantics/StringIndexOf.d.mts +3 -0
- package/declaration/runtime-semantics/StringIndexOf.d.mts.map +1 -0
- package/declaration/runtime-semantics/StringPad.d.mts +5 -0
- package/declaration/runtime-semantics/StringPad.d.mts.map +1 -0
- package/declaration/runtime-semantics/SuperCall.d.mts +11 -0
- package/declaration/runtime-semantics/SuperCall.d.mts.map +1 -0
- package/declaration/runtime-semantics/SuperProperty.d.mts +5 -0
- package/declaration/runtime-semantics/SuperProperty.d.mts.map +1 -0
- package/declaration/runtime-semantics/SwitchStatement.d.mts +20 -0
- package/declaration/runtime-semantics/SwitchStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/TaggedTemplateExpression.d.mts +5 -0
- package/declaration/runtime-semantics/TaggedTemplateExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/TemplateLiteral.d.mts +5 -0
- package/declaration/runtime-semantics/TemplateLiteral.d.mts.map +1 -0
- package/declaration/runtime-semantics/This.d.mts +5 -0
- package/declaration/runtime-semantics/This.d.mts.map +1 -0
- package/declaration/runtime-semantics/ThrowStatement.d.mts +10 -0
- package/declaration/runtime-semantics/ThrowStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/TrimString.d.mts +5 -0
- package/declaration/runtime-semantics/TrimString.d.mts.map +1 -0
- package/declaration/runtime-semantics/TryStatement.d.mts +16 -0
- package/declaration/runtime-semantics/TryStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/UnaryExpression.d.mts +4 -0
- package/declaration/runtime-semantics/UnaryExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/Unicode.d.mts +118 -0
- package/declaration/runtime-semantics/Unicode.d.mts.map +1 -0
- package/declaration/runtime-semantics/UpdateExpression.d.mts +4 -0
- package/declaration/runtime-semantics/UpdateExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/VariableStatement.d.mts +9 -0
- package/declaration/runtime-semantics/VariableStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/WithStatement.d.mts +16 -0
- package/declaration/runtime-semantics/WithStatement.d.mts.map +1 -0
- package/declaration/runtime-semantics/YieldExpression.d.mts +6 -0
- package/declaration/runtime-semantics/YieldExpression.d.mts.map +1 -0
- package/declaration/runtime-semantics/all.d.mts +109 -0
- package/declaration/runtime-semantics/all.d.mts.map +1 -0
- package/declaration/static-semantics/BodyText.d.mts +4 -0
- package/declaration/static-semantics/BodyText.d.mts.map +1 -0
- package/declaration/static-semantics/BoundNames.d.mts +4 -0
- package/declaration/static-semantics/BoundNames.d.mts.map +1 -0
- package/declaration/static-semantics/CharacterValue.d.mts +3 -0
- package/declaration/static-semantics/CharacterValue.d.mts.map +1 -0
- package/declaration/static-semantics/CodePointAt.d.mts +7 -0
- package/declaration/static-semantics/CodePointAt.d.mts.map +1 -0
- package/declaration/static-semantics/CodePointsToString.d.mts +3 -0
- package/declaration/static-semantics/CodePointsToString.d.mts.map +1 -0
- package/declaration/static-semantics/ConstructorMethod.d.mts +4 -0
- package/declaration/static-semantics/ConstructorMethod.d.mts.map +1 -0
- package/declaration/static-semantics/ContainsArguments.d.mts +4 -0
- package/declaration/static-semantics/ContainsArguments.d.mts.map +1 -0
- package/declaration/static-semantics/ContainsExpression.d.mts +3 -0
- package/declaration/static-semantics/ContainsExpression.d.mts.map +1 -0
- package/declaration/static-semantics/DeclarationPart.d.mts +3 -0
- package/declaration/static-semantics/DeclarationPart.d.mts.map +1 -0
- package/declaration/static-semantics/ExpectedArgumentCount.d.mts +3 -0
- package/declaration/static-semantics/ExpectedArgumentCount.d.mts.map +1 -0
- package/declaration/static-semantics/ExportEntries.d.mts +10 -0
- package/declaration/static-semantics/ExportEntries.d.mts.map +1 -0
- package/declaration/static-semantics/ExportEntriesForModule.d.mts +5 -0
- package/declaration/static-semantics/ExportEntriesForModule.d.mts.map +1 -0
- package/declaration/static-semantics/FlagText.d.mts +4 -0
- package/declaration/static-semantics/FlagText.d.mts.map +1 -0
- package/declaration/static-semantics/HasInitializer.d.mts +5 -0
- package/declaration/static-semantics/HasInitializer.d.mts.map +1 -0
- package/declaration/static-semantics/HasName.d.mts +3 -0
- package/declaration/static-semantics/HasName.d.mts.map +1 -0
- package/declaration/static-semantics/ImportEntries.d.mts +9 -0
- package/declaration/static-semantics/ImportEntries.d.mts.map +1 -0
- package/declaration/static-semantics/ImportEntriesForModule.d.mts +5 -0
- package/declaration/static-semantics/ImportEntriesForModule.d.mts.map +1 -0
- package/declaration/static-semantics/ImportedLocalNames.d.mts +4 -0
- package/declaration/static-semantics/ImportedLocalNames.d.mts.map +1 -0
- package/declaration/static-semantics/IsAnonymousFunctionDefinition.d.mts +4 -0
- package/declaration/static-semantics/IsAnonymousFunctionDefinition.d.mts.map +1 -0
- package/declaration/static-semantics/IsComputedPropertyKey.d.mts +3 -0
- package/declaration/static-semantics/IsComputedPropertyKey.d.mts.map +1 -0
- package/declaration/static-semantics/IsConstantDeclaration.d.mts +3 -0
- package/declaration/static-semantics/IsConstantDeclaration.d.mts.map +1 -0
- package/declaration/static-semantics/IsDestructuring.d.mts +4 -0
- package/declaration/static-semantics/IsDestructuring.d.mts.map +1 -0
- package/declaration/static-semantics/IsFunctionDefinition.d.mts +6 -0
- package/declaration/static-semantics/IsFunctionDefinition.d.mts.map +1 -0
- package/declaration/static-semantics/IsIdentifierRef.d.mts +3 -0
- package/declaration/static-semantics/IsIdentifierRef.d.mts.map +1 -0
- package/declaration/static-semantics/IsInTailPosition.d.mts +3 -0
- package/declaration/static-semantics/IsInTailPosition.d.mts.map +1 -0
- package/declaration/static-semantics/IsSimpleParameterList.d.mts +3 -0
- package/declaration/static-semantics/IsSimpleParameterList.d.mts.map +1 -0
- package/declaration/static-semantics/IsStatic.d.mts +4 -0
- package/declaration/static-semantics/IsStatic.d.mts.map +1 -0
- package/declaration/static-semantics/IsStrict.d.mts +4 -0
- package/declaration/static-semantics/IsStrict.d.mts.map +1 -0
- package/declaration/static-semantics/IsStringWellFormedUnicode.d.mts +3 -0
- package/declaration/static-semantics/IsStringWellFormedUnicode.d.mts.map +1 -0
- package/declaration/static-semantics/LexicallyDeclaredNames.d.mts +4 -0
- package/declaration/static-semantics/LexicallyDeclaredNames.d.mts.map +1 -0
- package/declaration/static-semantics/LexicallyScopedDeclarations.d.mts +3 -0
- package/declaration/static-semantics/LexicallyScopedDeclarations.d.mts.map +1 -0
- package/declaration/static-semantics/ModuleRequests.d.mts +4 -0
- package/declaration/static-semantics/ModuleRequests.d.mts.map +1 -0
- package/declaration/static-semantics/NonConstructorElements.d.mts +4 -0
- package/declaration/static-semantics/NonConstructorElements.d.mts.map +1 -0
- package/declaration/static-semantics/NumericValue.d.mts +4 -0
- package/declaration/static-semantics/NumericValue.d.mts.map +1 -0
- package/declaration/static-semantics/PrivateBoundIdentifiers.d.mts +5 -0
- package/declaration/static-semantics/PrivateBoundIdentifiers.d.mts.map +1 -0
- package/declaration/static-semantics/PropName.d.mts +3 -0
- package/declaration/static-semantics/PropName.d.mts.map +1 -0
- package/declaration/static-semantics/StringToCodePoints.d.mts +3 -0
- package/declaration/static-semantics/StringToCodePoints.d.mts.map +1 -0
- package/declaration/static-semantics/StringValue.d.mts +3 -0
- package/declaration/static-semantics/StringValue.d.mts.map +1 -0
- package/declaration/static-semantics/TemplateStrings.d.mts +4 -0
- package/declaration/static-semantics/TemplateStrings.d.mts.map +1 -0
- package/declaration/static-semantics/TopLevelLexicallyDeclaredNames.d.mts +4 -0
- package/declaration/static-semantics/TopLevelLexicallyDeclaredNames.d.mts.map +1 -0
- package/declaration/static-semantics/TopLevelLexicallyScopedDeclarations.d.mts +4 -0
- package/declaration/static-semantics/TopLevelLexicallyScopedDeclarations.d.mts.map +1 -0
- package/declaration/static-semantics/TopLevelVarDeclaredNames.d.mts +4 -0
- package/declaration/static-semantics/TopLevelVarDeclaredNames.d.mts.map +1 -0
- package/declaration/static-semantics/TopLevelVarScopedDeclarations.d.mts +4 -0
- package/declaration/static-semantics/TopLevelVarScopedDeclarations.d.mts.map +1 -0
- package/declaration/static-semantics/UTF16EncodeCodePoint.d.mts +3 -0
- package/declaration/static-semantics/UTF16EncodeCodePoint.d.mts.map +1 -0
- package/declaration/static-semantics/UTF16SurrogatePairToCodePoint.d.mts +3 -0
- package/declaration/static-semantics/UTF16SurrogatePairToCodePoint.d.mts.map +1 -0
- package/declaration/static-semantics/VarDeclaredNames.d.mts +4 -0
- package/declaration/static-semantics/VarDeclaredNames.d.mts.map +1 -0
- package/declaration/static-semantics/VarScopedDeclarations.d.mts +4 -0
- package/declaration/static-semantics/VarScopedDeclarations.d.mts.map +1 -0
- package/declaration/static-semantics/all.d.mts +48 -0
- package/declaration/static-semantics/all.d.mts.map +1 -0
- package/declaration/value.d.mts +283 -0
- package/declaration/value.d.mts.map +1 -0
- package/lib/engine262.js +58136 -0
- package/lib/engine262.js.map +1 -0
- package/lib/engine262.mjs +57577 -0
- package/lib/engine262.mjs.map +1 -0
- package/lib/inspector/context.d.mts +17 -0
- package/lib/inspector/context.d.mts.map +1 -0
- package/lib/inspector/context.mjs +343 -0
- package/lib/inspector/context.mjs.map +1 -0
- package/lib/inspector/index.d.mts +15 -0
- package/lib/inspector/index.d.mts.map +1 -0
- package/lib/inspector/index.mjs +64 -0
- package/lib/inspector/index.mjs.map +1 -0
- package/lib/inspector/methods.d.mts +6 -0
- package/lib/inspector/methods.d.mts.map +1 -0
- package/lib/inspector/methods.mjs +117 -0
- package/lib/inspector/methods.mjs.map +1 -0
- package/lib/inspector/types.d.mts +208 -0
- package/lib/inspector/types.d.mts.map +1 -0
- package/lib/inspector/types.mjs +2 -0
- package/lib/inspector/types.mjs.map +1 -0
- package/lib/inspector/utils.d.mts +7 -0
- package/lib/inspector/utils.d.mts.map +1 -0
- package/lib/inspector/utils.mjs +72 -0
- package/lib/inspector/utils.mjs.map +1 -0
- package/lib/inspector.js +682 -0
- package/lib/inspector.js.map +1 -0
- package/lib/inspector.mjs +674 -0
- package/lib/inspector.mjs.map +1 -0
- package/lib/node/bin.d.mts +3 -0
- package/lib/node/bin.d.mts.map +1 -0
- package/lib/node/bin.mjs +194 -0
- package/lib/node/bin.mjs.map +1 -0
- package/lib/node/inspector.d.mts +15 -0
- package/lib/node/inspector.d.mts.map +1 -0
- package/lib/node/inspector.mjs +112 -0
- package/lib/node/inspector.mjs.map +1 -0
- package/lib/node/module.d.mts +7 -0
- package/lib/node/module.d.mts.map +1 -0
- package/lib/node/module.mjs +61 -0
- package/lib/node/module.mjs.map +1 -0
- package/lib-src/inspector/context.mts +370 -0
- package/lib-src/inspector/index.mts +79 -0
- package/lib-src/inspector/js_protocol.json +3288 -0
- package/lib-src/inspector/methods.mts +123 -0
- package/lib-src/inspector/tsconfig.json +23 -0
- package/lib-src/inspector/types.mts +213 -0
- package/lib-src/inspector/utils.mts +86 -0
- package/lib-src/node/bin.mts +200 -0
- package/lib-src/node/inspector.mts +124 -0
- package/lib-src/node/module.mts +64 -0
- package/lib-src/node/tsconfig.json +20 -0
- package/package.json +127 -0
- package/src/abstract-ops/all.mts +34 -0
- package/src/abstract-ops/arguments-operations.mts +246 -0
- package/src/abstract-ops/array-objects.mts +316 -0
- package/src/abstract-ops/arraybuffer-objects.mts +247 -0
- package/src/abstract-ops/async-function-operations.mts +43 -0
- package/src/abstract-ops/async-generator-objects.mts +383 -0
- package/src/abstract-ops/data-types-and-values.mts +43 -0
- package/src/abstract-ops/dataview-objects.mts +151 -0
- package/src/abstract-ops/date-objects.mts +232 -0
- package/src/abstract-ops/error-objects.mts +26 -0
- package/src/abstract-ops/execution-contexts.mts +80 -0
- package/src/abstract-ops/function-operations.mts +606 -0
- package/src/abstract-ops/generator-operations.mts +291 -0
- package/src/abstract-ops/global-object.mts +386 -0
- package/src/abstract-ops/immutable-prototype-objects.mts +20 -0
- package/src/abstract-ops/import-calls.mts +73 -0
- package/src/abstract-ops/iterator-operations.mts +306 -0
- package/src/abstract-ops/module-namespace-exotic-objects.mts +223 -0
- package/src/abstract-ops/module-records.mts +458 -0
- package/src/abstract-ops/notational-conventions.mts +53 -0
- package/src/abstract-ops/object-operations.mts +468 -0
- package/src/abstract-ops/objects.mts +435 -0
- package/src/abstract-ops/private-names.mts +106 -0
- package/src/abstract-ops/promise-operations.mts +478 -0
- package/src/abstract-ops/proxy-objects.mts +585 -0
- package/src/abstract-ops/realms.mts +517 -0
- package/src/abstract-ops/reference-operations.mts +211 -0
- package/src/abstract-ops/regexp-objects.mts +299 -0
- package/src/abstract-ops/spec-types.mts +239 -0
- package/src/abstract-ops/string-objects.mts +156 -0
- package/src/abstract-ops/symbol-objects.mts +30 -0
- package/src/abstract-ops/testing-comparison.mts +387 -0
- package/src/abstract-ops/type-conversion.mts +579 -0
- package/src/abstract-ops/typedarray-objects.mts +402 -0
- package/src/abstract-ops/weak-operations.mts +83 -0
- package/src/api-types.mts +2 -0
- package/src/api.mts +326 -0
- package/src/completion.mts +466 -0
- package/src/data-gen.json +1 -0
- package/src/engine.mts +451 -0
- package/src/environment.mts +1013 -0
- package/src/evaluator.mts +268 -0
- package/src/helpers.mts +538 -0
- package/src/inspect.mts +236 -0
- package/src/intrinsics/AggregateError.mts +64 -0
- package/src/intrinsics/AggregateErrorPrototype.mts +12 -0
- package/src/intrinsics/Array.mts +216 -0
- package/src/intrinsics/ArrayBuffer.mts +48 -0
- package/src/intrinsics/ArrayBufferPrototype.mts +120 -0
- package/src/intrinsics/ArrayIteratorPrototype.mts +25 -0
- package/src/intrinsics/ArrayPrototype.mts +630 -0
- package/src/intrinsics/ArrayPrototypeShared.mts +644 -0
- package/src/intrinsics/AsyncFromSyncIteratorPrototype.mts +163 -0
- package/src/intrinsics/AsyncFunction.mts +31 -0
- package/src/intrinsics/AsyncFunctionPrototype.mts +8 -0
- package/src/intrinsics/AsyncGeneratorFunction.mts +37 -0
- package/src/intrinsics/AsyncGeneratorFunctionPrototype.mts +19 -0
- package/src/intrinsics/AsyncGeneratorFunctionPrototypePrototype.mts +148 -0
- package/src/intrinsics/AsyncIteratorPrototype.mts +17 -0
- package/src/intrinsics/BigInt.mts +69 -0
- package/src/intrinsics/BigIntPrototype.mts +81 -0
- package/src/intrinsics/Boolean.mts +47 -0
- package/src/intrinsics/BooleanPrototype.mts +58 -0
- package/src/intrinsics/DataView.mts +82 -0
- package/src/intrinsics/DataViewPrototype.mts +271 -0
- package/src/intrinsics/Date.mts +215 -0
- package/src/intrinsics/DatePrototype.mts +736 -0
- package/src/intrinsics/Error.mts +59 -0
- package/src/intrinsics/ErrorPrototype.mts +62 -0
- package/src/intrinsics/FinalizationRegistry.mts +64 -0
- package/src/intrinsics/FinalizationRegistryPrototype.mts +109 -0
- package/src/intrinsics/ForInIteratorPrototype.mts +120 -0
- package/src/intrinsics/Function.mts +21 -0
- package/src/intrinsics/FunctionPrototype.mts +272 -0
- package/src/intrinsics/GeneratorFunction.mts +32 -0
- package/src/intrinsics/GeneratorFunctionPrototype.mts +21 -0
- package/src/intrinsics/GeneratorFunctionPrototypePrototype.mts +57 -0
- package/src/intrinsics/IteratorPrototype.mts +17 -0
- package/src/intrinsics/JSON.mts +570 -0
- package/src/intrinsics/Map.mts +98 -0
- package/src/intrinsics/MapIteratorPrototype.mts +79 -0
- package/src/intrinsics/MapPrototype.mts +226 -0
- package/src/intrinsics/Math.mts +178 -0
- package/src/intrinsics/NativeError.mts +82 -0
- package/src/intrinsics/Number.mts +131 -0
- package/src/intrinsics/NumberPrototype.mts +123 -0
- package/src/intrinsics/Object.mts +442 -0
- package/src/intrinsics/ObjectPrototype.mts +297 -0
- package/src/intrinsics/Promise.mts +693 -0
- package/src/intrinsics/PromisePrototype.mts +120 -0
- package/src/intrinsics/Proxy.mts +100 -0
- package/src/intrinsics/Reflect.mts +211 -0
- package/src/intrinsics/RegExp.mts +103 -0
- package/src/intrinsics/RegExpPrototype.mts +803 -0
- package/src/intrinsics/RegExpStringIteratorPrototype.mts +81 -0
- package/src/intrinsics/Set.mts +72 -0
- package/src/intrinsics/SetIteratorPrototype.mts +77 -0
- package/src/intrinsics/SetPrototype.mts +191 -0
- package/src/intrinsics/String.mts +134 -0
- package/src/intrinsics/StringIteratorPrototype.mts +25 -0
- package/src/intrinsics/StringPrototype.mts +833 -0
- package/src/intrinsics/Symbol.mts +103 -0
- package/src/intrinsics/SymbolPrototype.mts +83 -0
- package/src/intrinsics/ThrowTypeError.mts +21 -0
- package/src/intrinsics/TypedArray.mts +574 -0
- package/src/intrinsics/TypedArrayConstructors.mts +85 -0
- package/src/intrinsics/TypedArrayPrototype.mts +648 -0
- package/src/intrinsics/TypedArrayPrototypes.mts +17 -0
- package/src/intrinsics/URIHandling.mts +321 -0
- package/src/intrinsics/WeakMap.mts +56 -0
- package/src/intrinsics/WeakMapPrototype.mts +129 -0
- package/src/intrinsics/WeakRef.mts +42 -0
- package/src/intrinsics/WeakRefPrototype.mts +23 -0
- package/src/intrinsics/WeakSet.mts +66 -0
- package/src/intrinsics/WeakSetPrototype.mts +99 -0
- package/src/intrinsics/bootstrap.mts +145 -0
- package/src/intrinsics/eval.mts +25 -0
- package/src/intrinsics/isFinite.mts +23 -0
- package/src/intrinsics/isNaN.mts +23 -0
- package/src/intrinsics/parseFloat.mts +78 -0
- package/src/intrinsics/parseInt.mts +101 -0
- package/src/messages.mts +176 -0
- package/src/modules.mts +720 -0
- package/src/parse.mts +222 -0
- package/src/parser/BaseParser.mts +36 -0
- package/src/parser/ExpressionParser.mts +1498 -0
- package/src/parser/FunctionParser.mts +389 -0
- package/src/parser/IdentifierParser.mts +144 -0
- package/src/parser/LanguageParser.mts +94 -0
- package/src/parser/Lexer.mts +986 -0
- package/src/parser/ModuleParser.mts +271 -0
- package/src/parser/ParseNode.mts +2510 -0
- package/src/parser/Parser.mts +192 -0
- package/src/parser/RegExpParser.mts +930 -0
- package/src/parser/Scope.mts +535 -0
- package/src/parser/StatementParser.mts +958 -0
- package/src/parser/tokens.mts +212 -0
- package/src/parser/unicode.d.ts +20 -0
- package/src/runtime-semantics/AdditiveExpression.mts +29 -0
- package/src/runtime-semantics/ApplyStringOrNumericBinaryOperator.mts +78 -0
- package/src/runtime-semantics/ArgumentListEvaluation.mts +178 -0
- package/src/runtime-semantics/ArrayLiteral.mts +97 -0
- package/src/runtime-semantics/ArrowFunction.mts +8 -0
- package/src/runtime-semantics/AssignmentExpression.mts +282 -0
- package/src/runtime-semantics/AsyncArrowFunction.mts +8 -0
- package/src/runtime-semantics/AsyncFunctionExpression.mts +11 -0
- package/src/runtime-semantics/AsyncGeneratorExpression.mts +11 -0
- package/src/runtime-semantics/AwaitExpression.mts +17 -0
- package/src/runtime-semantics/BindingInitialization.mts +93 -0
- package/src/runtime-semantics/BitwiseOperators.mts +14 -0
- package/src/runtime-semantics/Block.mts +73 -0
- package/src/runtime-semantics/BreakStatement.mts +18 -0
- package/src/runtime-semantics/BreakableStatement.mts +18 -0
- package/src/runtime-semantics/CallExpression.mts +59 -0
- package/src/runtime-semantics/ClassDeclaration.mts +46 -0
- package/src/runtime-semantics/ClassDefinitionEvaluation.mts +343 -0
- package/src/runtime-semantics/ClassExpression.mts +32 -0
- package/src/runtime-semantics/ClassFieldDefinitionEvaluation.mts +61 -0
- package/src/runtime-semantics/ClassStaticBlockDefinitionEvaluation.mts +44 -0
- package/src/runtime-semantics/CoalesceExpression.mts +24 -0
- package/src/runtime-semantics/CommaOperator.mts +18 -0
- package/src/runtime-semantics/ConditionalExpression.mts +31 -0
- package/src/runtime-semantics/ContinueStatement.mts +18 -0
- package/src/runtime-semantics/CreateDynamicFunction.mts +200 -0
- package/src/runtime-semantics/DebuggerStatement.mts +20 -0
- package/src/runtime-semantics/DefineMethod.mts +42 -0
- package/src/runtime-semantics/DestructuringAssignmentEvaluation.mts +311 -0
- package/src/runtime-semantics/EmptyStatement.mts +9 -0
- package/src/runtime-semantics/EqualityExpression.mts +61 -0
- package/src/runtime-semantics/EvaluateBody.mts +196 -0
- package/src/runtime-semantics/EvaluateCall.mts +63 -0
- package/src/runtime-semantics/EvaluatePropertyAccess.mts +47 -0
- package/src/runtime-semantics/EvaluateStringOrNumericBinaryExpression.mts +19 -0
- package/src/runtime-semantics/ExponentiationExpression.mts +11 -0
- package/src/runtime-semantics/ExportDeclaration.mts +90 -0
- package/src/runtime-semantics/ExpressionStatement.mts +14 -0
- package/src/runtime-semantics/FunctionDeclaration.mts +11 -0
- package/src/runtime-semantics/FunctionDeclarationInstantiation.mts +272 -0
- package/src/runtime-semantics/FunctionExpression.mts +11 -0
- package/src/runtime-semantics/FunctionStatementList.mts +11 -0
- package/src/runtime-semantics/GeneratorExpression.mts +11 -0
- package/src/runtime-semantics/GetSubstitution.mts +119 -0
- package/src/runtime-semantics/GlobalDeclarationInstantiation.mts +146 -0
- package/src/runtime-semantics/HoistableDeclaration.mts +12 -0
- package/src/runtime-semantics/IdentifierReference.mts +15 -0
- package/src/runtime-semantics/IfStatement.mts +49 -0
- package/src/runtime-semantics/ImportCall.mts +43 -0
- package/src/runtime-semantics/ImportDeclaration.mts +9 -0
- package/src/runtime-semantics/ImportMeta.mts +45 -0
- package/src/runtime-semantics/InstantiateArrowFunctionExpression.mts +35 -0
- package/src/runtime-semantics/InstantiateAsyncArrowFunctionExpression.mts +37 -0
- package/src/runtime-semantics/InstantiateAsyncFunctionExpression.mts +75 -0
- package/src/runtime-semantics/InstantiateAsyncGeneratorFunctionExpression.mts +90 -0
- package/src/runtime-semantics/InstantiateFunctionObject.mts +123 -0
- package/src/runtime-semantics/InstantiateGeneratorFunctionExpression.mts +82 -0
- package/src/runtime-semantics/InstantiateOrdinaryFunctionExpression.mts +64 -0
- package/src/runtime-semantics/IteratorBindingInitialization.mts +214 -0
- package/src/runtime-semantics/KeyedBindingInitialization.mts +61 -0
- package/src/runtime-semantics/LabelledEvaluation.mts +753 -0
- package/src/runtime-semantics/LabelledStatement.mts +11 -0
- package/src/runtime-semantics/LexicalDeclaration.mts +96 -0
- package/src/runtime-semantics/Literal.mts +36 -0
- package/src/runtime-semantics/LogicalANDExpression.mts +25 -0
- package/src/runtime-semantics/LogicalORExpression.mts +25 -0
- package/src/runtime-semantics/MV.mts +10 -0
- package/src/runtime-semantics/MemberExpression.mts +73 -0
- package/src/runtime-semantics/MethodDefinitionEvaluation.mts +273 -0
- package/src/runtime-semantics/Module.mts +15 -0
- package/src/runtime-semantics/ModuleBody.mts +10 -0
- package/src/runtime-semantics/MultiplicativeExpression.mts +18 -0
- package/src/runtime-semantics/NamedEvaluation.mts +98 -0
- package/src/runtime-semantics/NewExpression.mts +52 -0
- package/src/runtime-semantics/NewTarget.mts +8 -0
- package/src/runtime-semantics/NumberToBigInt.mts +17 -0
- package/src/runtime-semantics/ObjectLiteral.mts +26 -0
- package/src/runtime-semantics/OptionalExpression.mts +132 -0
- package/src/runtime-semantics/ParenthesizedExpression.mts +8 -0
- package/src/runtime-semantics/PropertyBindingInitialization.mts +46 -0
- package/src/runtime-semantics/PropertyDefinitionEvaluation.mts +124 -0
- package/src/runtime-semantics/PropertyName.mts +62 -0
- package/src/runtime-semantics/RegExp.mts +1187 -0
- package/src/runtime-semantics/RegularExpressionLiteral.mts +16 -0
- package/src/runtime-semantics/RelationalExpression.mts +156 -0
- package/src/runtime-semantics/RestBindingInitialization.mts +29 -0
- package/src/runtime-semantics/ReturnStatement.mts +32 -0
- package/src/runtime-semantics/Script.mts +15 -0
- package/src/runtime-semantics/ScriptBody.mts +7 -0
- package/src/runtime-semantics/ShiftExpression.mts +17 -0
- package/src/runtime-semantics/StatementList.mts +31 -0
- package/src/runtime-semantics/StringIndexOf.mts +43 -0
- package/src/runtime-semantics/StringPad.mts +33 -0
- package/src/runtime-semantics/SuperCall.mts +65 -0
- package/src/runtime-semantics/SuperProperty.mts +61 -0
- package/src/runtime-semantics/SwitchStatement.mts +221 -0
- package/src/runtime-semantics/TaggedTemplateExpression.mts +23 -0
- package/src/runtime-semantics/TemplateLiteral.mts +34 -0
- package/src/runtime-semantics/This.mts +9 -0
- package/src/runtime-semantics/ThrowStatement.mts +22 -0
- package/src/runtime-semantics/TrimString.mts +19 -0
- package/src/runtime-semantics/TryStatement.mts +120 -0
- package/src/runtime-semantics/UnaryExpression.mts +219 -0
- package/src/runtime-semantics/Unicode.mts +555 -0
- package/src/runtime-semantics/UpdateExpression.mts +126 -0
- package/src/runtime-semantics/VariableStatement.mts +72 -0
- package/src/runtime-semantics/WithStatement.mts +33 -0
- package/src/runtime-semantics/YieldExpression.mts +175 -0
- package/src/runtime-semantics/all.mts +108 -0
- package/src/static-semantics/BodyText.mts +7 -0
- package/src/static-semantics/BoundNames.mts +101 -0
- package/src/static-semantics/CharacterValue.mts +92 -0
- package/src/static-semantics/CodePointAt.mts +53 -0
- package/src/static-semantics/CodePointsToString.mts +16 -0
- package/src/static-semantics/ConstructorMethod.mts +10 -0
- package/src/static-semantics/ContainsArguments.mts +33 -0
- package/src/static-semantics/ContainsExpression.mts +59 -0
- package/src/static-semantics/DeclarationPart.mts +5 -0
- package/src/static-semantics/ExpectedArgumentCount.mts +26 -0
- package/src/static-semantics/ExportEntries.mts +127 -0
- package/src/static-semantics/ExportEntriesForModule.mts +63 -0
- package/src/static-semantics/FlagText.mts +7 -0
- package/src/static-semantics/HasInitializer.mts +5 -0
- package/src/static-semantics/HasName.mts +8 -0
- package/src/static-semantics/ImportEntries.mts +36 -0
- package/src/static-semantics/ImportEntriesForModule.mts +95 -0
- package/src/static-semantics/ImportedLocalNames.mts +14 -0
- package/src/static-semantics/IsAnonymousFunctionDefinition.mts +18 -0
- package/src/static-semantics/IsComputedPropertyKey.mts +7 -0
- package/src/static-semantics/IsConstantDeclaration.mts +5 -0
- package/src/static-semantics/IsDestructuring.mts +21 -0
- package/src/static-semantics/IsFunctionDefinition.mts +15 -0
- package/src/static-semantics/IsIdentifierRef.mts +5 -0
- package/src/static-semantics/IsInTailPosition.mts +5 -0
- package/src/static-semantics/IsSimpleParameterList.mts +23 -0
- package/src/static-semantics/IsStatic.mts +10 -0
- package/src/static-semantics/IsStrict.mts +7 -0
- package/src/static-semantics/IsStringWellFormedUnicode.mts +24 -0
- package/src/static-semantics/LexicallyDeclaredNames.mts +26 -0
- package/src/static-semantics/LexicallyScopedDeclarations.mts +82 -0
- package/src/static-semantics/ModuleRequests.mts +34 -0
- package/src/static-semantics/NonConstructorElements.mts +15 -0
- package/src/static-semantics/NumericValue.mts +7 -0
- package/src/static-semantics/PrivateBoundIdentifiers.mts +23 -0
- package/src/static-semantics/PropName.mts +18 -0
- package/src/static-semantics/StringToCodePoints.mts +23 -0
- package/src/static-semantics/StringValue.mts +19 -0
- package/src/static-semantics/TemplateStrings.mts +108 -0
- package/src/static-semantics/TopLevelLexicallyDeclaredNames.mts +21 -0
- package/src/static-semantics/TopLevelLexicallyScopedDeclarations.mts +23 -0
- package/src/static-semantics/TopLevelVarDeclaredNames.mts +26 -0
- package/src/static-semantics/TopLevelVarScopedDeclarations.mts +34 -0
- package/src/static-semantics/UTF16EncodeCodePoint.mts +17 -0
- package/src/static-semantics/UTF16SurrogatePairToCodePoint.mts +12 -0
- package/src/static-semantics/VarDeclaredNames.mts +109 -0
- package/src/static-semantics/VarScopedDeclarations.mts +115 -0
- package/src/static-semantics/all.mts +47 -0
- package/src/syntax-error.d.ts +4 -0
- package/src/tsconfig.json +11 -0
- package/src/value.mts +981 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Await,
|
|
3
|
+
Completion,
|
|
4
|
+
NormalCompletion,
|
|
5
|
+
Q, X,
|
|
6
|
+
EnsureCompletion,
|
|
7
|
+
AbruptCompletion,
|
|
8
|
+
type ExpressionCompletion,
|
|
9
|
+
} from '../completion.mts';
|
|
10
|
+
import { ExecutionContext, surroundingAgent } from '../engine.mts';
|
|
11
|
+
import {
|
|
12
|
+
JSStringValue, ObjectValue, UndefinedValue, Value,
|
|
13
|
+
} from '../value.mts';
|
|
14
|
+
import {
|
|
15
|
+
Evaluate, type YieldEvaluator,
|
|
16
|
+
} from '../evaluator.mts';
|
|
17
|
+
import { __ts_cast__, resume, type Mutable } from '../helpers.mts';
|
|
18
|
+
import type { ParseNode } from '../parser/ParseNode.mts';
|
|
19
|
+
import {
|
|
20
|
+
Assert,
|
|
21
|
+
AsyncGeneratorYield,
|
|
22
|
+
CreateIteratorResultObject,
|
|
23
|
+
OrdinaryObjectCreate,
|
|
24
|
+
RequireInternalSlot,
|
|
25
|
+
SameValue,
|
|
26
|
+
type OrdinaryObject,
|
|
27
|
+
} from './all.mts';
|
|
28
|
+
|
|
29
|
+
/** https://tc39.es/ecma262/#sec-generator-objects */
|
|
30
|
+
export interface GeneratorObject extends OrdinaryObject {
|
|
31
|
+
GeneratorState: 'suspendedStart' | 'suspendedYield' | 'executing' | 'completed' | UndefinedValue;
|
|
32
|
+
GeneratorContext: ExecutionContext | null;
|
|
33
|
+
readonly GeneratorBrand: JSStringValue | undefined;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** https://tc39.es/ecma262/#sec-generatorstart */
|
|
37
|
+
export function GeneratorStart(generator: GeneratorObject, generatorBody: ParseNode.GeneratorBody | (() => YieldEvaluator)): ExpressionCompletion {
|
|
38
|
+
// 1. Assert: The value of generator.[[GeneratorState]] is undefined.
|
|
39
|
+
Assert(generator.GeneratorState === Value.undefined);
|
|
40
|
+
// 2. Let genContext be the running execution context.
|
|
41
|
+
const genContext = surroundingAgent.runningExecutionContext;
|
|
42
|
+
// 3. Set the Generator component of genContext to generator.
|
|
43
|
+
genContext.Generator = generator;
|
|
44
|
+
// 4. Set the code evaluation state of genContext such that when evaluation is resumed
|
|
45
|
+
// for that execution context the following steps will be performed:
|
|
46
|
+
genContext.codeEvaluationState = (function* resumer(): YieldEvaluator {
|
|
47
|
+
// a. If generatorBody is a Parse Node, then
|
|
48
|
+
// i. Let result be the result of evaluating generatorBody.
|
|
49
|
+
// b. Else,
|
|
50
|
+
// i. Assert: generatorBody is an Abstract Closure.
|
|
51
|
+
// ii. Let result be generatorBody().
|
|
52
|
+
const result = EnsureCompletion(
|
|
53
|
+
// Note: Engine262 can only perform the "If generatorBody is an Abstract Closure" check:
|
|
54
|
+
yield* typeof generatorBody === 'function'
|
|
55
|
+
? generatorBody()
|
|
56
|
+
: Evaluate(generatorBody),
|
|
57
|
+
);
|
|
58
|
+
// c. Assert: If we return here, the generator either threw an exception or
|
|
59
|
+
// performed either an implicit or explicit return.
|
|
60
|
+
// d. Remove genContext from the execution context stack and restore the execution context
|
|
61
|
+
// that is at the top of the execution context stack as the running execution context.
|
|
62
|
+
surroundingAgent.executionContextStack.pop(genContext);
|
|
63
|
+
// e. Set generator.[[GeneratorState]] to completed.
|
|
64
|
+
generator.GeneratorState = 'completed';
|
|
65
|
+
// f. Once a generator enters the completed state it never leaves it and its
|
|
66
|
+
// associated execution context is never resumed. Any execution state associated
|
|
67
|
+
// with generator can be discarded at this point.
|
|
68
|
+
genContext.codeEvaluationState = undefined;
|
|
69
|
+
// g. If result.[[Type]] is normal, let resultValue be undefined.
|
|
70
|
+
let resultValue;
|
|
71
|
+
if (result.Type === 'normal') {
|
|
72
|
+
resultValue = Value.undefined;
|
|
73
|
+
} else if (result.Type === 'return') {
|
|
74
|
+
// h. Else if result.[[Type]] is return, let resultValue be result.[[Value]].
|
|
75
|
+
resultValue = result.Value;
|
|
76
|
+
} else { // i. Else,
|
|
77
|
+
// i. Assert: result.[[Type]] is throw.
|
|
78
|
+
Assert(result.Type === 'throw');
|
|
79
|
+
// ii. Return Completion(result).
|
|
80
|
+
return Q(result);
|
|
81
|
+
}
|
|
82
|
+
// j. Return CreateIteratorResultObject(resultValue, true).
|
|
83
|
+
return X(CreateIteratorResultObject(resultValue, Value.true));
|
|
84
|
+
}());
|
|
85
|
+
// 5. Set generator.[[GeneratorContext]] to genContext.
|
|
86
|
+
generator.GeneratorContext = genContext;
|
|
87
|
+
// 6. Set generator.[[GeneratorState]] to suspendedStart.
|
|
88
|
+
generator.GeneratorState = 'suspendedStart';
|
|
89
|
+
// 7. Return NormalCompletion(undefined).
|
|
90
|
+
return NormalCompletion(Value.undefined);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export function generatorBrandToErrorMessageType(generatorBrand: JSStringValue | undefined) {
|
|
94
|
+
let expectedType;
|
|
95
|
+
if (generatorBrand !== undefined) {
|
|
96
|
+
expectedType = generatorBrand.stringValue();
|
|
97
|
+
if (expectedType.startsWith('%') && expectedType.endsWith('Prototype%')) {
|
|
98
|
+
expectedType = expectedType.slice(1, -10).trim();
|
|
99
|
+
if (expectedType.endsWith('Iterator')) {
|
|
100
|
+
expectedType = `${expectedType.slice(0, -8).trim()} Iterator`;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return expectedType;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/** https://tc39.es/ecma262/#sec-generatorvalidate */
|
|
108
|
+
export function GeneratorValidate(generator: Value, generatorBrand: JSStringValue | undefined) {
|
|
109
|
+
// 1. Perform ? RequireInternalSlot(generator, [[GeneratorState]]).
|
|
110
|
+
Q(RequireInternalSlot(generator, 'GeneratorState'));
|
|
111
|
+
// 2. Perform ? RequireInternalSlot(generator, [[GeneratorBrand]]).
|
|
112
|
+
Q(RequireInternalSlot(generator, 'GeneratorBrand'));
|
|
113
|
+
__ts_cast__<GeneratorObject>(generator);
|
|
114
|
+
// 3. If generator.[[GeneratorBrand]] is not the same value as generatorBrand, throw a TypeError exception.
|
|
115
|
+
const brand = generator.GeneratorBrand;
|
|
116
|
+
if (
|
|
117
|
+
brand === undefined || generatorBrand === undefined
|
|
118
|
+
? brand !== generatorBrand
|
|
119
|
+
: SameValue(brand, generatorBrand) === Value.false
|
|
120
|
+
) {
|
|
121
|
+
return surroundingAgent.Throw(
|
|
122
|
+
'TypeError',
|
|
123
|
+
'NotATypeObject',
|
|
124
|
+
generatorBrandToErrorMessageType(generatorBrand) || 'Generator',
|
|
125
|
+
generator,
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
// 4. Assert: generator also has a [[GeneratorContext]] internal slot.
|
|
129
|
+
Assert('GeneratorContext' in generator);
|
|
130
|
+
// 5. Let state be generator.[[GeneratorState]].
|
|
131
|
+
const state = generator.GeneratorState;
|
|
132
|
+
// 6. If state is executing, throw a TypeError exception.
|
|
133
|
+
if (state === 'executing') {
|
|
134
|
+
return surroundingAgent.Throw('TypeError', 'GeneratorRunning');
|
|
135
|
+
}
|
|
136
|
+
// 7. Return state.
|
|
137
|
+
return state;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** https://tc39.es/ecma262/#sec-generatorresume */
|
|
141
|
+
export function GeneratorResume(generator: Value, value: Value | void, generatorBrand: JSStringValue | undefined) {
|
|
142
|
+
// 1. Let state be ? GeneratorValidate(generator, generatorBrand).
|
|
143
|
+
const state = Q(GeneratorValidate(generator, generatorBrand));
|
|
144
|
+
__ts_cast__<GeneratorObject>(generator);
|
|
145
|
+
// 2. If state is completed, return CreateIteratorResultObject(undefined, true).
|
|
146
|
+
if (state === 'completed') {
|
|
147
|
+
return X(CreateIteratorResultObject(Value.undefined, Value.true));
|
|
148
|
+
}
|
|
149
|
+
// 3. Assert: state is either suspendedStart or suspendedYield.
|
|
150
|
+
Assert(state === 'suspendedStart' || state === 'suspendedYield');
|
|
151
|
+
// 4. Let genContext be generator.[[GeneratorContext]].
|
|
152
|
+
const genContext = generator.GeneratorContext!;
|
|
153
|
+
// 5. Let methodContext be the running execution context.
|
|
154
|
+
// 6. Suspend methodContext.
|
|
155
|
+
const methodContext = surroundingAgent.runningExecutionContext;
|
|
156
|
+
// 7. Set generator.[[GeneratorState]] to executing.
|
|
157
|
+
generator.GeneratorState = 'executing';
|
|
158
|
+
// 8. Push genContext onto the execution context stack.
|
|
159
|
+
surroundingAgent.executionContextStack.push(genContext);
|
|
160
|
+
// 9. Resume the suspended evaluation of genContext using NormalCompletion(value) as
|
|
161
|
+
// the result of the operation that suspended it. Let result be the value returned by
|
|
162
|
+
// the resumed computation.
|
|
163
|
+
const result = EnsureCompletion(resume(genContext, NormalCompletion(value)));
|
|
164
|
+
// 10. Assert: When we return here, genContext has already been removed from the execution
|
|
165
|
+
// context stack and methodContext is the currently running execution context.
|
|
166
|
+
Assert(surroundingAgent.runningExecutionContext === methodContext);
|
|
167
|
+
// 11. Return Completion(result).
|
|
168
|
+
return Completion(result);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/** https://tc39.es/ecma262/#sec-generatorresumeabrupt */
|
|
172
|
+
export function GeneratorResumeAbrupt(generator: Value, abruptCompletion: AbruptCompletion, generatorBrand: JSStringValue | undefined) {
|
|
173
|
+
// 1. Let state be ? GeneratorValidate(generator, generatorBrand).
|
|
174
|
+
let state = Q(GeneratorValidate(generator, generatorBrand));
|
|
175
|
+
__ts_cast__<GeneratorObject>(generator);
|
|
176
|
+
// 2. If state is suspendedStart, then
|
|
177
|
+
if (state === 'suspendedStart') {
|
|
178
|
+
// a. Set generator.[[GeneratorState]] to completed.
|
|
179
|
+
generator.GeneratorState = 'completed';
|
|
180
|
+
// b. Once a generator enters the completed state it never leaves it and its
|
|
181
|
+
// associated execution context is never resumed. Any execution state associate
|
|
182
|
+
// with generator can be discarded at this point.
|
|
183
|
+
generator.GeneratorContext = null;
|
|
184
|
+
// c. Set state to completed.
|
|
185
|
+
state = 'completed';
|
|
186
|
+
}
|
|
187
|
+
// 3. If state is completed, then
|
|
188
|
+
if (state === 'completed') {
|
|
189
|
+
// a. If abruptCompletion.[[Type]] is return, then
|
|
190
|
+
if (abruptCompletion.Type === 'return') {
|
|
191
|
+
// i. Return CreateIteratorResultObject(abruptCompletion.[[Value]], true).
|
|
192
|
+
return X(CreateIteratorResultObject(abruptCompletion.Value, Value.true));
|
|
193
|
+
}
|
|
194
|
+
// b. Return Completion(abruptCompletion).
|
|
195
|
+
return Completion(abruptCompletion);
|
|
196
|
+
}
|
|
197
|
+
// 4. Assert: state is suspendedYield.
|
|
198
|
+
Assert(state === 'suspendedYield');
|
|
199
|
+
// 5. Let genContext be generator.[[GeneratorContext]].
|
|
200
|
+
const genContext = generator.GeneratorContext!;
|
|
201
|
+
// 6. Let methodContext be the running execution context.
|
|
202
|
+
// 7. Suspend methodContext.
|
|
203
|
+
const methodContext = surroundingAgent.runningExecutionContext;
|
|
204
|
+
// 8. Set generator.[[GeneratorState]] to executing.
|
|
205
|
+
generator.GeneratorState = 'executing';
|
|
206
|
+
// 9. Push genContext onto the execution context stack.
|
|
207
|
+
surroundingAgent.executionContextStack.push(genContext);
|
|
208
|
+
// 10. Resume the suspended evaluation of genContext using abruptCompletion as the
|
|
209
|
+
// result of the operation that suspended it. Let result be the completion record
|
|
210
|
+
// returned by the resumed computation.
|
|
211
|
+
const result = EnsureCompletion(resume(genContext, abruptCompletion));
|
|
212
|
+
// 11. Assert: When we return here, genContext has already been removed from the
|
|
213
|
+
// execution context stack and methodContext is the currently running execution context.
|
|
214
|
+
Assert(surroundingAgent.runningExecutionContext === methodContext);
|
|
215
|
+
// 12. Return Completion(result).
|
|
216
|
+
return Completion(result);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/** https://tc39.es/ecma262/#sec-getgeneratorkind */
|
|
220
|
+
export function GetGeneratorKind(): 'async' | 'sync' | 'non-generator' {
|
|
221
|
+
// 1. Let genContext be the running execution context.
|
|
222
|
+
const genContext = surroundingAgent.runningExecutionContext;
|
|
223
|
+
// 2. If genContext does not have a Generator component, return non-generator.
|
|
224
|
+
if (!genContext.Generator) {
|
|
225
|
+
return 'non-generator';
|
|
226
|
+
}
|
|
227
|
+
// 3. Let generator be the Generator component of genContext.
|
|
228
|
+
const generator = genContext.Generator;
|
|
229
|
+
// 4. If generator has an [[AsyncGeneratorState]] internal slot, return async.
|
|
230
|
+
if ('AsyncGeneratorState' in generator) {
|
|
231
|
+
return 'async';
|
|
232
|
+
}
|
|
233
|
+
// 5. Else, return sync.
|
|
234
|
+
return 'sync';
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/** https://tc39.es/ecma262/#sec-generatoryield */
|
|
238
|
+
export function* GeneratorYield(iterNextObj: ObjectValue): YieldEvaluator {
|
|
239
|
+
// 1. Assert: iterNextObj is an Object that implements the IteratorResult interface.
|
|
240
|
+
// 2. Let genContext be the running execution context.
|
|
241
|
+
const genContext = surroundingAgent.runningExecutionContext;
|
|
242
|
+
// 3. Assert: genContext is the execution context of a generator.
|
|
243
|
+
Assert(genContext.Generator !== undefined);
|
|
244
|
+
// 4. Let generator be the value of the Generator component of genContext.
|
|
245
|
+
const generator = genContext.Generator as GeneratorObject;
|
|
246
|
+
// 5. Assert: GetGeneratorKind is sync.
|
|
247
|
+
Assert(GetGeneratorKind() === 'sync');
|
|
248
|
+
// 6. Set generator.GeneratorState to suspendedYield.
|
|
249
|
+
generator.GeneratorState = 'suspendedYield';
|
|
250
|
+
// 7. Remove genContext from the execution context stack.
|
|
251
|
+
surroundingAgent.executionContextStack.pop(genContext);
|
|
252
|
+
// 8. Set the code evaluation state of genContext such that when evaluation is resumed with
|
|
253
|
+
// a Completion resumptionValue the following steps will be performed:
|
|
254
|
+
// a. Return resumptionValue
|
|
255
|
+
const resumptionValue = yield iterNextObj;
|
|
256
|
+
// 9. Return NormalCompletion(iterNextObj).
|
|
257
|
+
// TODO
|
|
258
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
259
|
+
return resumptionValue as any;
|
|
260
|
+
// 10. NOTE: this returns to the evaluation of the operation that had most previously resumed evaluation of genContext.
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/** https://tc39.es/ecma262/#sec-yield */
|
|
264
|
+
export function* Yield(value: Value): YieldEvaluator {
|
|
265
|
+
// 1. Let generatorKind be GetGeneratorKind().
|
|
266
|
+
const generatorKind = GetGeneratorKind();
|
|
267
|
+
// 2. If generatorKind is async, return ? AsyncGeneratorYield(? Await(value)).
|
|
268
|
+
if (generatorKind === 'async') {
|
|
269
|
+
return Q(yield* AsyncGeneratorYield(Q(yield* Await(value))));
|
|
270
|
+
}
|
|
271
|
+
// 3. Otherwise, return ? GeneratorYield(CreateIteratorResultObject(value, false)).
|
|
272
|
+
return Q(yield* GeneratorYield(CreateIteratorResultObject(value, Value.false)));
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/** https://tc39.es/ecma262/#sec-createiteratorfromclosure */
|
|
276
|
+
export function CreateIteratorFromClosure(closure: () => YieldEvaluator, generatorBrand: JSStringValue | undefined, generatorPrototype: ObjectValue) {
|
|
277
|
+
Assert(typeof closure === 'function');
|
|
278
|
+
// 1. NOTE: closure can contain uses of the Yield shorthand to yield an IteratorResult object.
|
|
279
|
+
// 2. Let internalSlotsList be « [[GeneratorState]], [[GeneratorContext]], [[GeneratorBrand]] ».
|
|
280
|
+
const internalSlotsList = ['GeneratorState', 'GeneratorContext', 'GeneratorBrand'];
|
|
281
|
+
// 3. Let generator be ! OrdinaryObjectCreate(generatorPrototype, internalSlotsList).
|
|
282
|
+
const generator = X(OrdinaryObjectCreate(generatorPrototype, internalSlotsList)) as Mutable<GeneratorObject>;
|
|
283
|
+
// 4. Set generator.[[GeneratorBrand]] to generatorBrand.
|
|
284
|
+
generator.GeneratorBrand = generatorBrand;
|
|
285
|
+
// 5. Set generator.[[GeneratorState]] to undefined.
|
|
286
|
+
generator.GeneratorState = Value.undefined;
|
|
287
|
+
// 6. Perform ! GeneratorStart(generator, closure).
|
|
288
|
+
X(GeneratorStart(generator, closure));
|
|
289
|
+
// 7. Return generator.
|
|
290
|
+
return generator;
|
|
291
|
+
}
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
import { ExecutionContext, HostEnsureCanCompileStrings, surroundingAgent } from '../engine.mts';
|
|
2
|
+
import { JSStringValue, NullValue, Value } from '../value.mts';
|
|
3
|
+
import { InstantiateFunctionObject } from '../runtime-semantics/all.mts';
|
|
4
|
+
import {
|
|
5
|
+
IsStrict,
|
|
6
|
+
VarDeclaredNames,
|
|
7
|
+
VarScopedDeclarations,
|
|
8
|
+
LexicallyScopedDeclarations,
|
|
9
|
+
BoundNames,
|
|
10
|
+
IsConstantDeclaration,
|
|
11
|
+
ContainsArguments,
|
|
12
|
+
} from '../static-semantics/all.mts';
|
|
13
|
+
import {
|
|
14
|
+
NormalCompletion,
|
|
15
|
+
EnsureCompletion,
|
|
16
|
+
Q, X,
|
|
17
|
+
type ExpressionCompletion,
|
|
18
|
+
ThrowCompletion,
|
|
19
|
+
type PlainCompletion,
|
|
20
|
+
} from '../completion.mts';
|
|
21
|
+
import { wrappedParse } from '../parse.mts';
|
|
22
|
+
import {
|
|
23
|
+
DeclarativeEnvironmentRecord,
|
|
24
|
+
EnvironmentRecord,
|
|
25
|
+
FunctionEnvironmentRecord,
|
|
26
|
+
GlobalEnvironmentRecord,
|
|
27
|
+
ObjectEnvironmentRecord,
|
|
28
|
+
PrivateEnvironmentRecord,
|
|
29
|
+
} from '../environment.mts';
|
|
30
|
+
import { Evaluate } from '../evaluator.mts';
|
|
31
|
+
import { __ts_cast__, JSStringSet, unwind } from '../helpers.mts';
|
|
32
|
+
import type { ParseNode } from '../parser/ParseNode.mts';
|
|
33
|
+
import { Assert, GetThisEnvironment, Realm } from './all.mts';
|
|
34
|
+
|
|
35
|
+
// This file covers abstract operations defined in
|
|
36
|
+
/** https://tc39.es/ecma262/#sec-global-object */
|
|
37
|
+
|
|
38
|
+
/** https://tc39.es/ecma262/#sec-performeval */
|
|
39
|
+
export function PerformEval(x: Value, callerRealm: Realm, strictCaller: boolean, direct: boolean): ExpressionCompletion {
|
|
40
|
+
// 1. Assert: If direct is false, then strictCaller is also false.
|
|
41
|
+
if (direct === false) {
|
|
42
|
+
Assert(strictCaller === false);
|
|
43
|
+
}
|
|
44
|
+
// 2. If Type(x) is not String, return x.
|
|
45
|
+
if (!(x instanceof JSStringValue)) {
|
|
46
|
+
return x;
|
|
47
|
+
}
|
|
48
|
+
// 3. Let evalRealm be the current Realm Record.
|
|
49
|
+
const evalRealm = surroundingAgent.currentRealmRecord;
|
|
50
|
+
// 4. Perform ? HostEnsureCanCompileStrings(callerRealm, evalRealm).
|
|
51
|
+
Q(HostEnsureCanCompileStrings(callerRealm, evalRealm));
|
|
52
|
+
// 5. Let inFunction be false.
|
|
53
|
+
let inFunction = false;
|
|
54
|
+
// 6. Let inMethod be false.
|
|
55
|
+
let inMethod = false;
|
|
56
|
+
// 7. Let inDerivedConstructor be false.
|
|
57
|
+
let inDerivedConstructor = false;
|
|
58
|
+
// 8. Let inClassFieldInitializer be false.
|
|
59
|
+
let inClassFieldInitializer = false;
|
|
60
|
+
// 9. If direct is true, then
|
|
61
|
+
if (direct === true) {
|
|
62
|
+
// a. Let thisEnv be ! GetThisEnvironment().
|
|
63
|
+
const thisEnv = X(GetThisEnvironment());
|
|
64
|
+
// b. If thisEnv is a function Environment Record, then
|
|
65
|
+
if (thisEnv instanceof FunctionEnvironmentRecord) {
|
|
66
|
+
// i. Let F be thisEnv.[[FunctionObject]].
|
|
67
|
+
const F = thisEnv.FunctionObject;
|
|
68
|
+
// ii. Let inFunction be true.
|
|
69
|
+
inFunction = true;
|
|
70
|
+
// iii. Let inMethod be thisEnv.HasSuperBinding().
|
|
71
|
+
inMethod = thisEnv.HasSuperBinding() === Value.true;
|
|
72
|
+
// iv. If F.[[ConstructorKind]] is derived, set inDerivedConstructor to true.
|
|
73
|
+
if (F.ConstructorKind === 'derived') {
|
|
74
|
+
inDerivedConstructor = true;
|
|
75
|
+
}
|
|
76
|
+
// v. Let classFieldIntializerName be F.[[ClassFieldInitializerName]].
|
|
77
|
+
const classFieldIntializerName = F.ClassFieldInitializerName;
|
|
78
|
+
// vi. If classFieldIntializerName is not empty, set inClassFieldInitializer to true.
|
|
79
|
+
if (classFieldIntializerName !== undefined) {
|
|
80
|
+
inClassFieldInitializer = true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// 10. Perform the following substeps in an implementation-dependent order, possibly interleaving parsing and error detection:
|
|
85
|
+
// a. Let script be ParseText(! StringToCodePoints(x), Script).
|
|
86
|
+
// b. If script is a List of errors, throw a SyntaxError exception.
|
|
87
|
+
// c. If script Contains ScriptBody is false, return undefined.
|
|
88
|
+
// d. Let body be the ScriptBody of script.
|
|
89
|
+
// e. If inFunction is false, and body Contains NewTarget, throw a SyntaxError exception.
|
|
90
|
+
// f. If inMethod is false, and body Contains SuperProperty, throw a SyntaxError exception.
|
|
91
|
+
// g. If inDerivedConstructor is false, and body Contains SuperCall, throw a SyntaxError exception.
|
|
92
|
+
// h. If inClassFieldInitializer is true, and ContainsArguments of body is true, throw a SyntaxError exception.
|
|
93
|
+
const privateIdentifiers: string[] = [];
|
|
94
|
+
let pointer = direct ? surroundingAgent.runningExecutionContext.PrivateEnvironment : Value.null;
|
|
95
|
+
while (!(pointer instanceof NullValue)) {
|
|
96
|
+
for (const binding of pointer.Names) {
|
|
97
|
+
privateIdentifiers.push(binding.Description.stringValue());
|
|
98
|
+
}
|
|
99
|
+
pointer = pointer.OuterPrivateEnvironment;
|
|
100
|
+
}
|
|
101
|
+
const script = wrappedParse({ source: x.stringValue() }, (parser) => parser.scope.with({
|
|
102
|
+
strict: strictCaller,
|
|
103
|
+
newTarget: inFunction,
|
|
104
|
+
superProperty: inMethod,
|
|
105
|
+
superCall: inDerivedConstructor,
|
|
106
|
+
private: privateIdentifiers.length > 0,
|
|
107
|
+
}, () => {
|
|
108
|
+
privateIdentifiers.forEach((name) => {
|
|
109
|
+
parser.scope.privateScope!.names.set(name, new Set(['field']));
|
|
110
|
+
});
|
|
111
|
+
return parser.parseScript();
|
|
112
|
+
}));
|
|
113
|
+
if (Array.isArray(script)) {
|
|
114
|
+
return ThrowCompletion(script[0]);
|
|
115
|
+
}
|
|
116
|
+
if (!script.ScriptBody) {
|
|
117
|
+
return Value.undefined;
|
|
118
|
+
}
|
|
119
|
+
const body = script.ScriptBody;
|
|
120
|
+
if (inClassFieldInitializer && ContainsArguments(body)) {
|
|
121
|
+
return surroundingAgent.Throw('SyntaxError', 'UnexpectedToken');
|
|
122
|
+
}
|
|
123
|
+
// 11. If strictCaller is true, let strictEval be true.
|
|
124
|
+
// 12. Else, let strictEval be IsStrict of script.
|
|
125
|
+
let strictEval;
|
|
126
|
+
if (strictCaller === true) {
|
|
127
|
+
strictEval = true;
|
|
128
|
+
} else {
|
|
129
|
+
strictEval = IsStrict(script);
|
|
130
|
+
}
|
|
131
|
+
// 13. Let runningContext be the running execution context.
|
|
132
|
+
const runningContext = surroundingAgent.runningExecutionContext;
|
|
133
|
+
let lexEnv;
|
|
134
|
+
let varEnv;
|
|
135
|
+
let privateEnv;
|
|
136
|
+
// 14. NOTE: If direct is true, runningContext will be the execution context that performed the direct eval.
|
|
137
|
+
// If direct is false, runningContext will be the execution context for the invocation of the eval function.
|
|
138
|
+
// 15. If direct is true, then
|
|
139
|
+
if (direct === true) {
|
|
140
|
+
// a. Let lexEnv be NewDeclarativeEnvironment(runningContext's LexicalEnvironment).
|
|
141
|
+
lexEnv = new DeclarativeEnvironmentRecord(runningContext.LexicalEnvironment);
|
|
142
|
+
// b. Let varEnv be runningContext's VariableEnvironment.
|
|
143
|
+
varEnv = runningContext.VariableEnvironment;
|
|
144
|
+
// c. Let privateEnv be runningContext's PrivateEnvironment.
|
|
145
|
+
privateEnv = runningContext.PrivateEnvironment;
|
|
146
|
+
} else { // 16. Else,
|
|
147
|
+
// a. Let lexEnv be NewDeclarativeEnvironment(evalRealm.[[GlobalEnv]]).
|
|
148
|
+
lexEnv = new DeclarativeEnvironmentRecord(evalRealm.GlobalEnv);
|
|
149
|
+
// b. Let varEnv be evalRealm.[[GlobalEnv]].
|
|
150
|
+
varEnv = evalRealm.GlobalEnv;
|
|
151
|
+
// c. Let privateEnv be null.
|
|
152
|
+
privateEnv = Value.null;
|
|
153
|
+
}
|
|
154
|
+
// 17. If strictEval is true, set varEnv to lexEnv.
|
|
155
|
+
if (strictEval === true) {
|
|
156
|
+
varEnv = lexEnv;
|
|
157
|
+
}
|
|
158
|
+
// 18. If runningContext is not already suspended, suspend runningContext.
|
|
159
|
+
// 19. Let evalContext be a new ECMAScript code execution context.
|
|
160
|
+
const evalContext = new ExecutionContext();
|
|
161
|
+
// 20. Set evalContext's Function to null.
|
|
162
|
+
evalContext.Function = Value.null;
|
|
163
|
+
// 21. Set evalContext's Realm to evalRealm.
|
|
164
|
+
evalContext.Realm = evalRealm;
|
|
165
|
+
// 22. Set evalContext's ScriptOrModule to runningContext's ScriptOrModule.
|
|
166
|
+
evalContext.ScriptOrModule = runningContext.ScriptOrModule;
|
|
167
|
+
// 23. Set evalContext's VariableEnvironment to varEnv.
|
|
168
|
+
evalContext.VariableEnvironment = varEnv;
|
|
169
|
+
// 24. Set evalContext's LexicalEnvironment to lexEnv.
|
|
170
|
+
evalContext.LexicalEnvironment = lexEnv;
|
|
171
|
+
// 25. Set evalContext's PrivateEnvironment to privateEnv.
|
|
172
|
+
evalContext.PrivateEnvironment = privateEnv;
|
|
173
|
+
// 26. Push evalContext onto the execution context stack.
|
|
174
|
+
surroundingAgent.executionContextStack.push(evalContext);
|
|
175
|
+
// 27. Let result be EvalDeclarationInstantiation(body, varEnv, lexEnv, privateEnv, strictEval).
|
|
176
|
+
let result: PlainCompletion<void | Value> = EnsureCompletion(EvalDeclarationInstantiation(body, varEnv, lexEnv, privateEnv, strictEval));
|
|
177
|
+
// 28. If result.[[Type]] is normal, then
|
|
178
|
+
if (result.Type === 'normal') {
|
|
179
|
+
// a. Set result to the result of evaluating body.
|
|
180
|
+
result = EnsureCompletion(unwind(Evaluate(body)) as PlainCompletion<void | Value>);
|
|
181
|
+
}
|
|
182
|
+
// 29. If result.[[Type]] is normal and result.[[Value]] is empty, then
|
|
183
|
+
if (result.Type === 'normal' && result.Value === undefined) {
|
|
184
|
+
// a. Set result to NormalCompletion(undefined).
|
|
185
|
+
result = NormalCompletion(Value.undefined);
|
|
186
|
+
}
|
|
187
|
+
// 30. Suspend evalContext and remove it from the execution context stack.
|
|
188
|
+
// 31. Resume the context that is now on the top of the execution context stack as the running execution context.
|
|
189
|
+
surroundingAgent.executionContextStack.pop(evalContext);
|
|
190
|
+
// 32. Return Completion(result).
|
|
191
|
+
return Q(result)!;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/** https://tc39.es/ecma262/#sec-evaldeclarationinstantiation */
|
|
195
|
+
function EvalDeclarationInstantiation(body: ParseNode.ScriptBody, varEnv: EnvironmentRecord, lexEnv: DeclarativeEnvironmentRecord, privateEnv: PrivateEnvironmentRecord | NullValue, strict: boolean): PlainCompletion<void> {
|
|
196
|
+
// 1. Let varNames be the VarDeclaredNames of body.
|
|
197
|
+
const varNames = VarDeclaredNames(body);
|
|
198
|
+
// 2. Let varDeclarations be the VarScopedDeclarations of body.
|
|
199
|
+
const varDeclarations = VarScopedDeclarations(body);
|
|
200
|
+
// 3. If strict is false, then
|
|
201
|
+
if (strict === false) {
|
|
202
|
+
// a. If varEnv is a global Environment Record, then
|
|
203
|
+
if (varEnv instanceof GlobalEnvironmentRecord) {
|
|
204
|
+
// i. For each name in varNames, do
|
|
205
|
+
for (const name of varNames) {
|
|
206
|
+
// 1. If varEnv.HasLexicalDeclaration(name) is true, throw a SyntaxError exception.
|
|
207
|
+
if (varEnv.HasLexicalDeclaration(name) === Value.true) {
|
|
208
|
+
return surroundingAgent.Throw('SyntaxError', 'AlreadyDeclared', name);
|
|
209
|
+
}
|
|
210
|
+
// 2. NOTE: eval will not create a global var declaration that would be shadowed by a global lexical declaration.
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// b. Let thisLex be lexEnv.
|
|
214
|
+
let thisEnv: EnvironmentRecord = lexEnv;
|
|
215
|
+
// c. Assert: The following loop will terminate.
|
|
216
|
+
// d. Repeat, while thisEnv is not the same as varEnv,
|
|
217
|
+
while (thisEnv !== varEnv) {
|
|
218
|
+
__ts_cast__<EnvironmentRecord>(thisEnv);
|
|
219
|
+
// i. If thisEnv is not an object Environment Record, then
|
|
220
|
+
if (!(thisEnv instanceof ObjectEnvironmentRecord)) {
|
|
221
|
+
// 1. NOTE: The environment of with statements cannot contain any lexical declaration so it doesn't need to be checked for var/let hoisting conflicts.
|
|
222
|
+
// 2. For each name in varNames, do
|
|
223
|
+
for (const name of varNames) {
|
|
224
|
+
// a. If thisEnv.HasBinding(name) is true, then
|
|
225
|
+
if (thisEnv.HasBinding(name) === Value.true) {
|
|
226
|
+
// i. Throw a SyntaxError exception.
|
|
227
|
+
return surroundingAgent.Throw('SyntaxError', 'AlreadyDeclared', name);
|
|
228
|
+
// ii. NOTE: Annex B.3.5 defines alternate semantics for the above step.
|
|
229
|
+
}
|
|
230
|
+
// b. NOTE: A direct eval will not hoist var declaration over a like-named lexical declaration
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// ii. Set thisEnv to thisEnv.[[OuterEnv]].
|
|
234
|
+
thisEnv = thisEnv.OuterEnv as EnvironmentRecord;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// 4. Let privateIdentifiers be a new empty List.
|
|
238
|
+
const privateIdentifiers = [];
|
|
239
|
+
// 5. Let pointer be privateEnv.
|
|
240
|
+
let pointer = privateEnv;
|
|
241
|
+
// 6. Repeat, while pointer is not null,
|
|
242
|
+
while (!(pointer instanceof NullValue)) {
|
|
243
|
+
// a. For each Private Name binding of pointer.[[Names]], do
|
|
244
|
+
for (const binding of pointer.Names) {
|
|
245
|
+
// i. If privateIdentifiers does not contain binding.[[Description]], append binding.[[Description]] to privateIdentifiers.
|
|
246
|
+
privateIdentifiers.push(binding.Description);
|
|
247
|
+
}
|
|
248
|
+
// b. Set pointer to pointer.[[OuterPrivateEnvironment]].
|
|
249
|
+
pointer = pointer.OuterPrivateEnvironment;
|
|
250
|
+
}
|
|
251
|
+
// 7. If AllPrivateIdentifiersValid of body with argument privateIdentifiers is false, throw a SyntaxError exception.
|
|
252
|
+
Assert(true);
|
|
253
|
+
// 8. Let functionsToInitialize be a new empty List.
|
|
254
|
+
const functionsToInitialize = [];
|
|
255
|
+
// 9. Let declaredFunctionNames be a new empty List.
|
|
256
|
+
const declaredFunctionNames = new JSStringSet();
|
|
257
|
+
// 10. For each d in varDeclarations, in reverse list order, do
|
|
258
|
+
for (const d of [...varDeclarations].reverse()) {
|
|
259
|
+
// a. If d is neither a VariableDeclaration nor a ForBinding nor a BindingIdentifier, then
|
|
260
|
+
if (d.type !== 'VariableDeclaration'
|
|
261
|
+
&& d.type !== 'ForBinding'
|
|
262
|
+
&& d.type !== 'BindingIdentifier') {
|
|
263
|
+
// i. Assert: d is either a FunctionDeclaration, a GeneratorDeclaration, an AsyncFunctionDeclaration, or an AsyncGeneratorDeclaration.
|
|
264
|
+
Assert(d.type === 'FunctionDeclaration'
|
|
265
|
+
|| d.type === 'GeneratorDeclaration'
|
|
266
|
+
|| d.type === 'AsyncFunctionDeclaration'
|
|
267
|
+
|| d.type === 'AsyncGeneratorDeclaration');
|
|
268
|
+
// ii. NOTE: If there are multiple function declarations for the same name, the last declaration is used.
|
|
269
|
+
// iii. Let fn be the sole element of the BoundNames of d.
|
|
270
|
+
const fn = BoundNames(d)[0];
|
|
271
|
+
// iv. If fn is not an element of declaredFunctionNames, then
|
|
272
|
+
if (!declaredFunctionNames.has(fn)) {
|
|
273
|
+
// 1. If varEnv is a global Environment Record, then
|
|
274
|
+
if (varEnv instanceof GlobalEnvironmentRecord) {
|
|
275
|
+
// a. Let fnDefinable be ? varEnv.CanDeclareGlobalFunction(fn).
|
|
276
|
+
const fnDefinable = Q(varEnv.CanDeclareGlobalFunction(fn));
|
|
277
|
+
// b. Let fnDefinable be ? varEnv.CanDeclareGlobalFunction(fn).
|
|
278
|
+
if (fnDefinable === Value.false) {
|
|
279
|
+
return surroundingAgent.Throw('TypeError', 'AlreadyDeclared', fn);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
// 2. Append fn to declaredFunctionNames.
|
|
283
|
+
declaredFunctionNames.add(fn);
|
|
284
|
+
// 3. Insert d as the first element of functionsToInitialize.
|
|
285
|
+
functionsToInitialize.unshift(d);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// 11. NOTE: Annex B.3.3.3 adds additional steps at this point.
|
|
290
|
+
// 12. Let declaredVarNames be a new empty List.
|
|
291
|
+
const declaredVarNames = new JSStringSet();
|
|
292
|
+
// 13. For each d in varDeclarations, do
|
|
293
|
+
for (const d of varDeclarations) {
|
|
294
|
+
// a. If d is a VariableDeclaration, a ForBinding, or a BindingIdentifier, then
|
|
295
|
+
if (d.type === 'VariableDeclaration'
|
|
296
|
+
|| d.type === 'ForBinding'
|
|
297
|
+
|| d.type === 'BindingIdentifier') {
|
|
298
|
+
// i. For each String vn in the BoundNames of d, do
|
|
299
|
+
for (const vn of BoundNames(d)) {
|
|
300
|
+
// 1. If vn is not an element of declaredFunctionNames, then
|
|
301
|
+
if (!declaredFunctionNames.has(vn)) {
|
|
302
|
+
// a. If varEnv is a global Environment Record, then
|
|
303
|
+
if (varEnv instanceof GlobalEnvironmentRecord) {
|
|
304
|
+
// i. Let vnDefinable be ? varEnv.CanDeclareGlobalVar(vn).
|
|
305
|
+
const vnDefinable = Q(varEnv.CanDeclareGlobalVar(vn));
|
|
306
|
+
// ii. If vnDefinable is false, throw a TypeError exception.
|
|
307
|
+
if (vnDefinable === Value.false) {
|
|
308
|
+
return surroundingAgent.Throw('TypeError', 'AlreadyDeclared', vn);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// b. If vn is not an element of declaredVarNames, then
|
|
312
|
+
if (!declaredVarNames.has(vn)) {
|
|
313
|
+
// i. Append vn to declaredVarNames.
|
|
314
|
+
declaredVarNames.add(vn);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// 14. NOTE: No abnormal terminations occur after this algorithm step unless
|
|
321
|
+
// varEnv is a global Environment Record and the global object is a Proxy exotic object.
|
|
322
|
+
// 15. Let lexDeclarations be the LexicallyScopedDeclarations of body.
|
|
323
|
+
const lexDeclarations = LexicallyScopedDeclarations(body);
|
|
324
|
+
// 16. For each element d in lexDeclarations, do
|
|
325
|
+
for (const d of lexDeclarations) {
|
|
326
|
+
// a. NOTE: Lexically declared names are only instantiated here but not initialized.
|
|
327
|
+
// b. For each element dn of the BoundNames of d, do
|
|
328
|
+
for (const dn of BoundNames(d)) {
|
|
329
|
+
// i. If IsConstantDeclaration of d is true, then
|
|
330
|
+
if (IsConstantDeclaration(d)) {
|
|
331
|
+
// 1. Perform ? lexEnv.CreateImmutableBinding(dn, true).
|
|
332
|
+
Q(lexEnv.CreateImmutableBinding(dn, Value.true));
|
|
333
|
+
} else { // ii. Else,
|
|
334
|
+
// 1. Perform ? lexEnv.CreateMutableBinding(dn, false).
|
|
335
|
+
Q(lexEnv.CreateMutableBinding(dn, Value.false));
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// 17. For each Parse Node f in functionsToInitialize, do
|
|
340
|
+
for (const f of functionsToInitialize) {
|
|
341
|
+
// a. Let fn be the sole element of the BoundNames of f.
|
|
342
|
+
const fn = BoundNames(f)[0];
|
|
343
|
+
// b. Let fn be the sole element of the BoundNames of f.
|
|
344
|
+
const fo = InstantiateFunctionObject(f, lexEnv, privateEnv);
|
|
345
|
+
// c. If varEnv is a global Environment Record, then
|
|
346
|
+
if (varEnv instanceof GlobalEnvironmentRecord) {
|
|
347
|
+
// i. Perform ? varEnv.CreateGlobalFunctionBinding(fn, fo, true).
|
|
348
|
+
Q(varEnv.CreateGlobalFunctionBinding(fn, fo, Value.true));
|
|
349
|
+
} else { // d. Else,
|
|
350
|
+
// i. Let bindingExists be varEnv.HasBinding(fn).
|
|
351
|
+
const bindingExists = varEnv.HasBinding(fn);
|
|
352
|
+
// ii. If bindingExists is false, then
|
|
353
|
+
if (bindingExists === Value.false) {
|
|
354
|
+
// 1. Let status be ! varEnv.CreateMutableBinding(fn, true).
|
|
355
|
+
// 2. Assert: status is not an abrupt completion because of validation preceding step 12.
|
|
356
|
+
X(varEnv.CreateMutableBinding(fn, Value.true));
|
|
357
|
+
// 3. Perform ! varEnv.InitializeBinding(fn, fo).
|
|
358
|
+
X(varEnv.InitializeBinding(fn, fo));
|
|
359
|
+
} else { // iii. Else,
|
|
360
|
+
// 1. Perform ! varEnv.SetMutableBinding(fn, fo, false).
|
|
361
|
+
X(varEnv.SetMutableBinding(fn, fo, Value.false));
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// 18. For each String vn in declaredVarNames, in list order, do
|
|
366
|
+
for (const vn of declaredVarNames) {
|
|
367
|
+
// a. If varEnv is a global Environment Record, then
|
|
368
|
+
if (varEnv instanceof GlobalEnvironmentRecord) {
|
|
369
|
+
// i. Perform ? varEnv.CreateGlobalVarBinding(vn, true).
|
|
370
|
+
Q(varEnv.CreateGlobalVarBinding(vn, Value.true));
|
|
371
|
+
} else { // b. Else,
|
|
372
|
+
// i. Let bindingExists be varEnv.HasBinding(vn).
|
|
373
|
+
const bindingExists = varEnv.HasBinding(vn);
|
|
374
|
+
// ii. If bindingExists is false, then
|
|
375
|
+
if (bindingExists === Value.false) {
|
|
376
|
+
// 1. Let status be ! varEnv.CreateMutableBinding(vn, true).
|
|
377
|
+
// 2. Assert: status is not an abrupt completion because of validation preceding step 12.
|
|
378
|
+
X(varEnv.CreateMutableBinding(vn, Value.true));
|
|
379
|
+
// 3. Perform ! varEnv.InitializeBinding(vn, undefined).
|
|
380
|
+
X(varEnv.InitializeBinding(vn, Value.undefined));
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
// 19. Return NormalCompletion(empty).
|
|
385
|
+
return NormalCompletion(undefined);
|
|
386
|
+
}
|