@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
package/src/value.mts
ADDED
|
@@ -0,0 +1,981 @@
|
|
|
1
|
+
import { type GCMarker, surroundingAgent } from './engine.mts';
|
|
2
|
+
import {
|
|
3
|
+
Assert,
|
|
4
|
+
OrdinaryDefineOwnProperty,
|
|
5
|
+
OrdinaryDelete,
|
|
6
|
+
OrdinaryGet,
|
|
7
|
+
OrdinaryGetOwnProperty,
|
|
8
|
+
OrdinaryGetPrototypeOf,
|
|
9
|
+
OrdinaryHasProperty,
|
|
10
|
+
OrdinaryIsExtensible,
|
|
11
|
+
OrdinaryOwnPropertyKeys,
|
|
12
|
+
OrdinaryPreventExtensions,
|
|
13
|
+
OrdinarySet,
|
|
14
|
+
OrdinarySetPrototypeOf,
|
|
15
|
+
ToInt32,
|
|
16
|
+
ToUint32,
|
|
17
|
+
Z,
|
|
18
|
+
F, R, type OrdinaryObject, type FunctionObject,
|
|
19
|
+
type BuiltinFunctionObject,
|
|
20
|
+
} from './abstract-ops/all.mts';
|
|
21
|
+
import { EnvironmentRecord } from './environment.mts';
|
|
22
|
+
import {
|
|
23
|
+
Completion, Q, X, type ExpressionCompletion, type PlainCompletion,
|
|
24
|
+
} from './completion.mts';
|
|
25
|
+
import { PropertyKeyMap, OutOfRange, callable } from './helpers.mts';
|
|
26
|
+
import type { PrivateElementRecord } from './runtime-semantics/MethodDefinitionEvaluation.mts';
|
|
27
|
+
|
|
28
|
+
let createStringValue: (value: string) => JSStringValue; // set by static block in StringValue for privileged access to constructor
|
|
29
|
+
let createNumberValue: (value: number) => NumberValue; // set by static block in NumberValue for privileged access to constructor
|
|
30
|
+
let createBigIntValue: (value: bigint) => BigIntValue; // set by static block in BigIntValue for privileged access to constructor
|
|
31
|
+
|
|
32
|
+
abstract class BaseValue {
|
|
33
|
+
static declare readonly null: NullValue; // defined in static block of NullValue
|
|
34
|
+
|
|
35
|
+
static declare readonly undefined: UndefinedValue; // defined in static block of UndefinedValue
|
|
36
|
+
|
|
37
|
+
static declare readonly true: BooleanValue<true>; // defined in static block of BooleanValue
|
|
38
|
+
|
|
39
|
+
static declare readonly false: BooleanValue<false>; // defined in static block of BooleanValue
|
|
40
|
+
|
|
41
|
+
abstract type: Value['type']; // ensures new `Value` subtypes must be added to `Value` union
|
|
42
|
+
|
|
43
|
+
declare [Symbol.hasInstance]: (value: unknown) => value is Value; // no need to actually declare it.
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types */
|
|
47
|
+
export type Value =
|
|
48
|
+
| UndefinedValue
|
|
49
|
+
| NullValue
|
|
50
|
+
| BooleanValue
|
|
51
|
+
| JSStringValue
|
|
52
|
+
| SymbolValue
|
|
53
|
+
| NumberValue
|
|
54
|
+
| BigIntValue
|
|
55
|
+
| ObjectValue;
|
|
56
|
+
|
|
57
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types */
|
|
58
|
+
export const Value = (() => {
|
|
59
|
+
// NOTE: Using IIFE so that the class does not conflict with the type of the same name
|
|
60
|
+
@callable((_target, _thisArg, [value]) => {
|
|
61
|
+
if (value === null) {
|
|
62
|
+
return Value.null;
|
|
63
|
+
} else if (value === undefined) {
|
|
64
|
+
return Value.undefined;
|
|
65
|
+
} else if (value === true) {
|
|
66
|
+
return Value.true;
|
|
67
|
+
} else if (value === false) {
|
|
68
|
+
return Value.false;
|
|
69
|
+
}
|
|
70
|
+
switch (typeof value) {
|
|
71
|
+
case 'string':
|
|
72
|
+
return createStringValue(value);
|
|
73
|
+
case 'number':
|
|
74
|
+
return createNumberValue(value);
|
|
75
|
+
case 'bigint':
|
|
76
|
+
return createBigIntValue(value);
|
|
77
|
+
default:
|
|
78
|
+
throw new OutOfRange('new Value', value);
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
abstract class Value extends BaseValue {
|
|
82
|
+
}
|
|
83
|
+
return Value;
|
|
84
|
+
})() as typeof BaseValue & {
|
|
85
|
+
<T extends null | undefined | boolean | string | number | bigint>(value: T): // eslint-disable-line @engine262/no-use-in-def
|
|
86
|
+
T extends null ? NullValue :
|
|
87
|
+
T extends undefined ? UndefinedValue :
|
|
88
|
+
T extends boolean ? BooleanValue<T> :
|
|
89
|
+
T extends string ? JSStringValue :
|
|
90
|
+
T extends number ? NumberValue :
|
|
91
|
+
T extends bigint ? BigIntValue :
|
|
92
|
+
never;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types */
|
|
96
|
+
export type PropertyKeyValue =
|
|
97
|
+
| JSStringValue
|
|
98
|
+
| SymbolValue;
|
|
99
|
+
|
|
100
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types */
|
|
101
|
+
export type PrimitiveValue =
|
|
102
|
+
| UndefinedValue
|
|
103
|
+
| NullValue
|
|
104
|
+
| BooleanValue
|
|
105
|
+
| JSStringValue
|
|
106
|
+
| SymbolValue
|
|
107
|
+
| NumberValue
|
|
108
|
+
| BigIntValue;
|
|
109
|
+
|
|
110
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types */
|
|
111
|
+
export const PrimitiveValue = (() => {
|
|
112
|
+
// NOTE: Using IIFE so that the class does not conflict with the type of the same name
|
|
113
|
+
// NOTE: Only using IIFE because TypeScript errors when `abstract` is used on class expressions
|
|
114
|
+
abstract class PrimitiveValue extends Value {
|
|
115
|
+
}
|
|
116
|
+
return PrimitiveValue;
|
|
117
|
+
})();
|
|
118
|
+
|
|
119
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types-undefined-type */
|
|
120
|
+
export class UndefinedValue extends PrimitiveValue {
|
|
121
|
+
declare readonly type: 'Undefined'; // defined on prototype by static block
|
|
122
|
+
|
|
123
|
+
declare readonly value: undefined; // defined on prototype by static block
|
|
124
|
+
|
|
125
|
+
private constructor() { // eslint-disable-line no-useless-constructor -- Sets privacy for constructor
|
|
126
|
+
super();
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
static {
|
|
130
|
+
Object.defineProperty(this.prototype, 'type', { value: 'Undefined' });
|
|
131
|
+
Object.defineProperty(this.prototype, 'value', { value: undefined });
|
|
132
|
+
Object.defineProperty(Value, 'undefined', { value: new this() });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types-null-type */
|
|
137
|
+
export class NullValue extends PrimitiveValue {
|
|
138
|
+
declare readonly type: 'Null'; // defined on prototype by static block
|
|
139
|
+
|
|
140
|
+
declare readonly value: null; // defined on prototype by static block
|
|
141
|
+
|
|
142
|
+
private constructor() { // eslint-disable-line no-useless-constructor -- Sets privacy for constructor
|
|
143
|
+
super();
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
static {
|
|
147
|
+
Object.defineProperty(this.prototype, 'type', { value: 'Null' });
|
|
148
|
+
Object.defineProperty(this.prototype, 'value', { value: null });
|
|
149
|
+
Object.defineProperty(Value, 'null', { value: new this() });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types-boolean-type */
|
|
154
|
+
export class BooleanValue<T extends boolean = boolean> extends PrimitiveValue {
|
|
155
|
+
declare readonly type: 'Boolean'; // defined on prototype by static block
|
|
156
|
+
|
|
157
|
+
readonly value: T;
|
|
158
|
+
|
|
159
|
+
private constructor(value: T) {
|
|
160
|
+
super();
|
|
161
|
+
this.value = value;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
booleanValue() {
|
|
165
|
+
return this.value;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
[Symbol.for('nodejs.util.inspect.custom')]() {
|
|
169
|
+
return `Boolean { ${this.value} }`;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
static {
|
|
173
|
+
Object.defineProperty(this.prototype, 'type', { value: 'Boolean' });
|
|
174
|
+
Object.defineProperty(Value, 'true', { value: new this(true) });
|
|
175
|
+
Object.defineProperty(Value, 'false', { value: new this(false) });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types-string-type */
|
|
180
|
+
export class JSStringValue extends PrimitiveValue {
|
|
181
|
+
declare readonly type: 'String'; // defined on prototype by static block
|
|
182
|
+
|
|
183
|
+
readonly value: string;
|
|
184
|
+
|
|
185
|
+
private constructor(value: string) {
|
|
186
|
+
super();
|
|
187
|
+
this.value = value;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
stringValue() {
|
|
191
|
+
return this.value;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
static {
|
|
195
|
+
Object.defineProperty(this.prototype, 'type', { value: 'String' });
|
|
196
|
+
createStringValue = (value) => new this(value);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types-symbol-type */
|
|
201
|
+
export class SymbolValue extends PrimitiveValue {
|
|
202
|
+
declare readonly type: 'Symbol'; // defined on prototype by static block
|
|
203
|
+
|
|
204
|
+
readonly Description: JSStringValue | UndefinedValue;
|
|
205
|
+
|
|
206
|
+
constructor(Description: JSStringValue | UndefinedValue) {
|
|
207
|
+
super();
|
|
208
|
+
this.Description = Description;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
static {
|
|
212
|
+
Object.defineProperty(this.prototype, 'type', { value: 'Symbol' });
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types-symbol-type */
|
|
217
|
+
export const wellKnownSymbols = {
|
|
218
|
+
asyncIterator: new SymbolValue(Value('Symbol.asyncIterator')),
|
|
219
|
+
hasInstance: new SymbolValue(Value('Symbol.hasInstance')),
|
|
220
|
+
isConcatSpreadable: new SymbolValue(Value('Symbol.isConcatSpreadable')),
|
|
221
|
+
iterator: new SymbolValue(Value('Symbol.iterator')),
|
|
222
|
+
match: new SymbolValue(Value('Symbol.match')),
|
|
223
|
+
matchAll: new SymbolValue(Value('Symbol.matchAll')),
|
|
224
|
+
replace: new SymbolValue(Value('Symbol.replace')),
|
|
225
|
+
search: new SymbolValue(Value('Symbol.search')),
|
|
226
|
+
species: new SymbolValue(Value('Symbol.species')),
|
|
227
|
+
split: new SymbolValue(Value('Symbol.split')),
|
|
228
|
+
toPrimitive: new SymbolValue(Value('Symbol.toPrimitive')),
|
|
229
|
+
toStringTag: new SymbolValue(Value('Symbol.toStringTag')),
|
|
230
|
+
unscopables: new SymbolValue(Value('Symbol.unscopables')),
|
|
231
|
+
} as const;
|
|
232
|
+
Object.setPrototypeOf(wellKnownSymbols, null);
|
|
233
|
+
Object.freeze(wellKnownSymbols);
|
|
234
|
+
|
|
235
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types-number-type */
|
|
236
|
+
export class NumberValue extends PrimitiveValue {
|
|
237
|
+
declare readonly type: 'Number'; // defined on prototype by static block
|
|
238
|
+
|
|
239
|
+
readonly value: number;
|
|
240
|
+
|
|
241
|
+
private constructor(value: number) {
|
|
242
|
+
super();
|
|
243
|
+
this.value = value;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
numberValue() {
|
|
247
|
+
return this.value;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
isNaN() {
|
|
251
|
+
return Number.isNaN(this.value);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
isInfinity() {
|
|
255
|
+
return !Number.isFinite(this.value) && !this.isNaN();
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
isFinite() {
|
|
259
|
+
return Number.isFinite(this.value);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-unaryMinus */
|
|
263
|
+
static unaryMinus(x: NumberValue) {
|
|
264
|
+
if (x.isNaN()) {
|
|
265
|
+
return F(NaN);
|
|
266
|
+
}
|
|
267
|
+
return F(-R(x));
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-bitwiseNOT */
|
|
271
|
+
static bitwiseNOT(x: NumberValue) {
|
|
272
|
+
// 1. Let oldValue be ! ToInt32(x).
|
|
273
|
+
const oldValue = X(ToInt32(x));
|
|
274
|
+
// 2. Return the result of applying bitwise complement to oldValue. The result is a signed 32-bit integer.
|
|
275
|
+
return F(~R(oldValue));
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-exponentiate */
|
|
279
|
+
static exponentiate(base: NumberValue, exponent: NumberValue) {
|
|
280
|
+
return F(R(base) ** R(exponent));
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-multiply */
|
|
284
|
+
static multiply(x: NumberValue, y: NumberValue) {
|
|
285
|
+
return F(R(x) * R(y));
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-divide */
|
|
289
|
+
static divide(x: NumberValue, y: NumberValue) {
|
|
290
|
+
return F(R(x) / R(y));
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-remainder */
|
|
294
|
+
static remainder(n: NumberValue, d: NumberValue) {
|
|
295
|
+
return F(R(n) % R(d));
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-add */
|
|
299
|
+
static add(x: NumberValue, y: NumberValue) {
|
|
300
|
+
return F(R(x) + R(y));
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-subtract */
|
|
304
|
+
static subtract(x: NumberValue, y: NumberValue) {
|
|
305
|
+
// The result of - operator is x + (-y).
|
|
306
|
+
return NumberValue.add(x, F(-R(y)));
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-leftShift */
|
|
310
|
+
static leftShift(x: NumberValue, y: NumberValue) {
|
|
311
|
+
// 1. Let lnum be ! ToInt32(x).
|
|
312
|
+
const lnum = X(ToInt32(x));
|
|
313
|
+
// 2. Let rnum be ! ToUint32(y).
|
|
314
|
+
const rnum = X(ToUint32(y));
|
|
315
|
+
// 3. Let shiftCount be the result of masking out all but the least significant 5 bits of rnum, that is, compute rnum & 0x1F.
|
|
316
|
+
const shiftCount = R(rnum) & 0x1F; // eslint-disable-line no-bitwise
|
|
317
|
+
// 4. Return the result of left shifting lnum by shiftCount bits. The result is a signed 32-bit integer.
|
|
318
|
+
return F(R(lnum) << shiftCount); // eslint-disable-line no-bitwise
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-signedRightShift */
|
|
322
|
+
static signedRightShift(x: NumberValue, y: NumberValue) {
|
|
323
|
+
// 1. Let lnum be ! ToInt32(x).
|
|
324
|
+
const lnum = X(ToInt32(x));
|
|
325
|
+
// 2. Let rnum be ! ToUint32(y).
|
|
326
|
+
const rnum = X(ToUint32(y));
|
|
327
|
+
// 3. Let shiftCount be the result of masking out all but the least significant 5 bits of rnum, that is, compute rnum & 0x1F.
|
|
328
|
+
const shiftCount = R(rnum) & 0x1F; // eslint-disable-line no-bitwise
|
|
329
|
+
// 4. Return the result of performing a sign-extending right shift of lnum by shiftCount bits.
|
|
330
|
+
// The most significant bit is propagated. The result is a signed 32-bit integer.
|
|
331
|
+
return F(R(lnum) >> shiftCount); // eslint-disable-line no-bitwise
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-unsignedRightShift */
|
|
335
|
+
static unsignedRightShift(x: NumberValue, y: NumberValue) {
|
|
336
|
+
// 1. Let lnum be ! ToInt32(x).
|
|
337
|
+
const lnum = X(ToInt32(x));
|
|
338
|
+
// 2. Let rnum be ! ToUint32(y).
|
|
339
|
+
const rnum = X(ToUint32(y));
|
|
340
|
+
// 3. Let shiftCount be the result of masking out all but the least significant 5 bits of rnum, that is, compute rnum & 0x1F.
|
|
341
|
+
const shiftCount = R(rnum) & 0x1F; // eslint-disable-line no-bitwise
|
|
342
|
+
// 4. Return the result of performing a zero-filling right shift of lnum by shiftCount bits.
|
|
343
|
+
// Vacated bits are filled with zero. The result is an unsigned 32-bit integer.
|
|
344
|
+
return F(R(lnum) >>> shiftCount); // eslint-disable-line no-bitwise
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-lessThan */
|
|
348
|
+
static lessThan(x: NumberValue, y: NumberValue) {
|
|
349
|
+
if (x.isNaN()) {
|
|
350
|
+
return Value.undefined;
|
|
351
|
+
}
|
|
352
|
+
if (y.isNaN()) {
|
|
353
|
+
return Value.undefined;
|
|
354
|
+
}
|
|
355
|
+
// If nx and ny are the same Number value, return false.
|
|
356
|
+
// If nx is +0 and ny is -0, return false.
|
|
357
|
+
// If nx is -0 and ny is +0, return false.
|
|
358
|
+
if (R(x) === R(y)) {
|
|
359
|
+
return Value.false;
|
|
360
|
+
}
|
|
361
|
+
if (R(x) === +Infinity) {
|
|
362
|
+
return Value.false;
|
|
363
|
+
}
|
|
364
|
+
if (R(y) === +Infinity) {
|
|
365
|
+
return Value.true;
|
|
366
|
+
}
|
|
367
|
+
if (R(y) === -Infinity) {
|
|
368
|
+
return Value.false;
|
|
369
|
+
}
|
|
370
|
+
if (R(x) === -Infinity) {
|
|
371
|
+
return Value.true;
|
|
372
|
+
}
|
|
373
|
+
return R(x) < R(y) ? Value.true : Value.false;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-equal */
|
|
377
|
+
static equal(x: NumberValue, y: NumberValue) {
|
|
378
|
+
if (x.isNaN()) {
|
|
379
|
+
return Value.false;
|
|
380
|
+
}
|
|
381
|
+
if (y.isNaN()) {
|
|
382
|
+
return Value.false;
|
|
383
|
+
}
|
|
384
|
+
const xVal = R(x);
|
|
385
|
+
const yVal = R(y);
|
|
386
|
+
if (xVal === yVal) {
|
|
387
|
+
return Value.true;
|
|
388
|
+
}
|
|
389
|
+
if (Object.is(xVal, 0) && Object.is(yVal, -0)) {
|
|
390
|
+
return Value.true;
|
|
391
|
+
}
|
|
392
|
+
if (Object.is(xVal, -0) && Object.is(yVal, 0)) {
|
|
393
|
+
return Value.true;
|
|
394
|
+
}
|
|
395
|
+
return Value.false;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-sameValue */
|
|
399
|
+
static sameValue(x: NumberValue, y: NumberValue) {
|
|
400
|
+
if (x.isNaN() && y.isNaN()) {
|
|
401
|
+
return Value.true;
|
|
402
|
+
}
|
|
403
|
+
const xVal = R(x);
|
|
404
|
+
const yVal = R(y);
|
|
405
|
+
if (Object.is(xVal, 0) && Object.is(yVal, -0)) {
|
|
406
|
+
return Value.false;
|
|
407
|
+
}
|
|
408
|
+
if (Object.is(xVal, -0) && Object.is(yVal, 0)) {
|
|
409
|
+
return Value.false;
|
|
410
|
+
}
|
|
411
|
+
if (xVal === yVal) {
|
|
412
|
+
return Value.true;
|
|
413
|
+
}
|
|
414
|
+
return Value.false;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-sameValueZero */
|
|
418
|
+
static sameValueZero(x: NumberValue, y: NumberValue) {
|
|
419
|
+
if (x.isNaN() && y.isNaN()) {
|
|
420
|
+
return Value.true;
|
|
421
|
+
}
|
|
422
|
+
const xVal = R(x);
|
|
423
|
+
const yVal = R(y);
|
|
424
|
+
if (Object.is(xVal, 0) && Object.is(yVal, -0)) {
|
|
425
|
+
return Value.true;
|
|
426
|
+
}
|
|
427
|
+
if (Object.is(xVal, -0) && Object.is(yVal, 0)) {
|
|
428
|
+
return Value.true;
|
|
429
|
+
}
|
|
430
|
+
if (xVal === yVal) {
|
|
431
|
+
return Value.true;
|
|
432
|
+
}
|
|
433
|
+
return Value.false;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-bitwiseAND */
|
|
437
|
+
static bitwiseAND(x: NumberValue, y: NumberValue) {
|
|
438
|
+
// 1. Return NumberBitwiseOp(&, x, y).
|
|
439
|
+
return NumberBitwiseOp('&', x, y);
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-bitwiseXOR */
|
|
443
|
+
static bitwiseXOR(x: NumberValue, y: NumberValue) {
|
|
444
|
+
// 1. Return NumberBitwiseOp(^, x, y).
|
|
445
|
+
return NumberBitwiseOp('^', x, y);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-bitwiseOR */
|
|
449
|
+
static bitwiseOR(x: NumberValue, y: NumberValue) {
|
|
450
|
+
// 1. Return NumberBitwiseOp(|, x, y).
|
|
451
|
+
return NumberBitwiseOp('|', x, y);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-number-tostring */
|
|
455
|
+
static override toString(x: NumberValue): JSStringValue {
|
|
456
|
+
if (x.isNaN()) {
|
|
457
|
+
return Value('NaN');
|
|
458
|
+
}
|
|
459
|
+
const xVal = R(x);
|
|
460
|
+
if (xVal === 0) {
|
|
461
|
+
return Value('0');
|
|
462
|
+
}
|
|
463
|
+
if (xVal < 0) {
|
|
464
|
+
const str = X(NumberValue.toString(F(-xVal))).stringValue();
|
|
465
|
+
return Value(`-${str}`);
|
|
466
|
+
}
|
|
467
|
+
if (x.isInfinity()) {
|
|
468
|
+
return Value('Infinity');
|
|
469
|
+
}
|
|
470
|
+
// TODO: implement properly
|
|
471
|
+
return Value(`${xVal}`);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
static readonly unit = new NumberValue(1);
|
|
475
|
+
|
|
476
|
+
static {
|
|
477
|
+
Object.defineProperty(this.prototype, 'type', { value: 'Number' });
|
|
478
|
+
createNumberValue = (value) => new NumberValue(value);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
/** https://tc39.es/ecma262/#sec-numberbitwiseop */
|
|
483
|
+
function NumberBitwiseOp(op: '&' | '|' | '^', x: NumberValue, y: NumberValue) {
|
|
484
|
+
// 1. Let lnum be ! ToInt32(x).
|
|
485
|
+
const lnum = X(ToInt32(x));
|
|
486
|
+
// 2. Let rnum be ! ToUint32(y).
|
|
487
|
+
const rnum = X(ToUint32(y));
|
|
488
|
+
// 3. Return the result of applying the bitwise operator op to lnum and rnum. The result is a signed 32-bit integer.
|
|
489
|
+
switch (op) {
|
|
490
|
+
case '&':
|
|
491
|
+
return F(R(lnum) & R(rnum));
|
|
492
|
+
case '|':
|
|
493
|
+
return F(R(lnum) | R(rnum));
|
|
494
|
+
case '^':
|
|
495
|
+
return F(R(lnum) ^ R(rnum));
|
|
496
|
+
default:
|
|
497
|
+
throw new OutOfRange('NumberBitwiseOp', op);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
/** https://tc39.es/ecma262/#sec-ecmascript-language-types-bigint-type */
|
|
502
|
+
export class BigIntValue extends PrimitiveValue {
|
|
503
|
+
declare readonly type: 'BigInt'; // defined on prototype by static block
|
|
504
|
+
|
|
505
|
+
readonly value: bigint;
|
|
506
|
+
|
|
507
|
+
private constructor(value: bigint) {
|
|
508
|
+
super();
|
|
509
|
+
this.value = value;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
bigintValue() {
|
|
513
|
+
return this.value;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
isNaN() {
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
isFinite() {
|
|
521
|
+
return true;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-unaryMinus */
|
|
525
|
+
static unaryMinus(x: BigIntValue) {
|
|
526
|
+
if (R(x) === 0n) {
|
|
527
|
+
return Z(0n);
|
|
528
|
+
}
|
|
529
|
+
return Z(-R(x));
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-bitwiseNOT */
|
|
533
|
+
static bitwiseNOT(x: BigIntValue) {
|
|
534
|
+
return Z(-R(x) - 1n);
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-exponentiate */
|
|
538
|
+
static exponentiate(base: BigIntValue, exponent: BigIntValue) {
|
|
539
|
+
// 1. If exponent < 0n, throw a RangeError exception.
|
|
540
|
+
if (R(exponent) < 0n) {
|
|
541
|
+
return surroundingAgent.Throw('RangeError', 'BigIntNegativeExponent');
|
|
542
|
+
}
|
|
543
|
+
// 2. If base is 0n and exponent is 0n, return 1n.
|
|
544
|
+
if (R(base) === 0n && R(exponent) === 0n) {
|
|
545
|
+
return Z(1n);
|
|
546
|
+
}
|
|
547
|
+
// 3. Return the BigInt value that represents the mathematical value of base raised to the power exponent.
|
|
548
|
+
return Z(R(base) ** R(exponent));
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-multiply */
|
|
552
|
+
static multiply(x: BigIntValue, y: BigIntValue) {
|
|
553
|
+
return Z(R(x) * R(y));
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-divide */
|
|
557
|
+
static divide(x: BigIntValue, y: BigIntValue) {
|
|
558
|
+
// 1. If y is 0n, throw a RangeError exception.
|
|
559
|
+
if (R(y) === 0n) {
|
|
560
|
+
return surroundingAgent.Throw('RangeError', 'BigIntDivideByZero');
|
|
561
|
+
}
|
|
562
|
+
// 2. Let quotient be the mathematical value of x divided by y.
|
|
563
|
+
const quotient = R(x) / R(y);
|
|
564
|
+
// 3. Return the BigInt value that represents quotient rounded towards 0 to the next integral value.
|
|
565
|
+
return Z(quotient);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-remainder */
|
|
569
|
+
static remainder(n: BigIntValue, d: BigIntValue) {
|
|
570
|
+
// 1. If d is 0n, throw a RangeError exception.
|
|
571
|
+
if (R(d) === 0n) {
|
|
572
|
+
return surroundingAgent.Throw('RangeError', 'BigIntDivideByZero');
|
|
573
|
+
}
|
|
574
|
+
// 2. If n is 0n, return 0n.
|
|
575
|
+
if (R(n) === 0n) {
|
|
576
|
+
return Z(0n);
|
|
577
|
+
}
|
|
578
|
+
// 3. Let r be the BigInt defined by the mathematical relation r = n - (d × q)
|
|
579
|
+
// where q is a BigInt that is negative only if n/d is negative and positive
|
|
580
|
+
// only if n/d is positive, and whose magnitude is as large as possible without
|
|
581
|
+
// exceeding the magnitude of the true mathematical quotient of n and d.
|
|
582
|
+
const r = Z(R(n) % R(d));
|
|
583
|
+
// 4. Return r.
|
|
584
|
+
return r;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-add */
|
|
588
|
+
static add(x: BigIntValue, y: BigIntValue) {
|
|
589
|
+
return Z(R(x) + R(y));
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-subtract */
|
|
593
|
+
static subtract(x: BigIntValue, y: BigIntValue) {
|
|
594
|
+
return Z(R(x) - R(y));
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-leftShift */
|
|
598
|
+
static leftShift(x: BigIntValue, y: BigIntValue) {
|
|
599
|
+
return Z(R(x) << R(y)); // eslint-disable-line no-bitwise
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-signedRightShift */
|
|
603
|
+
static signedRightShift(x: BigIntValue, y: BigIntValue) {
|
|
604
|
+
// 1. Return BigInt::leftShift(x, -y).
|
|
605
|
+
return BigIntValue.leftShift(x, Z(-R(y)));
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-unsignedRightShift */
|
|
609
|
+
static unsignedRightShift(_x: BigIntValue, _y: BigIntValue) {
|
|
610
|
+
return surroundingAgent.Throw('TypeError', 'BigIntUnsignedRightShift');
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-lessThan */
|
|
614
|
+
static lessThan(x: BigIntValue, y: BigIntValue) {
|
|
615
|
+
return R(x) < R(y) ? Value.true : Value.false;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-equal */
|
|
619
|
+
static equal(x: BigIntValue, y: BigIntValue) {
|
|
620
|
+
// Return true if x and y have the same mathematical integer value and false otherwise.
|
|
621
|
+
return R(x) === R(y) ? Value.true : Value.false;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-sameValue */
|
|
625
|
+
static sameValue(x: BigIntValue, y: BigIntValue) {
|
|
626
|
+
// 1. Return BigInt::equal(x, y).
|
|
627
|
+
return BigIntValue.equal(x, y);
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-sameValueZero */
|
|
631
|
+
static sameValueZero(x: BigIntValue, y: BigIntValue) {
|
|
632
|
+
// 1. Return BigInt::equal(x, y).
|
|
633
|
+
return BigIntValue.equal(x, y);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-bitwiseAND */
|
|
637
|
+
static bitwiseAND(x: BigIntValue, y: BigIntValue) {
|
|
638
|
+
// 1. Return BigIntBitwiseOp(&, x, y).
|
|
639
|
+
return BigIntBitwiseOp('&', x, y);
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-bitwiseXOR */
|
|
643
|
+
static bitwiseXOR(x: BigIntValue, y: BigIntValue) {
|
|
644
|
+
// 1. Return BigIntBitwiseOp(^, x, y).
|
|
645
|
+
return BigIntBitwiseOp('^', x, y);
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-bitwiseOR */
|
|
649
|
+
static bitwiseOR(x: BigIntValue, y: BigIntValue) {
|
|
650
|
+
// 1. Return BigIntBitwiseOp(|, x, y);
|
|
651
|
+
return BigIntBitwiseOp('|', x, y);
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
/** https://tc39.es/ecma262/#sec-numeric-types-bigint-tostring */
|
|
655
|
+
static override toString(x: BigIntValue): JSStringValue {
|
|
656
|
+
// 1. If x is less than zero, return the string-concatenation of the String "-" and ! BigInt::toString(-x).
|
|
657
|
+
if (R(x) < 0n) {
|
|
658
|
+
const str = X(BigIntValue.toString(Z(-R(x)))).stringValue();
|
|
659
|
+
return Value(`-${str}`);
|
|
660
|
+
}
|
|
661
|
+
// 2. Return the String value consisting of the code units of the digits of the decimal representation of x.
|
|
662
|
+
return Value(`${R(x)}`);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
static readonly unit = new BigIntValue(1n);
|
|
666
|
+
|
|
667
|
+
static {
|
|
668
|
+
Object.defineProperty(this.prototype, 'type', { value: 'BigInt' });
|
|
669
|
+
createBigIntValue = (value) => new BigIntValue(value);
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
/** https://tc39.es/ecma262/#sec-bigintbitwiseop */
|
|
674
|
+
function BigIntBitwiseOp(op: '&' | '|' | '^', x: BigIntValue, y: BigIntValue) {
|
|
675
|
+
// TODO: figure out why this doesn't work, probably the modulo.
|
|
676
|
+
/*
|
|
677
|
+
// 1. Assert: op is "&", "|", or "^".
|
|
678
|
+
Assert(['&', '|', '^'].includes(op));
|
|
679
|
+
// 2. Let result be 0n.
|
|
680
|
+
let result = 0n;
|
|
681
|
+
// 3. Let shift be 0.
|
|
682
|
+
let shift = 0n;
|
|
683
|
+
// 4. Repeat, until (x = 0 or x = -1) and (y = 0 or y = -1),
|
|
684
|
+
while (!((x === 0n || x === -1n) && (y === 0n || y === -1n))) {
|
|
685
|
+
// a. Let xDigit be x modulo 2.
|
|
686
|
+
const xDigit = x % 2n;
|
|
687
|
+
// b. Let yDigit be y modulo 2.
|
|
688
|
+
const yDigit = y % 2n;
|
|
689
|
+
// c. If op is "&", set result to result + 2^shift × BinaryAnd(xDigit, yDigit).
|
|
690
|
+
if (op === '&') {
|
|
691
|
+
result += (2n ** shift) * BinaryAnd(xDigit, yDigit);
|
|
692
|
+
} else if (op === '|') {
|
|
693
|
+
// d. Else if op is "|", set result to result + 2shift × BinaryOr(xDigit, yDigit).
|
|
694
|
+
result += (2n ** shift) * BinaryXor(xDigit, yDigit);
|
|
695
|
+
} else {
|
|
696
|
+
// i. Assert: op is "^".
|
|
697
|
+
Assert(op === '^');
|
|
698
|
+
// ii. Set result to result + 2^shift × BinaryXor(xDigit, yDigit).
|
|
699
|
+
result += (2n ** shift) * BinaryXor(xDigit, yDigit);
|
|
700
|
+
}
|
|
701
|
+
// f. Set shift to shift + 1.
|
|
702
|
+
shift += 1n;
|
|
703
|
+
// g. Set x to (x - xDigit) / 2.
|
|
704
|
+
x = (x - xDigit) / 2n;
|
|
705
|
+
// h. Set y to (y - yDigit) / 2.
|
|
706
|
+
y = (y - yDigit) / 2n;
|
|
707
|
+
}
|
|
708
|
+
let tmp;
|
|
709
|
+
// 5. If op is "&", let tmp be BinaryAnd(x modulo 2, y modulo 2).
|
|
710
|
+
if (op === '&') {
|
|
711
|
+
tmp = BinaryAnd(x % 2n, y % 2n);
|
|
712
|
+
} else if (op === '|') {
|
|
713
|
+
// 6. Else if op is "|", let tmp be BinaryOr(x modulo 2, y modulo 2).
|
|
714
|
+
tmp = BinaryOr(x % 2n, y % 2n);
|
|
715
|
+
} else {
|
|
716
|
+
// a. Assert: op is "^".
|
|
717
|
+
Assert(op === '^');
|
|
718
|
+
// b. Let tmp be BinaryXor(x modulo 2, y modulo 2).
|
|
719
|
+
tmp = BinaryXor(x % 2n, y % 2n);
|
|
720
|
+
}
|
|
721
|
+
// 8. If tmp ≠ 0, then
|
|
722
|
+
if (tmp !== 0n) {
|
|
723
|
+
// a. Set result to result - 2^shift. NOTE: This extends the sign.
|
|
724
|
+
result -= 2n ** shift;
|
|
725
|
+
}
|
|
726
|
+
// 9. Return result.
|
|
727
|
+
return Z(result);
|
|
728
|
+
*/
|
|
729
|
+
switch (op) {
|
|
730
|
+
case '&':
|
|
731
|
+
return Z(R(x) & R(y));
|
|
732
|
+
case '|':
|
|
733
|
+
return Z(R(x) | R(y));
|
|
734
|
+
case '^':
|
|
735
|
+
return Z(R(x) ^ R(y));
|
|
736
|
+
default:
|
|
737
|
+
throw new OutOfRange('BigIntBitwiseOp', op);
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
export interface ObjectInternalMethods<Self> {
|
|
742
|
+
GetPrototypeOf(this: Self): ExpressionCompletion<ObjectValue | NullValue>;
|
|
743
|
+
SetPrototypeOf(this: Self, V: ObjectValue | NullValue): ExpressionCompletion<BooleanValue>;
|
|
744
|
+
IsExtensible(this: Self): ExpressionCompletion<BooleanValue>;
|
|
745
|
+
PreventExtensions(this: Self): ExpressionCompletion<BooleanValue>;
|
|
746
|
+
GetOwnProperty(this: Self, P: PropertyKeyValue): PlainCompletion<Descriptor | UndefinedValue>;
|
|
747
|
+
DefineOwnProperty(this: Self, P: PropertyKeyValue, Desc: Descriptor): ExpressionCompletion<BooleanValue>;
|
|
748
|
+
HasProperty(this: Self, P: PropertyKeyValue): ExpressionCompletion<BooleanValue>;
|
|
749
|
+
Get(this: Self, P: PropertyKeyValue, Receiver: Value): ExpressionCompletion;
|
|
750
|
+
Set(this: Self, P: PropertyKeyValue, V: Value, Receiver: Value): ExpressionCompletion<BooleanValue>;
|
|
751
|
+
Delete(this: Self, P: PropertyKeyValue): ExpressionCompletion<BooleanValue>;
|
|
752
|
+
OwnPropertyKeys(this: Self): PlainCompletion<PropertyKeyValue[]>;
|
|
753
|
+
Call?(this: Self, thisArg: Value, args: Arguments): ExpressionCompletion;
|
|
754
|
+
Construct?(this: Self, args: Arguments, newTarget: FunctionObject | UndefinedValue): ExpressionCompletion<ObjectValue>;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
/** https://tc39.es/ecma262/#sec-object-type */
|
|
758
|
+
export class ObjectValue extends Value implements ObjectInternalMethods<ObjectValue> {
|
|
759
|
+
declare readonly type: 'Object'; // defined on prototype by static block
|
|
760
|
+
|
|
761
|
+
readonly properties: PropertyKeyMap<Descriptor>;
|
|
762
|
+
|
|
763
|
+
readonly internalSlotsList: readonly string[];
|
|
764
|
+
|
|
765
|
+
readonly PrivateElements: PrivateElementRecord[];
|
|
766
|
+
|
|
767
|
+
constructor(internalSlotsList: readonly string[]) {
|
|
768
|
+
super();
|
|
769
|
+
|
|
770
|
+
this.PrivateElements = [];
|
|
771
|
+
this.properties = new PropertyKeyMap();
|
|
772
|
+
this.internalSlotsList = internalSlotsList;
|
|
773
|
+
surroundingAgent.debugger_markObjectCreated(this);
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
// UNSAFE casts below. Methods below are expected to be rewritten when the object is not an OrdinaryObject. (an example is ArgumentExoticObject)
|
|
777
|
+
// If those methods aren't rewritten, it is an error.
|
|
778
|
+
GetPrototypeOf(): ExpressionCompletion<ObjectValue | NullValue> {
|
|
779
|
+
return OrdinaryGetPrototypeOf(this as unknown as OrdinaryObject);
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
SetPrototypeOf(V: ObjectValue | NullValue): ExpressionCompletion<BooleanValue> {
|
|
783
|
+
Q(surroundingAgent.debugger_tryTouchDuringPreview(this));
|
|
784
|
+
return OrdinarySetPrototypeOf(this as unknown as OrdinaryObject, V);
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
IsExtensible(): ExpressionCompletion<BooleanValue> {
|
|
788
|
+
return OrdinaryIsExtensible(this as unknown as OrdinaryObject);
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
PreventExtensions(): ExpressionCompletion<BooleanValue> {
|
|
792
|
+
Q(surroundingAgent.debugger_tryTouchDuringPreview(this));
|
|
793
|
+
return OrdinaryPreventExtensions(this as unknown as OrdinaryObject);
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
GetOwnProperty(P: PropertyKeyValue): PlainCompletion<Descriptor | UndefinedValue> {
|
|
797
|
+
return OrdinaryGetOwnProperty(this as unknown as OrdinaryObject, P);
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
DefineOwnProperty(P: PropertyKeyValue, Desc: Descriptor): ExpressionCompletion<BooleanValue> {
|
|
801
|
+
Q(surroundingAgent.debugger_tryTouchDuringPreview(this));
|
|
802
|
+
return OrdinaryDefineOwnProperty(this as unknown as OrdinaryObject, P, Desc);
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
HasProperty(P: PropertyKeyValue): ExpressionCompletion<BooleanValue> {
|
|
806
|
+
return OrdinaryHasProperty(this as unknown as OrdinaryObject, P);
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
Get(P: PropertyKeyValue, Receiver: Value): ExpressionCompletion {
|
|
810
|
+
return OrdinaryGet(this as unknown as OrdinaryObject, P, Receiver);
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
Set(P: PropertyKeyValue, V: Value, Receiver: Value): ExpressionCompletion<BooleanValue> {
|
|
814
|
+
// TODO:
|
|
815
|
+
Q(surroundingAgent.debugger_tryTouchDuringPreview(Receiver as ObjectValue));
|
|
816
|
+
return OrdinarySet(this as unknown as OrdinaryObject, P, V, Receiver);
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
Delete(P: PropertyKeyValue): ExpressionCompletion<BooleanValue> {
|
|
820
|
+
Q(surroundingAgent.debugger_tryTouchDuringPreview(this));
|
|
821
|
+
return OrdinaryDelete(this as unknown as OrdinaryObject, P);
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
OwnPropertyKeys(): PlainCompletion<PropertyKeyValue[]> {
|
|
825
|
+
return OrdinaryOwnPropertyKeys(this as unknown as OrdinaryObject);
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
// NON-SPEC
|
|
829
|
+
mark(m: GCMarker) {
|
|
830
|
+
m(this.properties);
|
|
831
|
+
this.internalSlotsList.forEach((s) => {
|
|
832
|
+
// @ts-ignore
|
|
833
|
+
m(this[s]);
|
|
834
|
+
});
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
static {
|
|
838
|
+
Object.defineProperty(this.prototype, 'type', { value: 'Object' });
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
/** https://tc39.es/ecma262/#sec-private-names */
|
|
843
|
+
export class PrivateName {
|
|
844
|
+
// NOTE: The following declaration distinguishes `PrivateName` from `SymbolValue` so that type guards can properly
|
|
845
|
+
// remove it from unions with `SymbolValue` due to structural overlap.
|
|
846
|
+
declare private _: never;
|
|
847
|
+
|
|
848
|
+
readonly Description: JSStringValue;
|
|
849
|
+
|
|
850
|
+
constructor(description: JSStringValue) {
|
|
851
|
+
this.Description = description;
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
export class ReferenceRecord {
|
|
856
|
+
readonly Base: 'unresolvable' | Value | EnvironmentRecord;
|
|
857
|
+
|
|
858
|
+
ReferencedName: Value | PrivateName;
|
|
859
|
+
|
|
860
|
+
readonly Strict: BooleanValue;
|
|
861
|
+
|
|
862
|
+
readonly ThisValue: Value | undefined;
|
|
863
|
+
|
|
864
|
+
constructor({
|
|
865
|
+
Base,
|
|
866
|
+
ReferencedName,
|
|
867
|
+
Strict,
|
|
868
|
+
ThisValue,
|
|
869
|
+
}: Pick<ReferenceRecord, 'Base' | 'ReferencedName' | 'Strict' | 'ThisValue'>) {
|
|
870
|
+
this.Base = Base;
|
|
871
|
+
this.ReferencedName = ReferencedName;
|
|
872
|
+
this.Strict = Strict;
|
|
873
|
+
this.ThisValue = ThisValue;
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
// NON-SPEC
|
|
877
|
+
mark(m: GCMarker) {
|
|
878
|
+
m(this.Base);
|
|
879
|
+
m(this.ReferencedName);
|
|
880
|
+
m(this.ThisValue);
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
export type DescriptorInit = Pick<Descriptor, 'Configurable' | 'Enumerable' | 'Get' | 'Set' | 'Value' | 'Writable'>;
|
|
885
|
+
// @ts-expect-error
|
|
886
|
+
export function Descriptor(O: DescriptorInit): Descriptor // @ts-expect-error
|
|
887
|
+
export @callable() class Descriptor {
|
|
888
|
+
readonly Value?: Value;
|
|
889
|
+
|
|
890
|
+
readonly Get?: FunctionObject | UndefinedValue;
|
|
891
|
+
|
|
892
|
+
readonly Set?: FunctionObject | UndefinedValue;
|
|
893
|
+
|
|
894
|
+
readonly Writable?: BooleanValue;
|
|
895
|
+
|
|
896
|
+
readonly Enumerable?: BooleanValue;
|
|
897
|
+
|
|
898
|
+
readonly Configurable?: BooleanValue;
|
|
899
|
+
|
|
900
|
+
constructor(O: Pick<Descriptor, 'Configurable' | 'Enumerable' | 'Get' | 'Set' | 'Value' | 'Writable'>) {
|
|
901
|
+
this.Value = O.Value;
|
|
902
|
+
this.Get = O.Get;
|
|
903
|
+
this.Set = O.Set;
|
|
904
|
+
this.Writable = O.Writable;
|
|
905
|
+
this.Enumerable = O.Enumerable;
|
|
906
|
+
this.Configurable = O.Configurable;
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
everyFieldIsAbsent() {
|
|
910
|
+
return this.Value === undefined
|
|
911
|
+
&& this.Get === undefined
|
|
912
|
+
&& this.Set === undefined
|
|
913
|
+
&& this.Writable === undefined
|
|
914
|
+
&& this.Enumerable === undefined
|
|
915
|
+
&& this.Configurable === undefined;
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
// NON-SPEC
|
|
919
|
+
mark(m: GCMarker) {
|
|
920
|
+
m(this.Value);
|
|
921
|
+
m(this.Get);
|
|
922
|
+
m(this.Set);
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
export class DataBlock extends Uint8Array {
|
|
927
|
+
constructor(sizeOrBuffer: number | ArrayBuffer, byteOffset?: number, length?: number) {
|
|
928
|
+
if (sizeOrBuffer instanceof ArrayBuffer) {
|
|
929
|
+
super(sizeOrBuffer, byteOffset, length);
|
|
930
|
+
} else {
|
|
931
|
+
Assert(typeof sizeOrBuffer === 'number');
|
|
932
|
+
super(sizeOrBuffer);
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
export function Type(val: Value | PrivateName | Completion<unknown> | EnvironmentRecord | Descriptor | DataBlock) {
|
|
938
|
+
if (val instanceof Value) {
|
|
939
|
+
return val.type;
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
if (val instanceof PrivateName) {
|
|
943
|
+
return 'PrivateName';
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
if (val instanceof Completion) {
|
|
947
|
+
return 'Completion';
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
if (val instanceof EnvironmentRecord) {
|
|
951
|
+
return 'EnvironmentRecord';
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
if (val instanceof Descriptor) {
|
|
955
|
+
return 'Descriptor';
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
if (val instanceof DataBlock) {
|
|
959
|
+
return 'Data Block';
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
// TODO:
|
|
963
|
+
if ((val as unknown) instanceof DataBlock) {
|
|
964
|
+
return 'Shared Data Block';
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
throw new OutOfRange('Type', val);
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
export type Arguments = readonly Value[];
|
|
971
|
+
export interface FunctionCallContext {
|
|
972
|
+
readonly thisValue: Value;
|
|
973
|
+
readonly NewTarget: FunctionObject | UndefinedValue;
|
|
974
|
+
}
|
|
975
|
+
export interface NativeSteps {
|
|
976
|
+
(this: BuiltinFunctionObject, args: Arguments, context: FunctionCallContext): void | ExpressionCompletion;
|
|
977
|
+
section?: string;
|
|
978
|
+
}
|
|
979
|
+
export interface CanBeNativeSteps {
|
|
980
|
+
(...args: Value[]): void | ExpressionCompletion;
|
|
981
|
+
}
|