@next-core/cook 2.5.4 → 2.5.5
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/dist/cjs/cook.js +3 -3
- package/dist/cjs/cook.js.map +1 -1
- package/package.json +4 -4
package/dist/cjs/cook.js
CHANGED
|
@@ -173,7 +173,7 @@ function cook(rootAst, codeSource, {
|
|
|
173
173
|
case "||":
|
|
174
174
|
return (0, _ExecutionContext.NormalCompletion)(leftValue || (0, _contextFree.GetValue)(yield* Evaluate(node.right)));
|
|
175
175
|
case "??":
|
|
176
|
-
return (0, _ExecutionContext.NormalCompletion)(leftValue
|
|
176
|
+
return (0, _ExecutionContext.NormalCompletion)(leftValue ?? (0, _contextFree.GetValue)(yield* Evaluate(node.right)));
|
|
177
177
|
// istanbul ignore next
|
|
178
178
|
default:
|
|
179
179
|
throw new SyntaxError(
|
|
@@ -1325,7 +1325,7 @@ function cook(rootAst, codeSource, {
|
|
|
1325
1325
|
return closure;
|
|
1326
1326
|
} else {
|
|
1327
1327
|
const closure = OrdinaryFunctionCreate(functionExpression, scope, true, false);
|
|
1328
|
-
SetFunctionName(closure, name
|
|
1328
|
+
SetFunctionName(closure, name ?? "");
|
|
1329
1329
|
return closure;
|
|
1330
1330
|
}
|
|
1331
1331
|
}
|
|
@@ -1334,7 +1334,7 @@ function cook(rootAst, codeSource, {
|
|
|
1334
1334
|
function InstantiateArrowFunctionExpression(arrowFunction, name) {
|
|
1335
1335
|
const scope = getRunningContext().LexicalEnvironment;
|
|
1336
1336
|
const closure = OrdinaryFunctionCreate(arrowFunction, scope, false, true);
|
|
1337
|
-
SetFunctionName(closure, name
|
|
1337
|
+
SetFunctionName(closure, name ?? "");
|
|
1338
1338
|
return closure;
|
|
1339
1339
|
}
|
|
1340
1340
|
function SetFunctionName(F, name) {
|
package/dist/cjs/cook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cook.js","names":["_contextFree","require","_ExecutionContext","_sanitize","_traverse","globalExecutionContextStack","__dev_only_clearGlobalExecutionContextStack","length","__dev_only_getGlobalExecutionContextStack","cook","rootAst","codeSource","rules","debug","externalSourceForDebug","globalVariables","ArrayConstructor","Array","hooks","_hooks$beforeEvaluate4","expressionOnly","type","doSanitize","cooked","sanitize","rootEnv","DeclarativeEnvironment","rootContext","ExecutionContext","VariableEnvironment","LexicalEnvironment","executionContextStack","key","value","Object","entries","CreateImmutableBinding","InitializeBinding","TemplateMap","WeakMap","GetTemplateObject","templateLiteral","memo","get","rawObj","quasis","map","quasi","raw","template","freeze","defineProperty","writable","enumerable","configurable","set","currentNode","Evaluate","node","optionalChainRef","forceYield","_hooks$beforeEvaluate","_hooks$beforeBranch2","beforeEvaluate","call","endsWith","expression","array","element","elements","spreadValues","GetValue","argument","push","NormalCompletion","ThrowIfFunctionIsInvalid","closure","InstantiateArrowFunctionExpression","leftRef","left","leftValue","rightRef","right","rightValue","operator","funcName","substring","start","end","TypeError","thisValue","ReferenceRecord","IsPropertyReference","Base","result","ApplyStringOrNumericBinaryOperator","ref","callee","Value","func","undefined","optional","skipped","EvaluateCall","arguments","test","consequent","alternate","ResolveBinding","name","regex","SyntaxError","flags","includes","RegExp","pattern","baseReference","object","baseValue","computed","EvaluatePropertyAccessWithExpressionKey","property","EvaluatePropertyAccessWithIdentifierKey","EvaluateNew","prop","properties","fromValue","CopyDataProperties","Set","kind","propName","EvaluateComputedPropertyName","propValue","method","SetFunctionName","expr","expressions","chunks","index","val","String","join","tagRef","tag","tagFunc","deleteStatus","ReferenceName","ApplyUnaryOperator","lref","rval","IsAnonymousFunctionDefinition","NamedEvaluation","rref","PutValue","DestructuringAssignmentEvaluation","lval","r","ApplyStringOrNumericAssignment","body","Empty","oldEnv","getRunningContext","blockEnv","BlockDeclarationInstantiation","blockValue","EvaluateStatementList","CompletionRecord","EvaluateBreakableStatement","DoWhileLoopEvaluation","ForInOfLoopEvaluation","ForLoopEvaluation","InstantiateOrdinaryFunctionExpression","_hooks$beforeBranch","beforeBranch","UpdateEmpty","v","exprRef","envRec","GetThisEnvironment","GetThisBinding","lhs","oldValue","Number","newValue","prefix","discriminant","switchValue","cases","R","CaseBlockEvaluation","block","error","handler","_hooks$beforeEvaluate2","CatchClauseEvaluation","finalizer","F","Type","declarator","declarations","init","id","InitializeReferencedBinding","bindingId","rhs","BindingInitialization","WhileLoopEvaluation","env","GetIdentifierReference","thrownValue","param","catchEnv","argName","collectBoundNames","CreateMutableBinding","B","stmtResult","input","V","defaultCaseIndex","findIndex","switchCase","hasDefaultCase","A","slice","found","C","CaseClauseIsSelected","foundInB","clauseSelector","exprValue","LoopContinues","isVariableDeclaration","lhsKind","uninitializedBoundNames","iterationKind","keyResult","ForInOfHeadEvaluation","ForInOfBodyEvaluation","runningContext","newEnv","iterator","EnumerateObjectProperties","CreateListIteratorRecord","stmt","iteratorRecord","destructuring","done","nextValue","next","lhsRef","iterationEnv","ForDeclarationBindingInstantiation","lhsName","status","return","innerResult","_node$init","ForBodyEvaluation","update","loopEnv","isConst","boundNames","dn","perIterationLets","from","bodyResult","increment","perIterationBindings","CreatePerIterationEnvironment","testRef","testValue","incRef","lastIterationEnv","outer","OuterEnv","thisIterationEnv","bn","lastValue","GetBindingValue","RequireObjectCoercible","PropertyDestructuringAssignmentEvaluation","IteratorDestructuringAssignmentEvaluation","excludedNames","valueTarget","GetV","defaultValue","add","KeyedDestructuringAssignmentEvaluation","RestDestructuringAssignmentEvaluation","propertyName","assignmentTarget","isObjectOrArray","rhsValue","restProperty","restObj","n","strict","propertyNameReference","propertyNameValue","propertyKey","ToPropertyKey","identifier","propertyNameString","code","collectScopedDeclarations","var","topLevel","d","IsConstantDeclaration","fn","fo","InstantiateFunctionObject","args","argList","ArgumentListEvaluation","debuggerCall","DebuggerCall","apply","constructExpr","constructor","IsConstructor","constructorName","isAllowedConstructor","isArray","arg","CallFunction","thisArgument","_hooks$beforeCall","beforeCall","SourceNode","calleeContext","PrepareForOrdinaryCall","OrdinaryCallBindThis","OrdinaryCallEvaluateBody","DebuggerReturn","pop","Function","localEnv","FunctionEnvironment","ThisMode","Mode","LEXICAL","BindThisValue","EvaluateFunctionBody","ECMAScriptCode","FunctionDeclarationInstantiation","statements","s","HasThisBinding","Error","_hooks$beforeEvaluate3","formals","FormalParameters","parameterNames","hasParameterExpressions","containsExpression","varDeclarations","varNames","functionNames","functionsToInitialize","i","unshift","noVar","argumentsObjectNeeded","paramName","parameterBindings","ao","CreateUnmappedArgumentsObject","concat","IteratorBindingInitialization","varEnv","instantiatedVarNames","initialValue","lexEnv","lexDeclarations","f","SetMutableBinding","argumentObject","Symbol","prototype","values","ThrowTypeError","scope","OrdinaryFunctionCreate","functionExpression","funcEnv","arrowFunction","sourceNode","isConstructor","lexicalThis","unwind","defineProperties","params","Environment","STRICT","len","ExpectedArgumentCount","count","environment","InitializeBoundName","PropertyBindingInitialization","RestBindingInitialization","KeyedBindingInitialization","P","bindingElement","isIdentifier","async","generator","DebuggerScope","DebuggerNode"],"sources":["../../src/cook.ts"],"sourcesContent":["import type {\n ArrayPattern,\n ArrowFunctionExpression,\n CallExpression,\n CatchClause,\n DoWhileStatement,\n Expression,\n ForInStatement,\n ForOfStatement,\n ForStatement,\n FunctionDeclaration,\n FunctionExpression,\n Identifier,\n LVal,\n NewExpression,\n ObjectPattern,\n Pattern,\n PatternLike,\n RestElement,\n Statement,\n SwitchCase,\n TemplateLiteral,\n VariableDeclaration,\n WhileStatement,\n} from \"@babel/types\";\nimport {\n ApplyStringOrNumericAssignment,\n CreateListIteratorRecord,\n ApplyStringOrNumericBinaryOperator,\n GetV,\n GetValue,\n InitializeReferencedBinding,\n IsPropertyReference,\n LoopContinues,\n PutValue,\n RequireObjectCoercible,\n ToPropertyKey,\n UpdateEmpty,\n ApplyUnaryOperator,\n GetIdentifierReference,\n ForDeclarationBindingInstantiation,\n CopyDataProperties,\n} from \"./context-free.js\";\nimport {\n CompletionRecord,\n DebuggerCall,\n DebuggerNode,\n DebuggerReturn,\n DebuggerScope,\n DeclarativeEnvironment,\n ECMAScriptCode,\n Empty,\n Environment,\n EnvironmentRecord,\n ExecutionContext,\n FormalParameters,\n FunctionEnvironment,\n FunctionObject,\n IsConstructor,\n NormalCompletion,\n OptionalChainRef,\n ReferenceRecord,\n SourceNode,\n Mode,\n ThisMode,\n} from \"./ExecutionContext.js\";\nimport type {\n EstreeLVal,\n EstreeNode,\n EstreeObjectExpression,\n EstreeObjectPattern,\n EstreeProperty,\n CookRules,\n FunctionDefinition,\n} from \"./interfaces.js\";\nimport { sanitize, isAllowedConstructor } from \"./sanitize.js\";\nimport {\n collectBoundNames,\n collectScopedDeclarations,\n containsExpression,\n} from \"./traverse.js\";\n\nexport interface CookOptions {\n rules?: CookRules;\n globalVariables?: Record<string, unknown>;\n hooks?: CookHooks;\n debug?: boolean;\n externalSourceForDebug?: boolean;\n ArrayConstructor?: typeof Array;\n}\n\nexport interface CookHooks {\n beforeEvaluate?(node: EstreeNode): void;\n beforeCall?(node: EstreeNode): void;\n beforeBranch?(node: EstreeNode, branch: \"if\" | \"else\"): void;\n}\n\ninterface EvaluateResult<T, TReturn> extends Iterator<T, TReturn> {\n [Symbol.iterator](): EvaluateResult<T, TReturn>;\n}\n\ntype CompletionRecordResult<T = unknown> = EvaluateResult<T, CompletionRecord>;\n\nconst globalExecutionContextStack: ExecutionContext[] = [];\n\nexport function __dev_only_clearGlobalExecutionContextStack() {\n globalExecutionContextStack.length = 0;\n}\n\nexport function __dev_only_getGlobalExecutionContextStack() {\n return globalExecutionContextStack;\n}\n\n/** For next-core internal usage only. */\nexport function cook(\n rootAst: FunctionDeclaration | Expression,\n codeSource: string,\n {\n rules,\n debug,\n externalSourceForDebug,\n globalVariables = {},\n // Allow debugger to override Array constructor.\n ArrayConstructor = Array,\n hooks = {},\n }: CookOptions = {}\n): unknown {\n const expressionOnly = rootAst.type !== \"FunctionDeclaration\";\n\n function doSanitize(cooked: unknown) {\n if (!externalSourceForDebug) {\n sanitize(cooked);\n }\n }\n\n const rootEnv = new DeclarativeEnvironment(null);\n const rootContext = new ExecutionContext();\n rootContext.VariableEnvironment = rootEnv;\n rootContext.LexicalEnvironment = rootEnv;\n const executionContextStack = [rootContext];\n\n for (const [key, value] of Object.entries(globalVariables)) {\n rootEnv.CreateImmutableBinding(key, true);\n rootEnv.InitializeBinding(key, value);\n }\n\n const TemplateMap = new WeakMap<TemplateLiteral, string[]>();\n\n // https://tc39.es/ecma262/#sec-gettemplateobject\n function GetTemplateObject(templateLiteral: TemplateLiteral): string[] {\n const memo = TemplateMap.get(templateLiteral);\n if (memo) {\n return memo;\n }\n const rawObj = templateLiteral.quasis.map((quasi) => quasi.value.raw);\n const template = templateLiteral.quasis.map((quasi) => quasi.value.cooked!);\n Object.freeze(rawObj);\n Object.defineProperty(template, \"raw\", {\n value: rawObj,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n Object.freeze(template);\n TemplateMap.set(templateLiteral, template);\n return template;\n }\n\n let currentNode: EstreeNode | undefined;\n\n function* Evaluate(\n node: EstreeNode,\n optionalChainRef?: OptionalChainRef,\n forceYield?: boolean\n ): CompletionRecordResult {\n hooks.beforeEvaluate?.(node);\n currentNode = node;\n if (\n debug &&\n (forceYield ||\n (node.type.endsWith(\"Statement\") &&\n !(\n node.type === \"ExpressionStatement\" &&\n (node.expression.type === \"CallExpression\" ||\n node.expression.type === \"TaggedTemplateExpression\")\n ) &&\n node.type !== \"TryStatement\" &&\n node.type !== \"BlockStatement\" &&\n node.type !== \"DoWhileStatement\" &&\n node.type !== \"WhileStatement\" &&\n node.type !== \"ForStatement\" &&\n node.type !== \"ForInStatement\" &&\n node.type !== \"ForOfStatement\"))\n ) {\n yield;\n }\n // Expressions:\n switch (node.type) {\n case \"ArrayExpression\": {\n // https://tc39.es/ecma262/#sec-array-initializer\n const array = new ArrayConstructor();\n for (const element of node.elements) {\n if (!element) {\n array.length += 1;\n } else if (element.type === \"SpreadElement\") {\n const spreadValues = GetValue(\n yield* Evaluate(element.argument)\n ) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(yield* Evaluate(element)));\n }\n }\n return NormalCompletion(array);\n }\n case \"ArrowFunctionExpression\": {\n // https://tc39.es/ecma262/#sec-arrow-function-definitions\n ThrowIfFunctionIsInvalid(node);\n const closure = InstantiateArrowFunctionExpression(node);\n return NormalCompletion(closure);\n }\n case \"BinaryExpression\": {\n const leftRef = yield* Evaluate(node.left);\n const leftValue = GetValue(leftRef);\n const rightRef = yield* Evaluate(node.right);\n const rightValue = GetValue(rightRef);\n if (expressionOnly && (node.operator as unknown) === \"|>\") {\n // Minimal pipeline operator is supported only in expression-only mode.\n // See https://tc39.es/proposal-pipeline-operator\n // and https://github.com/tc39/proposal-pipeline-operator\n if (typeof rightValue !== \"function\") {\n const funcName = codeSource.substring(\n node.right.start!,\n node.right.end!\n );\n throw new TypeError(`${funcName} is not a function`);\n }\n let thisValue;\n if (rightRef instanceof ReferenceRecord) {\n if (IsPropertyReference(rightRef)) {\n thisValue = rightRef.Base;\n }\n }\n return NormalCompletion(\n (rightValue as unknown as Function).call(thisValue, leftValue)\n );\n }\n // https://tc39.es/ecma262/#sec-additive-operators\n const result = ApplyStringOrNumericBinaryOperator(\n leftValue as number,\n node.operator,\n rightValue as number\n );\n return NormalCompletion(result);\n }\n case \"CallExpression\": {\n // https://tc39.es/ecma262/#sec-function-calls\n const ref = (yield* Evaluate(node.callee, optionalChainRef))\n .Value as ReferenceRecord;\n const func = GetValue(ref) as Function;\n if (\n (func === undefined || func === null) &&\n (node.optional || optionalChainRef?.skipped)\n ) {\n optionalChainRef!.skipped = true;\n return NormalCompletion(undefined);\n }\n doSanitize(func);\n\n if (debug) yield;\n\n return yield* EvaluateCall(func, ref, node.arguments, node.callee);\n }\n case \"ChainExpression\":\n // https://tc39.es/ecma262/#sec-optional-chains\n return yield* Evaluate(node.expression, {});\n case \"ConditionalExpression\":\n // https://tc39.es/ecma262/#sec-conditional-operator\n return NormalCompletion(\n GetValue(\n yield* Evaluate(\n GetValue(yield* Evaluate(node.test))\n ? node.consequent\n : node.alternate\n )\n )\n );\n case \"Identifier\":\n // https://tc39.es/ecma262/#sec-identifiers\n return NormalCompletion(ResolveBinding(node.name));\n case \"Literal\": {\n // https://tc39.es/ecma262/#sec-primary-expression-literals\n if (node.regex) {\n if (node.value === null) {\n // Invalid regular expression fails silently in @babel/parser.\n throw new SyntaxError(`Invalid regular expression: ${node.raw}`);\n }\n if (node.regex.flags.includes(\"u\")) {\n // Currently unicode flag is not fully supported across major browsers.\n throw new SyntaxError(\n `Unsupported unicode flag in regular expression: ${node.raw}`\n );\n }\n // Always create a new RegExp, because the AST will be reused.\n return NormalCompletion(\n new RegExp(node.regex.pattern, node.regex.flags)\n );\n }\n return NormalCompletion(node.value);\n }\n case \"LogicalExpression\": {\n // https://tc39.es/ecma262/#sec-binary-logical-operators\n const leftValue = GetValue(yield* Evaluate(node.left));\n switch (node.operator) {\n case \"&&\":\n return NormalCompletion(\n leftValue && GetValue(yield* Evaluate(node.right))\n );\n case \"||\":\n return NormalCompletion(\n leftValue || GetValue(yield* Evaluate(node.right))\n );\n case \"??\":\n return NormalCompletion(\n leftValue ?? GetValue(yield* Evaluate(node.right))\n );\n // istanbul ignore next\n default:\n throw new SyntaxError(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore never reach here.\n `Unsupported logical operator '${node.operator}'`\n );\n }\n }\n case \"MemberExpression\": {\n // https://tc39.es/ecma262/#sec-property-accessors\n const baseReference = (yield* Evaluate(node.object, optionalChainRef))\n .Value as ReferenceRecord;\n const baseValue = GetValue(baseReference) as Record<\n PropertyKey,\n unknown\n >;\n if (\n (baseValue === undefined || baseValue === null) &&\n (node.optional || optionalChainRef?.skipped)\n ) {\n optionalChainRef!.skipped = true;\n return NormalCompletion(undefined);\n }\n doSanitize(baseValue);\n const result = node.computed\n ? yield* EvaluatePropertyAccessWithExpressionKey(\n baseValue,\n node.property as Expression,\n true\n )\n : EvaluatePropertyAccessWithIdentifierKey(\n baseValue,\n node.property as Identifier,\n true\n );\n doSanitize(result);\n return NormalCompletion(result);\n }\n case \"NewExpression\":\n // https://tc39.es/ecma262/#sec-new-operator\n return yield* EvaluateNew(node.callee, node.arguments);\n case \"ObjectExpression\": {\n // https://tc39.es/ecma262/#sec-object-initializer\n const object: Record<PropertyKey, unknown> = {};\n for (const prop of (node as EstreeObjectExpression).properties) {\n if (prop.type === \"SpreadElement\") {\n const fromValue = GetValue(yield* Evaluate(prop.argument));\n CopyDataProperties(object, fromValue, new Set());\n } else {\n if (prop.kind !== \"init\") {\n throw new SyntaxError(\"Unsupported object getter/setter\");\n }\n const propName =\n !prop.computed && prop.key.type === \"Identifier\"\n ? prop.key.name\n : yield* EvaluateComputedPropertyName(prop.key as Expression);\n if (propName === \"__proto__\") {\n throw new TypeError(\n \"Setting '__proto__' property is not allowed\"\n );\n }\n const propValue = GetValue(yield* Evaluate(prop.value));\n if (prop.method && typeof propValue === \"function\") {\n SetFunctionName(propValue as FunctionObject, propName as string);\n }\n object[propName] = propValue;\n }\n }\n return NormalCompletion(object);\n }\n case \"SequenceExpression\": {\n // https://tc39.es/ecma262/#sec-comma-operator\n let result: CompletionRecord | undefined;\n for (const expr of node.expressions) {\n result = NormalCompletion(GetValue(yield* Evaluate(expr)));\n }\n return result!;\n }\n case \"TemplateLiteral\": {\n // https://tc39.es/ecma262/#sec-template-literals\n const chunks: string[] = [node.quasis[0].value.cooked!];\n let index = 0;\n for (const expr of node.expressions) {\n const val = GetValue(yield* Evaluate(expr));\n chunks.push(String(val));\n chunks.push(node.quasis[(index += 1)].value.cooked!);\n }\n return NormalCompletion(chunks.join(\"\"));\n }\n case \"TaggedTemplateExpression\": {\n // https://tc39.es/ecma262/#sec-tagged-templates\n const tagRef = (yield* Evaluate(node.tag)).Value as ReferenceRecord;\n const tagFunc = GetValue(tagRef) as Function;\n doSanitize(tagFunc);\n if (debug) yield;\n return yield* EvaluateCall(tagFunc, tagRef, node.quasi, node.tag);\n }\n case \"UnaryExpression\": {\n // https://tc39.es/ecma262/#sec-unary-operators\n const ref = (yield* Evaluate(node.argument)).Value as ReferenceRecord;\n if (!expressionOnly && node.operator === \"delete\") {\n // Delete operator is supported only in function mode.\n if (!(ref instanceof ReferenceRecord)) {\n return NormalCompletion(true);\n }\n // istanbul ignore else\n if (IsPropertyReference(ref)) {\n const deleteStatus = delete (\n ref.Base as Record<PropertyKey, unknown>\n )[ref.ReferenceName];\n return NormalCompletion(deleteStatus);\n }\n // Should never reach here in strict mode.\n }\n if (node.operator === \"typeof\") {\n if (ref instanceof ReferenceRecord && ref.Base === \"unresolvable\") {\n return NormalCompletion(\"undefined\");\n }\n return NormalCompletion(typeof GetValue(ref));\n }\n return NormalCompletion(\n ApplyUnaryOperator(GetValue(ref), node.operator)\n );\n }\n }\n if (!expressionOnly) {\n // Statements and assignments:\n switch (node.type) {\n case \"AssignmentExpression\": {\n // https://tc39.es/ecma262/#sec-assignment-operators\n if (node.operator === \"=\") {\n if (\n !(\n node.left.type === \"ArrayPattern\" ||\n node.left.type === \"ObjectPattern\"\n )\n ) {\n const lref = (yield* Evaluate(node.left))\n .Value as ReferenceRecord;\n let rval: unknown;\n if (\n IsAnonymousFunctionDefinition(node.right) &&\n node.left.type === \"Identifier\"\n ) {\n rval = NamedEvaluation(node.right, node.left.name);\n } else {\n const rref = yield* Evaluate(node.right);\n rval = GetValue(rref);\n }\n PutValue(lref, rval);\n return NormalCompletion(rval);\n }\n const rref = yield* Evaluate(node.right);\n const rval = GetValue(rref) as string | number;\n yield* DestructuringAssignmentEvaluation(node.left, rval);\n return NormalCompletion(rval);\n }\n // Operators other than `=`.\n const lref = (yield* Evaluate(node.left)).Value as ReferenceRecord;\n const lval = GetValue(lref) as string | number;\n const rref = yield* Evaluate(node.right);\n const rval = GetValue(rref) as string | number;\n const r = ApplyStringOrNumericAssignment(lval, node.operator, rval);\n PutValue(lref, r);\n return NormalCompletion(r);\n }\n case \"BlockStatement\": {\n // https://tc39.es/ecma262/#sec-block\n if (!node.body.length) {\n return NormalCompletion(Empty);\n }\n const oldEnv = getRunningContext().LexicalEnvironment;\n const blockEnv = new DeclarativeEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.body, blockEnv);\n getRunningContext().LexicalEnvironment = blockEnv;\n const blockValue = yield* EvaluateStatementList(node.body);\n getRunningContext().LexicalEnvironment = oldEnv;\n return blockValue;\n }\n case \"BreakStatement\":\n // https://tc39.es/ecma262/#sec-break-statement\n return new CompletionRecord(\"break\", Empty);\n case \"ContinueStatement\":\n // https://tc39.es/ecma262/#sec-continue-statement\n return new CompletionRecord(\"continue\", Empty);\n case \"EmptyStatement\":\n // https://tc39.es/ecma262/#sec-empty-statement\n return NormalCompletion(Empty);\n case \"DoWhileStatement\":\n // https://tc39.es/ecma262/#sec-do-while-statement\n return EvaluateBreakableStatement(yield* DoWhileLoopEvaluation(node));\n case \"ExpressionStatement\":\n case \"TSAsExpression\":\n // https://tc39.es/ecma262/#sec-expression-statement\n return yield* Evaluate(node.expression);\n case \"ForInStatement\":\n case \"ForOfStatement\":\n // https://tc39.es/ecma262/#sec-for-in-and-for-of-statements\n return EvaluateBreakableStatement(yield* ForInOfLoopEvaluation(node));\n case \"ForStatement\":\n // https://tc39.es/ecma262/#sec-for-statement\n return EvaluateBreakableStatement(yield* ForLoopEvaluation(node));\n case \"FunctionDeclaration\":\n // https://tc39.es/ecma262/#sec-function-definitions\n return NormalCompletion(Empty);\n case \"FunctionExpression\":\n // https://tc39.es/ecma262/#sec-function-defining-expressions\n ThrowIfFunctionIsInvalid(node);\n return NormalCompletion(InstantiateOrdinaryFunctionExpression(node));\n case \"IfStatement\":\n // https://tc39.es/ecma262/#sec-if-statement\n if (GetValue(yield* Evaluate(node.test))) {\n hooks.beforeBranch?.(node, \"if\");\n return UpdateEmpty(yield* Evaluate(node.consequent), undefined);\n }\n hooks.beforeBranch?.(node, \"else\");\n if (node.alternate) {\n return UpdateEmpty(yield* Evaluate(node.alternate), undefined);\n }\n return NormalCompletion(undefined);\n case \"ReturnStatement\": {\n // https://tc39.es/ecma262/#sec-return-statement\n let v: unknown;\n if (node.argument) {\n const exprRef = yield* Evaluate(node.argument);\n v = GetValue(exprRef);\n }\n return new CompletionRecord(\"return\", v);\n }\n case \"ThisExpression\": {\n if (!externalSourceForDebug) {\n break;\n }\n const envRec = GetThisEnvironment();\n return NormalCompletion(envRec.GetThisBinding());\n }\n case \"ThrowStatement\":\n // https://tc39.es/ecma262/#sec-throw-statement\n throw GetValue(yield* Evaluate(node.argument));\n case \"UpdateExpression\": {\n // https://tc39.es/ecma262/#sec-update-expressions\n const lhs = (yield* Evaluate(node.argument)).Value as ReferenceRecord;\n const oldValue = Number(GetValue(lhs));\n const newValue = node.operator === \"++\" ? oldValue + 1 : oldValue - 1;\n PutValue(lhs, newValue);\n return NormalCompletion(node.prefix ? newValue : oldValue);\n }\n case \"SwitchCase\":\n return yield* EvaluateStatementList(node.consequent);\n case \"SwitchStatement\": {\n // https://tc39.es/ecma262/#sec-switch-statement\n const exprRef = yield* Evaluate(node.discriminant);\n const switchValue = GetValue(exprRef);\n const oldEnv = getRunningContext().LexicalEnvironment;\n const blockEnv = new DeclarativeEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.cases, blockEnv);\n getRunningContext().LexicalEnvironment = blockEnv;\n const R = yield* CaseBlockEvaluation(node.cases, switchValue);\n getRunningContext().LexicalEnvironment = oldEnv;\n return EvaluateBreakableStatement(R);\n }\n case \"TryStatement\": {\n // https://tc39.es/ecma262/#sec-try-statement\n let R: CompletionRecord;\n try {\n R = yield* Evaluate(node.block);\n } catch (error) {\n if (node.handler) {\n currentNode = node.handler;\n hooks.beforeEvaluate?.(node.handler);\n R = yield* CatchClauseEvaluation(node.handler, error);\n } else {\n throw error;\n }\n } finally {\n if (node.finalizer) {\n const F = yield* Evaluate(node.finalizer);\n if (F.Type !== \"normal\") {\n R = F;\n }\n }\n }\n return R;\n }\n case \"VariableDeclaration\": {\n // https://tc39.es/ecma262/#sec-declarations-and-the-variable-statement\n let result: CompletionRecord | undefined;\n for (const declarator of node.declarations) {\n currentNode = declarator;\n if (!declarator.init) {\n // Assert: a declarator without init is always an identifier.\n if (node.kind === \"var\") {\n result = NormalCompletion(Empty);\n } else {\n const lhs = ResolveBinding((declarator.id as Identifier).name);\n result = InitializeReferencedBinding(lhs, undefined);\n }\n } else if (declarator.id.type === \"Identifier\") {\n currentNode = declarator.init;\n if (\n debug &&\n currentNode.type !== \"CallExpression\" &&\n currentNode.type !== \"TaggedTemplateExpression\"\n )\n yield;\n const bindingId = declarator.id.name;\n const lhs = ResolveBinding(bindingId);\n let value: unknown;\n if (IsAnonymousFunctionDefinition(declarator.init)) {\n value = NamedEvaluation(declarator.init, bindingId);\n } else {\n const rhs = yield* Evaluate(declarator.init);\n value = GetValue(rhs);\n }\n result =\n node.kind === \"var\"\n ? PutValue(lhs, value)\n : InitializeReferencedBinding(lhs, value);\n } else {\n currentNode = declarator.init;\n if (\n debug &&\n currentNode.type !== \"CallExpression\" &&\n currentNode.type !== \"TaggedTemplateExpression\"\n )\n yield;\n const rhs = yield* Evaluate(declarator.init);\n const rval = GetValue(rhs);\n result = yield* BindingInitialization(\n declarator.id,\n rval,\n node.kind === \"var\"\n ? undefined\n : getRunningContext().LexicalEnvironment\n );\n }\n }\n return result!;\n }\n case \"WhileStatement\":\n // https://tc39.es/ecma262/#sec-while-statement\n return EvaluateBreakableStatement(yield* WhileLoopEvaluation(node));\n }\n }\n // eslint-disable-next-line no-console\n throw new SyntaxError(`Unsupported node type \\`${node.type}\\``);\n }\n\n // https://tc39.es/ecma262/#sec-execution-contexts\n function getRunningContext(): ExecutionContext {\n return executionContextStack[executionContextStack.length - 1];\n }\n\n // https://tc39.es/ecma262/#sec-resolvebinding\n function ResolveBinding(\n name: string,\n env?: EnvironmentRecord\n ): ReferenceRecord {\n if (!env) {\n env = getRunningContext().LexicalEnvironment;\n }\n return GetIdentifierReference(env, name, true);\n }\n\n // Try statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-catchclauseevaluation\n function* CatchClauseEvaluation(\n node: CatchClause,\n thrownValue: unknown\n ): CompletionRecordResult {\n if (!node.param) {\n return yield* Evaluate(node.body);\n }\n const oldEnv = getRunningContext().LexicalEnvironment;\n const catchEnv = new DeclarativeEnvironment(oldEnv);\n for (const argName of collectBoundNames(node.param)) {\n catchEnv.CreateMutableBinding(argName, false);\n }\n getRunningContext().LexicalEnvironment = catchEnv;\n yield* BindingInitialization(node.param, thrownValue, catchEnv);\n const B = yield* Evaluate(node.body);\n getRunningContext().LexicalEnvironment = oldEnv;\n return B;\n }\n\n // Iteration statements and switch statements.\n // https://tc39.es/ecma262/#prod-BreakableStatement\n function EvaluateBreakableStatement(\n stmtResult: CompletionRecord\n ): CompletionRecord {\n return stmtResult.Type === \"break\"\n ? stmtResult.Value === Empty\n ? NormalCompletion(undefined)\n : NormalCompletion(stmtResult.Value)\n : stmtResult;\n }\n\n // Switch statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseblockevaluation\n function* CaseBlockEvaluation(\n cases: SwitchCase[],\n input: unknown\n ): CompletionRecordResult {\n let V: unknown;\n\n const defaultCaseIndex = cases.findIndex((switchCase) => !switchCase.test);\n const hasDefaultCase = defaultCaseIndex >= 0;\n const A = hasDefaultCase ? cases.slice(0, defaultCaseIndex) : cases;\n let found = false;\n for (const C of A) {\n if (!found) {\n found = yield* CaseClauseIsSelected(C, input);\n }\n if (found) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n }\n\n if (!hasDefaultCase) {\n return NormalCompletion(V);\n }\n\n let foundInB = false;\n const B = cases.slice(defaultCaseIndex + 1);\n if (!found) {\n for (const C of B) {\n if (!foundInB) {\n foundInB = yield* CaseClauseIsSelected(C, input);\n }\n if (foundInB) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n }\n }\n\n if (foundInB) {\n return NormalCompletion(V);\n }\n const R = yield* Evaluate(cases[defaultCaseIndex]);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n\n // NOTE: The following is another complete iteration of the second CaseClauses.\n for (const C of B) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n return NormalCompletion(V);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseclauseisselected\n function* CaseClauseIsSelected(\n C: SwitchCase,\n input: unknown\n ): EvaluateResult<unknown, boolean> {\n const clauseSelector = GetValue(yield* Evaluate(C.test!));\n return input === clauseSelector;\n }\n\n // While statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-whileloopevaluation\n function* WhileLoopEvaluation(node: WhileStatement): CompletionRecordResult {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const exprValue = GetValue(yield* Evaluate(node.test, undefined, true));\n if (!exprValue) {\n return NormalCompletion(V);\n }\n const stmtResult = yield* Evaluate(node.body);\n if (!LoopContinues(stmtResult)) {\n return UpdateEmpty(stmtResult, V);\n }\n if (stmtResult.Value !== Empty) {\n V = stmtResult.Value;\n }\n }\n }\n\n // Do-while Statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-dowhileloopevaluation\n function* DoWhileLoopEvaluation(\n node: DoWhileStatement\n ): CompletionRecordResult {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const stmtResult = yield* Evaluate(node.body);\n if (!LoopContinues(stmtResult)) {\n return UpdateEmpty(stmtResult, V);\n }\n if (stmtResult.Value !== Empty) {\n V = stmtResult.Value;\n }\n const exprValue = GetValue(yield* Evaluate(node.test, undefined, true));\n if (!exprValue) {\n return NormalCompletion(V);\n }\n }\n }\n\n // For in/of statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation\n function* ForInOfLoopEvaluation(\n node: ForInStatement | ForOfStatement\n ): CompletionRecordResult {\n const lhs = node.left;\n const isVariableDeclaration = lhs.type === \"VariableDeclaration\";\n const lhsKind = isVariableDeclaration\n ? lhs.kind === \"var\"\n ? \"varBinding\"\n : \"lexicalBinding\"\n : \"assignment\";\n const uninitializedBoundNames =\n lhsKind === \"lexicalBinding\" ? collectBoundNames(lhs) : [];\n const iterationKind =\n node.type === \"ForInStatement\" ? \"enumerate\" : \"iterate\";\n const keyResult = yield* ForInOfHeadEvaluation(\n uninitializedBoundNames,\n node.right,\n iterationKind\n );\n if (keyResult.Type !== \"normal\") {\n // When enumerate, if the target is nil, a break completion will be returned.\n return keyResult;\n }\n return yield* ForInOfBodyEvaluation(\n lhs,\n node.body,\n keyResult.Value as Iterator<unknown>,\n iterationKind,\n lhsKind\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-forinofheadevaluation\n function* ForInOfHeadEvaluation(\n uninitializedBoundNames: string[],\n expr: Expression,\n iterationKind: \"enumerate\" | \"iterate\"\n ): CompletionRecordResult {\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n if (uninitializedBoundNames.length > 0) {\n const newEnv = new DeclarativeEnvironment(oldEnv);\n for (const name of uninitializedBoundNames) {\n newEnv.CreateMutableBinding(name, false);\n }\n runningContext.LexicalEnvironment = newEnv;\n }\n const exprRef = yield* Evaluate(expr, undefined, true);\n runningContext.LexicalEnvironment = oldEnv;\n const exprValue = GetValue(exprRef);\n if (iterationKind === \"enumerate\") {\n if (exprValue === null || exprValue === undefined) {\n return new CompletionRecord(\"break\", Empty);\n }\n const iterator = EnumerateObjectProperties(exprValue);\n return NormalCompletion(iterator);\n }\n const iterator = CreateListIteratorRecord(exprValue as Iterable<unknown>);\n return NormalCompletion(iterator);\n }\n\n function* ForInOfBodyEvaluation(\n node: VariableDeclaration | EstreeLVal,\n stmt: Statement,\n iteratorRecord: Iterator<unknown>,\n iterationKind: \"enumerate\" | \"iterate\",\n lhsKind: \"varBinding\" | \"lexicalBinding\" | \"assignment\"\n ): CompletionRecordResult {\n const lhs =\n lhsKind === \"assignment\"\n ? (node as EstreeLVal)\n : (node as VariableDeclaration).declarations[0].id;\n const oldEnv = getRunningContext().LexicalEnvironment;\n let V: unknown;\n // When `destructuring` is false,\n // For `node` whose `kind` is assignment:\n // `lhs` is an `Identifier` or a `MemberExpression`,\n // Otherwise:\n // `lhs` is an `Identifier`.\n const destructuring =\n lhs.type === \"ObjectPattern\" || lhs.type === \"ArrayPattern\";\n // eslint-disable-next-line no-constant-condition\n while (true) {\n currentNode = lhs;\n const { done, value: nextValue } = iteratorRecord.next();\n if (done) {\n if (debug) yield;\n return NormalCompletion(V);\n }\n let lhsRef: ReferenceRecord | undefined;\n let iterationEnv: DeclarativeEnvironment | undefined;\n if (lhsKind === \"lexicalBinding\") {\n iterationEnv = new DeclarativeEnvironment(oldEnv);\n ForDeclarationBindingInstantiation(\n node as VariableDeclaration,\n iterationEnv\n );\n getRunningContext().LexicalEnvironment = iterationEnv;\n if (debug) yield;\n if (!destructuring) {\n const [lhsName] = collectBoundNames(lhs);\n lhsRef = ResolveBinding(lhsName);\n }\n } else {\n if (debug) yield;\n if (!destructuring) {\n lhsRef = (yield* Evaluate(lhs)).Value as ReferenceRecord;\n }\n }\n\n destructuring\n ? lhsKind === \"assignment\"\n ? yield* DestructuringAssignmentEvaluation(lhs, nextValue)\n : lhsKind === \"varBinding\"\n ? yield* BindingInitialization(lhs, nextValue, undefined)\n : yield* BindingInitialization(lhs, nextValue, iterationEnv)\n : lhsKind === \"lexicalBinding\"\n ? InitializeReferencedBinding(lhsRef!, nextValue)\n : PutValue(lhsRef!, nextValue);\n\n const result = yield* Evaluate(stmt);\n getRunningContext().LexicalEnvironment = oldEnv;\n if (!LoopContinues(result)) {\n const status = UpdateEmpty(result, V);\n if (\n !(\n iterationKind === \"enumerate\" || iteratorRecord.return === undefined\n )\n ) {\n // Perform *IteratorClose*\n // https://tc39.es/ecma262/#sec-iteratorclose\n const innerResult = iteratorRecord.return();\n if (\n !innerResult ||\n ![\"object\", \"function\"].includes(typeof innerResult)\n ) {\n throw new TypeError(`Iterator result is not an object`);\n }\n }\n return status;\n }\n if (result.Value !== Empty) {\n V = result.Value;\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-enumerate-object-properties\n function* EnumerateObjectProperties(value: any): Iterator<PropertyKey> {\n for (const key in value) {\n yield key;\n }\n }\n\n // For statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-forloopevaluation\n function* ForLoopEvaluation(node: ForStatement): CompletionRecordResult {\n if (node.init?.type === \"VariableDeclaration\") {\n // `for (var … ; … ; … ) …`\n if (node.init.kind === \"var\") {\n yield* Evaluate(node.init);\n return yield* ForBodyEvaluation(node.test, node.update, node.body, []);\n }\n // `for (let/const … ; … ; … ) …`\n const oldEnv = getRunningContext().LexicalEnvironment;\n const loopEnv = new DeclarativeEnvironment(oldEnv);\n const isConst = node.init.kind === \"const\";\n const boundNames = collectBoundNames(node.init);\n for (const dn of boundNames) {\n if (isConst) {\n loopEnv.CreateImmutableBinding(dn, true);\n } else {\n loopEnv.CreateMutableBinding(dn, false);\n }\n }\n getRunningContext().LexicalEnvironment = loopEnv;\n yield* Evaluate(node.init);\n const perIterationLets = isConst ? [] : Array.from(boundNames);\n const bodyResult = yield* ForBodyEvaluation(\n node.test,\n node.update,\n node.body,\n perIterationLets\n );\n getRunningContext().LexicalEnvironment = oldEnv;\n return bodyResult;\n }\n // `for ( … ; … ; … ) …`\n if (node.init) {\n const exprRef = yield* Evaluate(node.init);\n GetValue(exprRef);\n }\n return yield* ForBodyEvaluation(node.test, node.update, node.body, []);\n }\n\n // https://tc39.es/ecma262/#sec-forbodyevaluation\n function* ForBodyEvaluation(\n test: Expression | null | undefined,\n increment: Expression | null | undefined,\n stmt: Statement,\n perIterationBindings: string[]\n ): CompletionRecordResult {\n CreatePerIterationEnvironment(perIterationBindings);\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (test) {\n const testRef = yield* Evaluate(test, undefined, true);\n const testValue = GetValue(testRef);\n if (!testValue) {\n return NormalCompletion(V);\n }\n }\n const result = yield* Evaluate(stmt);\n if (!LoopContinues(result)) {\n return UpdateEmpty(result, V);\n }\n if (result.Value) {\n V = result.Value;\n }\n CreatePerIterationEnvironment(perIterationBindings);\n if (increment) {\n const incRef = yield* Evaluate(increment, undefined, true);\n GetValue(incRef);\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-createperiterationenvironment\n function CreatePerIterationEnvironment(\n perIterationBindings: string[]\n ): unknown {\n if (perIterationBindings.length === 0) {\n return;\n }\n const lastIterationEnv = getRunningContext().LexicalEnvironment!;\n const outer = lastIterationEnv.OuterEnv;\n const thisIterationEnv = new DeclarativeEnvironment(outer);\n for (const bn of perIterationBindings) {\n thisIterationEnv.CreateMutableBinding(bn, false);\n const lastValue = lastIterationEnv.GetBindingValue(bn, false);\n thisIterationEnv.InitializeBinding(bn, lastValue);\n }\n getRunningContext().LexicalEnvironment = thisIterationEnv;\n }\n\n // Destructuring assignments.\n // https://tc39.es/ecma262/#sec-runtime-semantics-destructuringassignmentevaluation\n function* DestructuringAssignmentEvaluation(\n pattern: ObjectPattern | EstreeObjectPattern | ArrayPattern,\n value: unknown\n ): CompletionRecordResult {\n if (pattern.type === \"ObjectPattern\") {\n RequireObjectCoercible(value);\n if (pattern.properties.length > 0) {\n yield* PropertyDestructuringAssignmentEvaluation(\n (pattern as EstreeObjectPattern).properties,\n value\n );\n }\n return NormalCompletion(Empty);\n }\n const iteratorRecord = CreateListIteratorRecord(value as Iterable<unknown>);\n return yield* IteratorDestructuringAssignmentEvaluation(\n pattern.elements,\n iteratorRecord\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-propertydestructuringassignmentevaluation\n function* PropertyDestructuringAssignmentEvaluation(\n properties: (EstreeProperty | RestElement)[],\n value: unknown\n ): EvaluateResult<unknown, void> {\n const excludedNames = new Set<PropertyKey>();\n for (const prop of properties) {\n if (prop.type === \"Property\") {\n const propName =\n !prop.computed && prop.key.type === \"Identifier\"\n ? prop.key.name\n : ((yield* EvaluateComputedPropertyName(\n prop.key as Expression\n )) as string);\n const valueTarget =\n prop.value.type === \"AssignmentPattern\"\n ? prop.value.left\n : prop.value;\n if (valueTarget.type === \"Identifier\") {\n const lref = ResolveBinding(valueTarget.name);\n let v = GetV(value, propName);\n if (prop.value.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(prop.value.right)) {\n v = NamedEvaluation(prop.value.right, valueTarget.name);\n } else {\n const defaultValue = yield* Evaluate(prop.value.right);\n v = GetValue(defaultValue);\n }\n }\n PutValue(lref, v);\n excludedNames.add(propName);\n } else {\n yield* KeyedDestructuringAssignmentEvaluation(\n prop.value,\n value,\n propName\n );\n excludedNames.add(propName);\n }\n } else {\n yield* RestDestructuringAssignmentEvaluation(\n prop,\n value,\n excludedNames\n );\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-keyeddestructuringassignmentevaluation\n function* KeyedDestructuringAssignmentEvaluation(\n node: EstreeNode,\n value: unknown,\n propertyName: PropertyKey\n ): CompletionRecordResult {\n const assignmentTarget =\n node.type === \"AssignmentPattern\" ? node.left : node;\n const isObjectOrArray =\n assignmentTarget.type === \"ArrayPattern\" ||\n assignmentTarget.type === \"ObjectPattern\";\n let lref: ReferenceRecord | undefined;\n if (!isObjectOrArray) {\n lref = (yield* Evaluate(assignmentTarget)).Value as ReferenceRecord;\n }\n const v = GetV(value, propertyName);\n let rhsValue;\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n // `assignmentTarget.type` is never \"Identifier\" here.\n const defaultValue = yield* Evaluate(node.right);\n rhsValue = GetValue(defaultValue);\n } else {\n rhsValue = v;\n }\n if (isObjectOrArray) {\n return yield* DestructuringAssignmentEvaluation(\n assignmentTarget,\n rhsValue\n );\n }\n return PutValue(lref!, rhsValue);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-restdestructuringassignmentevaluation\n function* RestDestructuringAssignmentEvaluation(\n restProperty: RestElement,\n value: unknown,\n excludedNames: Set<PropertyKey>\n ): CompletionRecordResult {\n const lref = (yield* Evaluate(restProperty.argument))\n .Value as ReferenceRecord;\n const restObj = CopyDataProperties({}, value, excludedNames);\n return PutValue(lref, restObj);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-iteratordestructuringassignmentevaluation\n function* IteratorDestructuringAssignmentEvaluation(\n elements: (PatternLike | LVal | null)[],\n iteratorRecord: Iterator<unknown>\n ): CompletionRecordResult {\n let status = NormalCompletion(Empty);\n for (const element of elements) {\n if (!element) {\n iteratorRecord.next();\n status = NormalCompletion(Empty);\n continue;\n }\n const assignmentTarget =\n element.type === \"RestElement\"\n ? element.argument\n : element.type === \"AssignmentPattern\"\n ? element.left\n : element;\n const isObjectOrArray =\n assignmentTarget.type === \"ArrayPattern\" ||\n assignmentTarget.type === \"ObjectPattern\";\n let lref: ReferenceRecord | undefined;\n if (!isObjectOrArray) {\n lref = (yield* Evaluate(assignmentTarget)).Value as ReferenceRecord;\n }\n let v: unknown;\n if (element.type !== \"RestElement\") {\n const { done, value: nextValue } = iteratorRecord.next();\n const value = done ? undefined : nextValue;\n if (element.type === \"AssignmentPattern\" && value === undefined) {\n if (\n IsAnonymousFunctionDefinition(element.right) &&\n assignmentTarget.type === \"Identifier\"\n ) {\n v = NamedEvaluation(element.right, assignmentTarget.name);\n } else {\n const defaultValue = yield* Evaluate(element.right);\n v = GetValue(defaultValue);\n }\n } else {\n v = value;\n }\n } else {\n // RestElement\n v = new ArrayConstructor();\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value: nextValue } = iteratorRecord.next();\n if (done) {\n break;\n }\n (v as unknown[])[n] = nextValue;\n n++;\n }\n }\n if (isObjectOrArray) {\n status = yield* DestructuringAssignmentEvaluation(assignmentTarget, v);\n } else {\n status = PutValue(lref!, v);\n }\n }\n return status;\n }\n\n // Object expressions.\n // https://tc39.es/ecma262/#sec-evaluate-property-access-with-expression-key\n function* EvaluatePropertyAccessWithExpressionKey(\n baseValue: Record<PropertyKey, unknown>,\n expression: Expression,\n strict: boolean\n ): EvaluateResult<unknown, ReferenceRecord> {\n const propertyNameReference = yield* Evaluate(expression);\n const propertyNameValue = GetValue(propertyNameReference);\n const propertyKey = ToPropertyKey(propertyNameValue);\n return new ReferenceRecord(baseValue, propertyKey, strict);\n }\n\n // https://tc39.es/ecma262/#sec-evaluate-property-access-with-identifier-key\n function EvaluatePropertyAccessWithIdentifierKey(\n baseValue: Record<PropertyKey, unknown>,\n identifier: Identifier,\n strict: boolean\n ): ReferenceRecord {\n currentNode = identifier;\n const propertyNameString = identifier.name;\n return new ReferenceRecord(baseValue, propertyNameString, strict);\n }\n\n // Block statements.\n // https://tc39.es/ecma262/#sec-blockdeclarationinstantiation\n function BlockDeclarationInstantiation(\n code: Statement[] | SwitchCase[],\n env: EnvironmentRecord\n ): void {\n const declarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: false,\n });\n for (const d of declarations) {\n const IsConstantDeclaration =\n d.type === \"VariableDeclaration\" && d.kind === \"const\";\n for (const dn of collectBoundNames(d)) {\n if (IsConstantDeclaration) {\n env.CreateImmutableBinding(dn, true);\n } else {\n env.CreateMutableBinding(dn, false);\n }\n }\n if (d.type === \"FunctionDeclaration\") {\n const [fn] = collectBoundNames(d);\n const fo = InstantiateFunctionObject(d, env);\n env.InitializeBinding(fn, fo);\n }\n }\n }\n\n // Function declarations and expressions.\n // https://tc39.es/ecma262/#sec-evaluatecall\n function* EvaluateCall(\n func: Function,\n ref: ReferenceRecord,\n args: CallExpression[\"arguments\"] | TemplateLiteral,\n callee: CallExpression[\"callee\"]\n ): CompletionRecordResult {\n let thisValue;\n if (ref instanceof ReferenceRecord) {\n if (IsPropertyReference(ref)) {\n thisValue = ref.Base;\n }\n }\n const argList = yield* ArgumentListEvaluation(args);\n if (typeof func !== \"function\") {\n const funcName = codeSource.substring(callee.start!, callee.end!);\n throw new TypeError(`${funcName} is not a function`);\n }\n\n if (debug || externalSourceForDebug) {\n const debuggerCall = (func as FunctionObject)[DebuggerCall];\n if (debuggerCall) {\n const result = yield* (debuggerCall as Function).apply(\n thisValue,\n argList\n );\n doSanitize(result);\n return NormalCompletion(result);\n }\n }\n\n const result = func.apply(thisValue, argList);\n doSanitize(result);\n return NormalCompletion(result);\n }\n\n // https://tc39.es/ecma262/#sec-evaluatenew\n function* EvaluateNew(\n constructExpr: CallExpression[\"callee\"],\n args: NewExpression[\"arguments\"]\n ): CompletionRecordResult {\n const ref = yield* Evaluate(constructExpr);\n const constructor = GetValue(ref) as new (...args: unknown[]) => unknown;\n const argList = yield* ArgumentListEvaluation(args);\n if (\n typeof constructor !== \"function\" ||\n (constructor as unknown as FunctionObject)[IsConstructor] === false\n ) {\n const constructorName = codeSource.substring(\n constructExpr.start!,\n constructExpr.end!\n );\n throw new TypeError(`${constructorName} is not a constructor`);\n }\n if (\n !externalSourceForDebug &&\n !isAllowedConstructor(constructor) &&\n constructor !== ArrayConstructor\n ) {\n const constructorName = codeSource.substring(\n constructExpr.start!,\n constructExpr.end!\n );\n throw new TypeError(`${constructorName} is not an allowed constructor`);\n }\n\n return NormalCompletion(new constructor(...argList));\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-argumentlistevaluation\n function* ArgumentListEvaluation(\n args: CallExpression[\"arguments\"] | TemplateLiteral\n ): EvaluateResult<unknown, unknown[]> {\n const array: unknown[] = [];\n if (Array.isArray(args)) {\n for (const arg of args) {\n if (arg.type === \"SpreadElement\") {\n const spreadValues = GetValue(\n yield* Evaluate(arg.argument)\n ) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(yield* Evaluate(arg)));\n }\n }\n } else {\n array.push(GetTemplateObject(args));\n for (const expr of args.expressions) {\n array.push(GetValue(yield* Evaluate(expr)));\n }\n }\n return array;\n }\n\n // https://tc39.es/ecma262/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n function* CallFunction(\n closure: FunctionObject,\n thisArgument: unknown,\n args: Iterable<unknown>\n ): EvaluateResult<unknown, unknown> {\n hooks.beforeCall?.(closure[SourceNode]);\n const calleeContext = PrepareForOrdinaryCall(closure);\n OrdinaryCallBindThis(closure, calleeContext, thisArgument);\n const result = yield* OrdinaryCallEvaluateBody(closure, args);\n if (debug) {\n currentNode = {\n ...closure[SourceNode],\n [DebuggerReturn]: true,\n } as EstreeNode & {\n [DebuggerReturn]?: boolean;\n };\n yield {\n type: \"return\",\n value: result.Type === \"return\" ? result.Value : undefined,\n };\n }\n executionContextStack.pop();\n globalExecutionContextStack.pop();\n if (result.Type === \"return\") {\n return result.Value;\n }\n return undefined;\n }\n\n // https://tc39.es/ecma262/#sec-prepareforordinarycall\n function PrepareForOrdinaryCall(F: FunctionObject): ExecutionContext {\n const calleeContext = new ExecutionContext();\n calleeContext.Function = F;\n const localEnv = new FunctionEnvironment(F);\n calleeContext.VariableEnvironment = localEnv;\n calleeContext.LexicalEnvironment = localEnv;\n executionContextStack.push(calleeContext);\n globalExecutionContextStack.push(calleeContext);\n return calleeContext;\n }\n\n function OrdinaryCallBindThis(\n F: FunctionObject,\n calleeContext: ExecutionContext,\n thisArgument: unknown\n ) {\n if (F[ThisMode] === Mode.LEXICAL) {\n return;\n }\n const localEnv = calleeContext.LexicalEnvironment;\n (localEnv as FunctionEnvironment)?.BindThisValue(thisArgument);\n }\n\n // https://tc39.es/ecma262/#sec-ordinarycallevaluatebody\n function* OrdinaryCallEvaluateBody(\n F: FunctionObject,\n args: Iterable<unknown>\n ): CompletionRecordResult {\n return yield* EvaluateFunctionBody(F[ECMAScriptCode], F, args);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-evaluatefunctionbody\n function* EvaluateFunctionBody(\n body: Statement[] | Expression,\n F: FunctionObject,\n args: Iterable<unknown>\n ): CompletionRecordResult {\n yield* FunctionDeclarationInstantiation(F, args);\n if (Array.isArray(body)) {\n return yield* EvaluateStatementList(body);\n }\n return new CompletionRecord(\"return\", GetValue(yield* Evaluate(body)));\n }\n\n // https://tc39.es/ecma262/#sec-block-runtime-semantics-evaluation\n function* EvaluateStatementList(\n statements: Statement[]\n ): CompletionRecordResult {\n let result = NormalCompletion(Empty);\n for (const stmt of statements) {\n const s = yield* Evaluate(stmt);\n if (s.Type !== \"normal\") {\n return s;\n }\n result = UpdateEmpty(result, s.Value);\n }\n return result;\n }\n\n function GetThisEnvironment(): FunctionEnvironment {\n let env: EnvironmentRecord | null | undefined =\n getRunningContext().LexicalEnvironment;\n while (env) {\n if (env.HasThisBinding()) {\n return env as FunctionEnvironment;\n }\n env = env.OuterEnv;\n }\n throw new Error(\"Accessing global this is forbidden\");\n }\n\n // https://tc39.es/ecma262/#sec-isanonymousfunctiondefinition\n function IsAnonymousFunctionDefinition(\n node: EstreeNode\n ): node is FunctionDefinition {\n // No ParenthesizedExpression in ESTree.\n return (\n (node.type === \"FunctionExpression\" && !node.id) ||\n node.type === \"ArrowFunctionExpression\"\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-namedevaluation\n function NamedEvaluation(node: FunctionDefinition, name: string) {\n hooks.beforeEvaluate?.(node);\n // No ParenthesizedExpression in ESTree.\n switch (node.type) {\n case \"FunctionExpression\":\n return InstantiateOrdinaryFunctionExpression(node, name);\n case \"ArrowFunctionExpression\":\n return InstantiateArrowFunctionExpression(node, name);\n // istanbul ignore next: should never happen\n default:\n throw new Error(\n `Unexpected node type for NamedEvaluation: ${(node as FunctionDefinition).type}`\n );\n }\n }\n\n // https://tc39.es/ecma262/#sec-functiondeclarationinstantiation\n function* FunctionDeclarationInstantiation(\n func: FunctionObject,\n args: Iterable<unknown>\n ): EvaluateResult<unknown, void> {\n const calleeContext = getRunningContext();\n const code = func[ECMAScriptCode];\n const formals = func[FormalParameters] as FunctionDeclaration[\"params\"];\n const parameterNames = collectBoundNames(formals);\n const hasParameterExpressions = containsExpression(formals);\n const varDeclarations = collectScopedDeclarations(code, {\n var: true,\n topLevel: true,\n });\n const varNames = collectBoundNames(varDeclarations);\n\n // `functionNames` ∈ `varNames`\n // `functionsToInitialize` ≈ `functionNames`\n const functionNames: string[] = [];\n const functionsToInitialize: FunctionDeclaration[] = [];\n for (let i = varDeclarations.length - 1; i >= 0; i--) {\n const d = varDeclarations[i];\n if (d.type === \"FunctionDeclaration\") {\n ThrowIfFunctionIsInvalid(d);\n const [fn] = collectBoundNames(d);\n if (!functionNames.includes(fn)) {\n functionNames.unshift(fn);\n functionsToInitialize.unshift(d);\n }\n } else if (rules?.noVar) {\n throw new SyntaxError(\n \"Var declaration is not recommended, use `let` or `const` instead\"\n );\n }\n }\n\n // let argumentsObjectNeeded = true;\n // if (func[ThisMode] === Mode.LEXICAL) {\n // // NOTE: Arrow functions never have an arguments object.\n // argumentsObjectNeeded = false;\n // } else if (parameterNames.includes(\"arguments\")) {\n // argumentsObjectNeeded = false;\n // } else if (!hasParameterExpressions && (\n // varNames.includes(\"arguments\") ||\n // collectBoundNames(collectScopedDeclarations(code, { var: false })).includes(\"arguments\")\n // )) {\n // argumentsObjectNeeded = false;\n // }\n // NOTE: In strict mode, no parameter/function/var/lexical names can be \"arguments\".\n const argumentsObjectNeeded =\n !!externalSourceForDebug && func[ThisMode] !== Mode.LEXICAL;\n\n const env = calleeContext.LexicalEnvironment!;\n for (const paramName of parameterNames) {\n // In strict mode, it's guaranteed no duplicate params exist.\n env.CreateMutableBinding(paramName, false);\n }\n\n let parameterBindings = parameterNames;\n if (argumentsObjectNeeded) {\n const ao = CreateUnmappedArgumentsObject(args);\n env.CreateImmutableBinding(\"arguments\", false);\n env.InitializeBinding(\"arguments\", ao);\n parameterBindings = parameterNames.concat(\"arguments\");\n }\n\n const iteratorRecord = CreateListIteratorRecord(args);\n yield* IteratorBindingInitialization(formals, iteratorRecord, env);\n\n let varEnv: EnvironmentRecord;\n if (!hasParameterExpressions) {\n // NOTE: Only a single Environment Record is needed for the parameters\n // and top-level vars.\n // `varNames` are unique.\n const instantiatedVarNames = [...parameterBindings];\n for (const n of varNames) {\n if (!instantiatedVarNames.includes(n)) {\n instantiatedVarNames.push(n);\n env.CreateMutableBinding(n, false);\n env.InitializeBinding(n, undefined);\n }\n }\n varEnv = env;\n } else {\n // NOTE: A separate Environment Record is needed to ensure that closures\n // created by expressions in the formal parameter list do not have\n // visibility of declarations in the function body.\n varEnv = new DeclarativeEnvironment(env);\n calleeContext.VariableEnvironment = varEnv;\n // `varNames` are unique.\n const instantiatedVarNames: string[] = [];\n for (const n of varNames) {\n if (!instantiatedVarNames.includes(n)) {\n instantiatedVarNames.push(n);\n varEnv.CreateMutableBinding(n, false);\n let initialValue: unknown;\n if (parameterBindings.includes(n) && !functionNames.includes(n)) {\n initialValue = env.GetBindingValue(n, false);\n }\n varEnv.InitializeBinding(n, initialValue);\n // NOTE: A var with the same name as a formal parameter initially has\n // the same value as the corresponding initialized parameter.\n }\n }\n }\n const lexEnv = varEnv;\n calleeContext.LexicalEnvironment = lexEnv;\n\n const lexDeclarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: true,\n });\n for (const d of lexDeclarations) {\n for (const dn of collectBoundNames(d)) {\n // Only lexical VariableDeclaration here in top-level.\n if ((d as VariableDeclaration).kind === \"const\") {\n lexEnv.CreateImmutableBinding(dn, true);\n } else {\n lexEnv.CreateMutableBinding(dn, false);\n }\n }\n }\n\n for (const f of functionsToInitialize) {\n const [fn] = collectBoundNames(f);\n const fo = InstantiateFunctionObject(f, lexEnv);\n varEnv.SetMutableBinding(fn, fo, false);\n }\n }\n\n function CreateUnmappedArgumentsObject(args: Iterable<unknown>) {\n const argList = [...args];\n const argumentObject: Record<string, unknown> = {};\n Object.defineProperty(argumentObject, \"length\", {\n value: argList.length,\n writable: true,\n configurable: true,\n });\n for (let index = 0; index < argList.length; index++) {\n argumentObject[String(index)] = argList[index];\n }\n Object.defineProperty(argumentObject, Symbol.iterator, {\n value: Array.prototype.values,\n writable: true,\n configurable: true,\n });\n const ThrowTypeError = () => {\n throw new TypeError(\n \"'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them\"\n );\n };\n Object.defineProperty(argumentObject, \"callee\", {\n get: ThrowTypeError,\n set: ThrowTypeError,\n });\n return argumentObject;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiatefunctionobject\n function InstantiateFunctionObject(\n func: FunctionDeclaration,\n scope: EnvironmentRecord\n ): FunctionObject {\n const F = OrdinaryFunctionCreate(func, scope, true, false);\n\n if (func.id) {\n SetFunctionName(F, func.id.name);\n }\n\n return F;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiateordinaryfunctionexpression\n function InstantiateOrdinaryFunctionExpression(\n functionExpression: FunctionExpression,\n name?: string\n ): FunctionObject {\n const scope = getRunningContext().LexicalEnvironment!;\n if (functionExpression.id) {\n const name = functionExpression.id.name;\n const funcEnv = new DeclarativeEnvironment(scope);\n funcEnv.CreateImmutableBinding(name, false);\n const closure = OrdinaryFunctionCreate(\n functionExpression,\n funcEnv,\n true,\n false\n );\n SetFunctionName(closure, name);\n funcEnv.InitializeBinding(name, closure);\n return closure;\n } else {\n const closure = OrdinaryFunctionCreate(\n functionExpression,\n scope,\n true,\n false\n );\n SetFunctionName(closure, name ?? \"\");\n return closure;\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiatearrowfunctionexpression\n function InstantiateArrowFunctionExpression(\n arrowFunction: ArrowFunctionExpression,\n name?: string\n ): FunctionObject {\n const scope = getRunningContext().LexicalEnvironment!;\n const closure = OrdinaryFunctionCreate(arrowFunction, scope, false, true);\n SetFunctionName(closure, name ?? \"\");\n return closure;\n }\n\n function SetFunctionName(F: FunctionObject, name: string) {\n Object.defineProperty(F, \"name\", {\n value: name,\n configurable: true,\n });\n }\n\n // https://tc39.es/ecma262/#sec-ordinaryfunctioncreate\n function OrdinaryFunctionCreate(\n sourceNode:\n | FunctionDeclaration\n | FunctionExpression\n | ArrowFunctionExpression,\n scope: EnvironmentRecord,\n isConstructor: boolean,\n lexicalThis: boolean\n ): FunctionObject {\n const F = function (this: unknown) {\n // eslint-disable-next-line prefer-rest-params\n return unwind(CallFunction(F, this, arguments));\n } as FunctionObject;\n Object.defineProperties(F, {\n [SourceNode]: {\n value: sourceNode,\n },\n [FormalParameters]: {\n value: sourceNode.params,\n },\n [ECMAScriptCode]: {\n value:\n sourceNode.body.type === \"BlockStatement\"\n ? sourceNode.body.body\n : sourceNode.body,\n },\n [Environment]: {\n value: scope,\n },\n [IsConstructor]: {\n value: isConstructor,\n },\n [ThisMode]: {\n value: lexicalThis ? Mode.LEXICAL : Mode.STRICT,\n },\n });\n\n const len = ExpectedArgumentCount(sourceNode.params);\n Object.defineProperty(F, \"length\", {\n configurable: true,\n value: len,\n });\n\n if (debug || externalSourceForDebug) {\n Object.defineProperty(F, DebuggerCall, {\n value: function () {\n // eslint-disable-next-line prefer-rest-params\n return CallFunction(F, this, arguments);\n },\n });\n }\n return F;\n }\n\n function ExpectedArgumentCount(\n params: (Identifier | Pattern | RestElement)[]\n ) {\n let count = 0;\n for (const param of params) {\n switch (param.type) {\n case \"AssignmentPattern\":\n case \"RestElement\":\n return count;\n default:\n count++;\n }\n }\n return count;\n }\n\n // Patterns initialization.\n // https://tc39.es/ecma262/#sec-runtime-semantics-bindinginitialization\n function* BindingInitialization(\n node: EstreeLVal,\n value: unknown,\n environment?: EnvironmentRecord\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n switch (node.type) {\n case \"Identifier\":\n return InitializeBoundName(node.name, value, environment);\n case \"ObjectPattern\":\n RequireObjectCoercible(value);\n return yield* PropertyBindingInitialization(\n (node as EstreeObjectPattern).properties,\n value,\n environment\n );\n case \"ArrayPattern\": {\n const iteratorRecord = CreateListIteratorRecord(\n value as Iterable<unknown>\n );\n return yield* IteratorBindingInitialization(\n node.elements,\n iteratorRecord,\n environment\n );\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization\n function* PropertyBindingInitialization(\n properties: (EstreeProperty | RestElement)[],\n value: unknown,\n environment?: EnvironmentRecord\n ): CompletionRecordResult {\n const excludedNames = new Set<PropertyKey>();\n for (const prop of properties) {\n if (prop.type === \"RestElement\") {\n return RestBindingInitialization(\n prop,\n value,\n environment,\n excludedNames\n );\n }\n if (!prop.computed && prop.key.type === \"Identifier\") {\n yield* KeyedBindingInitialization(\n prop.value as EstreeLVal,\n value,\n environment,\n prop.key.name\n );\n excludedNames.add(prop.key.name);\n } else {\n const P = yield* EvaluateComputedPropertyName(prop.key as Expression);\n yield* KeyedBindingInitialization(\n prop.value as EstreeLVal,\n value,\n environment,\n P\n );\n excludedNames.add(P);\n }\n }\n return NormalCompletion(Empty);\n }\n\n // https://tc39.es/ecma262/#prod-ComputedPropertyName\n function* EvaluateComputedPropertyName(\n node: Expression\n ): EvaluateResult<unknown, PropertyKey> {\n const propName = GetValue(yield* Evaluate(node));\n return ToPropertyKey(propName);\n }\n\n // https://tc39.es/ecma262/#sec-destructuring-binding-patterns-runtime-semantics-restbindinginitialization\n function RestBindingInitialization(\n restProperty: RestElement,\n value: unknown,\n environment: EnvironmentRecord | undefined,\n excludedNames: Set<PropertyKey>\n ): CompletionRecord {\n const lhs = ResolveBinding(\n (restProperty.argument as Identifier).name,\n environment\n );\n const restObj = CopyDataProperties({}, value, excludedNames);\n if (!environment) {\n return PutValue(lhs, restObj);\n }\n return InitializeReferencedBinding(lhs, restObj);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-iteratorbindinginitialization\n function* IteratorBindingInitialization(\n elements: (PatternLike | LVal | null)[],\n iteratorRecord: Iterator<unknown>,\n environment?: EnvironmentRecord\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n if (elements.length === 0) {\n return NormalCompletion(Empty);\n }\n let result;\n for (const node of elements) {\n if (!node) {\n // Elision element.\n iteratorRecord.next();\n result = NormalCompletion(Empty);\n } else if (node.type === \"RestElement\") {\n // Rest element.\n if (node.argument.type === \"Identifier\") {\n const lhs = ResolveBinding(node.argument.name, environment);\n const A: unknown[] = new ArrayConstructor();\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iteratorRecord.next();\n if (done) {\n result = environment\n ? InitializeReferencedBinding(lhs, A)\n : PutValue(lhs, A);\n break;\n }\n A[n] = value;\n n++;\n }\n } else {\n const A: unknown[] = new ArrayConstructor();\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iteratorRecord.next();\n if (done) {\n result = yield* BindingInitialization(\n node.argument,\n A,\n environment\n );\n break;\n }\n A[n] = value;\n n++;\n }\n }\n } else {\n // Normal element.\n const bindingElement =\n node.type === \"AssignmentPattern\" ? node.left : node;\n switch (bindingElement.type) {\n case \"ObjectPattern\":\n case \"ArrayPattern\": {\n let v: unknown;\n const { done, value } = iteratorRecord.next();\n if (!done) {\n v = value;\n }\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n result = yield* BindingInitialization(\n bindingElement,\n v,\n environment\n );\n break;\n }\n case \"Identifier\": {\n const bindingId = bindingElement.name;\n const lhs = ResolveBinding(bindingId, environment);\n let v: unknown;\n const { done, value } = iteratorRecord.next();\n if (!done) {\n v = value;\n }\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(node.right)) {\n v = NamedEvaluation(node.right, bindingId);\n } else {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n }\n result = environment\n ? InitializeReferencedBinding(lhs, v)\n : PutValue(lhs, v);\n break;\n }\n }\n }\n }\n return result;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-keyedbindinginitialization\n function* KeyedBindingInitialization(\n node: EstreeLVal,\n value: unknown,\n environment: EnvironmentRecord | undefined,\n propertyName: PropertyKey\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n const isIdentifier =\n node.type === \"Identifier\" ||\n (node.type === \"AssignmentPattern\" && node.left.type === \"Identifier\");\n if (isIdentifier) {\n const bindingId =\n node.type === \"Identifier\" ? node.name : (node.left as Identifier).name;\n const lhs = ResolveBinding(bindingId, environment);\n let v = GetV(value, propertyName);\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(node.right)) {\n v = NamedEvaluation(node.right, bindingId);\n } else {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n }\n if (!environment) {\n return PutValue(lhs, v);\n }\n return InitializeReferencedBinding(lhs, v);\n }\n\n let v = GetV(value, propertyName);\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n return yield* BindingInitialization(\n node.type === \"AssignmentPattern\" ? node.left : node,\n v,\n environment\n );\n }\n\n // https://tc39.es/ecma262/#sec-initializeboundname\n function InitializeBoundName(\n name: string,\n value: unknown,\n environment?: EnvironmentRecord\n ): CompletionRecord {\n // Assert: environment is always present.\n environment!.InitializeBinding(name, value);\n return NormalCompletion(Empty);\n }\n\n function ThrowIfFunctionIsInvalid(\n func: FunctionDeclaration | FunctionExpression | ArrowFunctionExpression\n ): void {\n if (func.async || func.generator) {\n throw new SyntaxError(\n `${func.async ? \"Async\" : \"Generator\"} function is not allowed`\n );\n }\n if (expressionOnly && !(func as ArrowFunctionExpression).expression) {\n throw new SyntaxError(\n \"Only an `Expression` is allowed in `ArrowFunctionExpression`'s body\"\n );\n }\n }\n\n if (expressionOnly) {\n return GetValue(unwind(Evaluate(rootAst)));\n }\n\n hooks.beforeEvaluate?.(rootAst);\n ThrowIfFunctionIsInvalid(rootAst);\n const [fn] = collectBoundNames(rootAst);\n // Create an immutable binding for the root function.\n rootEnv.CreateImmutableBinding(fn, true);\n const fo = InstantiateFunctionObject(rootAst, rootEnv);\n rootEnv.InitializeBinding(fn, fo);\n\n if (debug) {\n Object.defineProperties(fo, {\n [DebuggerScope]: {\n value: function () {\n return getRunningContext().LexicalEnvironment;\n },\n },\n [DebuggerNode]: {\n value: function () {\n return currentNode;\n },\n },\n });\n }\n\n return fo;\n}\n\nfunction unwind(iterator: EvaluateResult<unknown, unknown>): unknown {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iterator.next();\n if (done) {\n return value;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"cook.js","names":["_contextFree","require","_ExecutionContext","_sanitize","_traverse","globalExecutionContextStack","__dev_only_clearGlobalExecutionContextStack","length","__dev_only_getGlobalExecutionContextStack","cook","rootAst","codeSource","rules","debug","externalSourceForDebug","globalVariables","ArrayConstructor","Array","hooks","_hooks$beforeEvaluate4","expressionOnly","type","doSanitize","cooked","sanitize","rootEnv","DeclarativeEnvironment","rootContext","ExecutionContext","VariableEnvironment","LexicalEnvironment","executionContextStack","key","value","Object","entries","CreateImmutableBinding","InitializeBinding","TemplateMap","WeakMap","GetTemplateObject","templateLiteral","memo","get","rawObj","quasis","map","quasi","raw","template","freeze","defineProperty","writable","enumerable","configurable","set","currentNode","Evaluate","node","optionalChainRef","forceYield","_hooks$beforeEvaluate","_hooks$beforeBranch2","beforeEvaluate","call","endsWith","expression","array","element","elements","spreadValues","GetValue","argument","push","NormalCompletion","ThrowIfFunctionIsInvalid","closure","InstantiateArrowFunctionExpression","leftRef","left","leftValue","rightRef","right","rightValue","operator","funcName","substring","start","end","TypeError","thisValue","ReferenceRecord","IsPropertyReference","Base","result","ApplyStringOrNumericBinaryOperator","ref","callee","Value","func","undefined","optional","skipped","EvaluateCall","arguments","test","consequent","alternate","ResolveBinding","name","regex","SyntaxError","flags","includes","RegExp","pattern","baseReference","object","baseValue","computed","EvaluatePropertyAccessWithExpressionKey","property","EvaluatePropertyAccessWithIdentifierKey","EvaluateNew","prop","properties","fromValue","CopyDataProperties","Set","kind","propName","EvaluateComputedPropertyName","propValue","method","SetFunctionName","expr","expressions","chunks","index","val","String","join","tagRef","tag","tagFunc","deleteStatus","ReferenceName","ApplyUnaryOperator","lref","rval","IsAnonymousFunctionDefinition","NamedEvaluation","rref","PutValue","DestructuringAssignmentEvaluation","lval","r","ApplyStringOrNumericAssignment","body","Empty","oldEnv","getRunningContext","blockEnv","BlockDeclarationInstantiation","blockValue","EvaluateStatementList","CompletionRecord","EvaluateBreakableStatement","DoWhileLoopEvaluation","ForInOfLoopEvaluation","ForLoopEvaluation","InstantiateOrdinaryFunctionExpression","_hooks$beforeBranch","beforeBranch","UpdateEmpty","v","exprRef","envRec","GetThisEnvironment","GetThisBinding","lhs","oldValue","Number","newValue","prefix","discriminant","switchValue","cases","R","CaseBlockEvaluation","block","error","handler","_hooks$beforeEvaluate2","CatchClauseEvaluation","finalizer","F","Type","declarator","declarations","init","id","InitializeReferencedBinding","bindingId","rhs","BindingInitialization","WhileLoopEvaluation","env","GetIdentifierReference","thrownValue","param","catchEnv","argName","collectBoundNames","CreateMutableBinding","B","stmtResult","input","V","defaultCaseIndex","findIndex","switchCase","hasDefaultCase","A","slice","found","C","CaseClauseIsSelected","foundInB","clauseSelector","exprValue","LoopContinues","isVariableDeclaration","lhsKind","uninitializedBoundNames","iterationKind","keyResult","ForInOfHeadEvaluation","ForInOfBodyEvaluation","runningContext","newEnv","iterator","EnumerateObjectProperties","CreateListIteratorRecord","stmt","iteratorRecord","destructuring","done","nextValue","next","lhsRef","iterationEnv","ForDeclarationBindingInstantiation","lhsName","status","return","innerResult","_node$init","ForBodyEvaluation","update","loopEnv","isConst","boundNames","dn","perIterationLets","from","bodyResult","increment","perIterationBindings","CreatePerIterationEnvironment","testRef","testValue","incRef","lastIterationEnv","outer","OuterEnv","thisIterationEnv","bn","lastValue","GetBindingValue","RequireObjectCoercible","PropertyDestructuringAssignmentEvaluation","IteratorDestructuringAssignmentEvaluation","excludedNames","valueTarget","GetV","defaultValue","add","KeyedDestructuringAssignmentEvaluation","RestDestructuringAssignmentEvaluation","propertyName","assignmentTarget","isObjectOrArray","rhsValue","restProperty","restObj","n","strict","propertyNameReference","propertyNameValue","propertyKey","ToPropertyKey","identifier","propertyNameString","code","collectScopedDeclarations","var","topLevel","d","IsConstantDeclaration","fn","fo","InstantiateFunctionObject","args","argList","ArgumentListEvaluation","debuggerCall","DebuggerCall","apply","constructExpr","constructor","IsConstructor","constructorName","isAllowedConstructor","isArray","arg","CallFunction","thisArgument","_hooks$beforeCall","beforeCall","SourceNode","calleeContext","PrepareForOrdinaryCall","OrdinaryCallBindThis","OrdinaryCallEvaluateBody","DebuggerReturn","pop","Function","localEnv","FunctionEnvironment","ThisMode","Mode","LEXICAL","BindThisValue","EvaluateFunctionBody","ECMAScriptCode","FunctionDeclarationInstantiation","statements","s","HasThisBinding","Error","_hooks$beforeEvaluate3","formals","FormalParameters","parameterNames","hasParameterExpressions","containsExpression","varDeclarations","varNames","functionNames","functionsToInitialize","i","unshift","noVar","argumentsObjectNeeded","paramName","parameterBindings","ao","CreateUnmappedArgumentsObject","concat","IteratorBindingInitialization","varEnv","instantiatedVarNames","initialValue","lexEnv","lexDeclarations","f","SetMutableBinding","argumentObject","Symbol","prototype","values","ThrowTypeError","scope","OrdinaryFunctionCreate","functionExpression","funcEnv","arrowFunction","sourceNode","isConstructor","lexicalThis","unwind","defineProperties","params","Environment","STRICT","len","ExpectedArgumentCount","count","environment","InitializeBoundName","PropertyBindingInitialization","RestBindingInitialization","KeyedBindingInitialization","P","bindingElement","isIdentifier","async","generator","DebuggerScope","DebuggerNode"],"sources":["../../src/cook.ts"],"sourcesContent":["import type {\n ArrayPattern,\n ArrowFunctionExpression,\n CallExpression,\n CatchClause,\n DoWhileStatement,\n Expression,\n ForInStatement,\n ForOfStatement,\n ForStatement,\n FunctionDeclaration,\n FunctionExpression,\n Identifier,\n LVal,\n NewExpression,\n ObjectPattern,\n Pattern,\n PatternLike,\n RestElement,\n Statement,\n SwitchCase,\n TemplateLiteral,\n VariableDeclaration,\n WhileStatement,\n} from \"@babel/types\";\nimport {\n ApplyStringOrNumericAssignment,\n CreateListIteratorRecord,\n ApplyStringOrNumericBinaryOperator,\n GetV,\n GetValue,\n InitializeReferencedBinding,\n IsPropertyReference,\n LoopContinues,\n PutValue,\n RequireObjectCoercible,\n ToPropertyKey,\n UpdateEmpty,\n ApplyUnaryOperator,\n GetIdentifierReference,\n ForDeclarationBindingInstantiation,\n CopyDataProperties,\n} from \"./context-free.js\";\nimport {\n CompletionRecord,\n DebuggerCall,\n DebuggerNode,\n DebuggerReturn,\n DebuggerScope,\n DeclarativeEnvironment,\n ECMAScriptCode,\n Empty,\n Environment,\n EnvironmentRecord,\n ExecutionContext,\n FormalParameters,\n FunctionEnvironment,\n FunctionObject,\n IsConstructor,\n NormalCompletion,\n OptionalChainRef,\n ReferenceRecord,\n SourceNode,\n Mode,\n ThisMode,\n} from \"./ExecutionContext.js\";\nimport type {\n EstreeLVal,\n EstreeNode,\n EstreeObjectExpression,\n EstreeObjectPattern,\n EstreeProperty,\n CookRules,\n FunctionDefinition,\n} from \"./interfaces.js\";\nimport { sanitize, isAllowedConstructor } from \"./sanitize.js\";\nimport {\n collectBoundNames,\n collectScopedDeclarations,\n containsExpression,\n} from \"./traverse.js\";\n\nexport interface CookOptions {\n rules?: CookRules;\n globalVariables?: Record<string, unknown>;\n hooks?: CookHooks;\n debug?: boolean;\n externalSourceForDebug?: boolean;\n ArrayConstructor?: typeof Array;\n}\n\nexport interface CookHooks {\n beforeEvaluate?(node: EstreeNode): void;\n beforeCall?(node: EstreeNode): void;\n beforeBranch?(node: EstreeNode, branch: \"if\" | \"else\"): void;\n}\n\ninterface EvaluateResult<T, TReturn> extends Iterator<T, TReturn> {\n [Symbol.iterator](): EvaluateResult<T, TReturn>;\n}\n\ntype CompletionRecordResult<T = unknown> = EvaluateResult<T, CompletionRecord>;\n\nconst globalExecutionContextStack: ExecutionContext[] = [];\n\nexport function __dev_only_clearGlobalExecutionContextStack() {\n globalExecutionContextStack.length = 0;\n}\n\nexport function __dev_only_getGlobalExecutionContextStack() {\n return globalExecutionContextStack;\n}\n\n/** For next-core internal usage only. */\nexport function cook(\n rootAst: FunctionDeclaration | Expression,\n codeSource: string,\n {\n rules,\n debug,\n externalSourceForDebug,\n globalVariables = {},\n // Allow debugger to override Array constructor.\n ArrayConstructor = Array,\n hooks = {},\n }: CookOptions = {}\n): unknown {\n const expressionOnly = rootAst.type !== \"FunctionDeclaration\";\n\n function doSanitize(cooked: unknown) {\n if (!externalSourceForDebug) {\n sanitize(cooked);\n }\n }\n\n const rootEnv = new DeclarativeEnvironment(null);\n const rootContext = new ExecutionContext();\n rootContext.VariableEnvironment = rootEnv;\n rootContext.LexicalEnvironment = rootEnv;\n const executionContextStack = [rootContext];\n\n for (const [key, value] of Object.entries(globalVariables)) {\n rootEnv.CreateImmutableBinding(key, true);\n rootEnv.InitializeBinding(key, value);\n }\n\n const TemplateMap = new WeakMap<TemplateLiteral, string[]>();\n\n // https://tc39.es/ecma262/#sec-gettemplateobject\n function GetTemplateObject(templateLiteral: TemplateLiteral): string[] {\n const memo = TemplateMap.get(templateLiteral);\n if (memo) {\n return memo;\n }\n const rawObj = templateLiteral.quasis.map((quasi) => quasi.value.raw);\n const template = templateLiteral.quasis.map((quasi) => quasi.value.cooked!);\n Object.freeze(rawObj);\n Object.defineProperty(template, \"raw\", {\n value: rawObj,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n Object.freeze(template);\n TemplateMap.set(templateLiteral, template);\n return template;\n }\n\n let currentNode: EstreeNode | undefined;\n\n function* Evaluate(\n node: EstreeNode,\n optionalChainRef?: OptionalChainRef,\n forceYield?: boolean\n ): CompletionRecordResult {\n hooks.beforeEvaluate?.(node);\n currentNode = node;\n if (\n debug &&\n (forceYield ||\n (node.type.endsWith(\"Statement\") &&\n !(\n node.type === \"ExpressionStatement\" &&\n (node.expression.type === \"CallExpression\" ||\n node.expression.type === \"TaggedTemplateExpression\")\n ) &&\n node.type !== \"TryStatement\" &&\n node.type !== \"BlockStatement\" &&\n node.type !== \"DoWhileStatement\" &&\n node.type !== \"WhileStatement\" &&\n node.type !== \"ForStatement\" &&\n node.type !== \"ForInStatement\" &&\n node.type !== \"ForOfStatement\"))\n ) {\n yield;\n }\n // Expressions:\n switch (node.type) {\n case \"ArrayExpression\": {\n // https://tc39.es/ecma262/#sec-array-initializer\n const array = new ArrayConstructor();\n for (const element of node.elements) {\n if (!element) {\n array.length += 1;\n } else if (element.type === \"SpreadElement\") {\n const spreadValues = GetValue(\n yield* Evaluate(element.argument)\n ) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(yield* Evaluate(element)));\n }\n }\n return NormalCompletion(array);\n }\n case \"ArrowFunctionExpression\": {\n // https://tc39.es/ecma262/#sec-arrow-function-definitions\n ThrowIfFunctionIsInvalid(node);\n const closure = InstantiateArrowFunctionExpression(node);\n return NormalCompletion(closure);\n }\n case \"BinaryExpression\": {\n const leftRef = yield* Evaluate(node.left);\n const leftValue = GetValue(leftRef);\n const rightRef = yield* Evaluate(node.right);\n const rightValue = GetValue(rightRef);\n if (expressionOnly && (node.operator as unknown) === \"|>\") {\n // Minimal pipeline operator is supported only in expression-only mode.\n // See https://tc39.es/proposal-pipeline-operator\n // and https://github.com/tc39/proposal-pipeline-operator\n if (typeof rightValue !== \"function\") {\n const funcName = codeSource.substring(\n node.right.start!,\n node.right.end!\n );\n throw new TypeError(`${funcName} is not a function`);\n }\n let thisValue;\n if (rightRef instanceof ReferenceRecord) {\n if (IsPropertyReference(rightRef)) {\n thisValue = rightRef.Base;\n }\n }\n return NormalCompletion(\n (rightValue as unknown as Function).call(thisValue, leftValue)\n );\n }\n // https://tc39.es/ecma262/#sec-additive-operators\n const result = ApplyStringOrNumericBinaryOperator(\n leftValue as number,\n node.operator,\n rightValue as number\n );\n return NormalCompletion(result);\n }\n case \"CallExpression\": {\n // https://tc39.es/ecma262/#sec-function-calls\n const ref = (yield* Evaluate(node.callee, optionalChainRef))\n .Value as ReferenceRecord;\n const func = GetValue(ref) as Function;\n if (\n (func === undefined || func === null) &&\n (node.optional || optionalChainRef?.skipped)\n ) {\n optionalChainRef!.skipped = true;\n return NormalCompletion(undefined);\n }\n doSanitize(func);\n\n if (debug) yield;\n\n return yield* EvaluateCall(func, ref, node.arguments, node.callee);\n }\n case \"ChainExpression\":\n // https://tc39.es/ecma262/#sec-optional-chains\n return yield* Evaluate(node.expression, {});\n case \"ConditionalExpression\":\n // https://tc39.es/ecma262/#sec-conditional-operator\n return NormalCompletion(\n GetValue(\n yield* Evaluate(\n GetValue(yield* Evaluate(node.test))\n ? node.consequent\n : node.alternate\n )\n )\n );\n case \"Identifier\":\n // https://tc39.es/ecma262/#sec-identifiers\n return NormalCompletion(ResolveBinding(node.name));\n case \"Literal\": {\n // https://tc39.es/ecma262/#sec-primary-expression-literals\n if (node.regex) {\n if (node.value === null) {\n // Invalid regular expression fails silently in @babel/parser.\n throw new SyntaxError(`Invalid regular expression: ${node.raw}`);\n }\n if (node.regex.flags.includes(\"u\")) {\n // Currently unicode flag is not fully supported across major browsers.\n throw new SyntaxError(\n `Unsupported unicode flag in regular expression: ${node.raw}`\n );\n }\n // Always create a new RegExp, because the AST will be reused.\n return NormalCompletion(\n new RegExp(node.regex.pattern, node.regex.flags)\n );\n }\n return NormalCompletion(node.value);\n }\n case \"LogicalExpression\": {\n // https://tc39.es/ecma262/#sec-binary-logical-operators\n const leftValue = GetValue(yield* Evaluate(node.left));\n switch (node.operator) {\n case \"&&\":\n return NormalCompletion(\n leftValue && GetValue(yield* Evaluate(node.right))\n );\n case \"||\":\n return NormalCompletion(\n leftValue || GetValue(yield* Evaluate(node.right))\n );\n case \"??\":\n return NormalCompletion(\n leftValue ?? GetValue(yield* Evaluate(node.right))\n );\n // istanbul ignore next\n default:\n throw new SyntaxError(\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore never reach here.\n `Unsupported logical operator '${node.operator}'`\n );\n }\n }\n case \"MemberExpression\": {\n // https://tc39.es/ecma262/#sec-property-accessors\n const baseReference = (yield* Evaluate(node.object, optionalChainRef))\n .Value as ReferenceRecord;\n const baseValue = GetValue(baseReference) as Record<\n PropertyKey,\n unknown\n >;\n if (\n (baseValue === undefined || baseValue === null) &&\n (node.optional || optionalChainRef?.skipped)\n ) {\n optionalChainRef!.skipped = true;\n return NormalCompletion(undefined);\n }\n doSanitize(baseValue);\n const result = node.computed\n ? yield* EvaluatePropertyAccessWithExpressionKey(\n baseValue,\n node.property as Expression,\n true\n )\n : EvaluatePropertyAccessWithIdentifierKey(\n baseValue,\n node.property as Identifier,\n true\n );\n doSanitize(result);\n return NormalCompletion(result);\n }\n case \"NewExpression\":\n // https://tc39.es/ecma262/#sec-new-operator\n return yield* EvaluateNew(node.callee, node.arguments);\n case \"ObjectExpression\": {\n // https://tc39.es/ecma262/#sec-object-initializer\n const object: Record<PropertyKey, unknown> = {};\n for (const prop of (node as EstreeObjectExpression).properties) {\n if (prop.type === \"SpreadElement\") {\n const fromValue = GetValue(yield* Evaluate(prop.argument));\n CopyDataProperties(object, fromValue, new Set());\n } else {\n if (prop.kind !== \"init\") {\n throw new SyntaxError(\"Unsupported object getter/setter\");\n }\n const propName =\n !prop.computed && prop.key.type === \"Identifier\"\n ? prop.key.name\n : yield* EvaluateComputedPropertyName(prop.key as Expression);\n if (propName === \"__proto__\") {\n throw new TypeError(\n \"Setting '__proto__' property is not allowed\"\n );\n }\n const propValue = GetValue(yield* Evaluate(prop.value));\n if (prop.method && typeof propValue === \"function\") {\n SetFunctionName(propValue as FunctionObject, propName as string);\n }\n object[propName] = propValue;\n }\n }\n return NormalCompletion(object);\n }\n case \"SequenceExpression\": {\n // https://tc39.es/ecma262/#sec-comma-operator\n let result: CompletionRecord | undefined;\n for (const expr of node.expressions) {\n result = NormalCompletion(GetValue(yield* Evaluate(expr)));\n }\n return result!;\n }\n case \"TemplateLiteral\": {\n // https://tc39.es/ecma262/#sec-template-literals\n const chunks: string[] = [node.quasis[0].value.cooked!];\n let index = 0;\n for (const expr of node.expressions) {\n const val = GetValue(yield* Evaluate(expr));\n chunks.push(String(val));\n chunks.push(node.quasis[(index += 1)].value.cooked!);\n }\n return NormalCompletion(chunks.join(\"\"));\n }\n case \"TaggedTemplateExpression\": {\n // https://tc39.es/ecma262/#sec-tagged-templates\n const tagRef = (yield* Evaluate(node.tag)).Value as ReferenceRecord;\n const tagFunc = GetValue(tagRef) as Function;\n doSanitize(tagFunc);\n if (debug) yield;\n return yield* EvaluateCall(tagFunc, tagRef, node.quasi, node.tag);\n }\n case \"UnaryExpression\": {\n // https://tc39.es/ecma262/#sec-unary-operators\n const ref = (yield* Evaluate(node.argument)).Value as ReferenceRecord;\n if (!expressionOnly && node.operator === \"delete\") {\n // Delete operator is supported only in function mode.\n if (!(ref instanceof ReferenceRecord)) {\n return NormalCompletion(true);\n }\n // istanbul ignore else\n if (IsPropertyReference(ref)) {\n const deleteStatus = delete (\n ref.Base as Record<PropertyKey, unknown>\n )[ref.ReferenceName];\n return NormalCompletion(deleteStatus);\n }\n // Should never reach here in strict mode.\n }\n if (node.operator === \"typeof\") {\n if (ref instanceof ReferenceRecord && ref.Base === \"unresolvable\") {\n return NormalCompletion(\"undefined\");\n }\n return NormalCompletion(typeof GetValue(ref));\n }\n return NormalCompletion(\n ApplyUnaryOperator(GetValue(ref), node.operator)\n );\n }\n }\n if (!expressionOnly) {\n // Statements and assignments:\n switch (node.type) {\n case \"AssignmentExpression\": {\n // https://tc39.es/ecma262/#sec-assignment-operators\n if (node.operator === \"=\") {\n if (\n !(\n node.left.type === \"ArrayPattern\" ||\n node.left.type === \"ObjectPattern\"\n )\n ) {\n const lref = (yield* Evaluate(node.left))\n .Value as ReferenceRecord;\n let rval: unknown;\n if (\n IsAnonymousFunctionDefinition(node.right) &&\n node.left.type === \"Identifier\"\n ) {\n rval = NamedEvaluation(node.right, node.left.name);\n } else {\n const rref = yield* Evaluate(node.right);\n rval = GetValue(rref);\n }\n PutValue(lref, rval);\n return NormalCompletion(rval);\n }\n const rref = yield* Evaluate(node.right);\n const rval = GetValue(rref) as string | number;\n yield* DestructuringAssignmentEvaluation(node.left, rval);\n return NormalCompletion(rval);\n }\n // Operators other than `=`.\n const lref = (yield* Evaluate(node.left)).Value as ReferenceRecord;\n const lval = GetValue(lref) as string | number;\n const rref = yield* Evaluate(node.right);\n const rval = GetValue(rref) as string | number;\n const r = ApplyStringOrNumericAssignment(lval, node.operator, rval);\n PutValue(lref, r);\n return NormalCompletion(r);\n }\n case \"BlockStatement\": {\n // https://tc39.es/ecma262/#sec-block\n if (!node.body.length) {\n return NormalCompletion(Empty);\n }\n const oldEnv = getRunningContext().LexicalEnvironment;\n const blockEnv = new DeclarativeEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.body, blockEnv);\n getRunningContext().LexicalEnvironment = blockEnv;\n const blockValue = yield* EvaluateStatementList(node.body);\n getRunningContext().LexicalEnvironment = oldEnv;\n return blockValue;\n }\n case \"BreakStatement\":\n // https://tc39.es/ecma262/#sec-break-statement\n return new CompletionRecord(\"break\", Empty);\n case \"ContinueStatement\":\n // https://tc39.es/ecma262/#sec-continue-statement\n return new CompletionRecord(\"continue\", Empty);\n case \"EmptyStatement\":\n // https://tc39.es/ecma262/#sec-empty-statement\n return NormalCompletion(Empty);\n case \"DoWhileStatement\":\n // https://tc39.es/ecma262/#sec-do-while-statement\n return EvaluateBreakableStatement(yield* DoWhileLoopEvaluation(node));\n case \"ExpressionStatement\":\n case \"TSAsExpression\":\n // https://tc39.es/ecma262/#sec-expression-statement\n return yield* Evaluate(node.expression);\n case \"ForInStatement\":\n case \"ForOfStatement\":\n // https://tc39.es/ecma262/#sec-for-in-and-for-of-statements\n return EvaluateBreakableStatement(yield* ForInOfLoopEvaluation(node));\n case \"ForStatement\":\n // https://tc39.es/ecma262/#sec-for-statement\n return EvaluateBreakableStatement(yield* ForLoopEvaluation(node));\n case \"FunctionDeclaration\":\n // https://tc39.es/ecma262/#sec-function-definitions\n return NormalCompletion(Empty);\n case \"FunctionExpression\":\n // https://tc39.es/ecma262/#sec-function-defining-expressions\n ThrowIfFunctionIsInvalid(node);\n return NormalCompletion(InstantiateOrdinaryFunctionExpression(node));\n case \"IfStatement\":\n // https://tc39.es/ecma262/#sec-if-statement\n if (GetValue(yield* Evaluate(node.test))) {\n hooks.beforeBranch?.(node, \"if\");\n return UpdateEmpty(yield* Evaluate(node.consequent), undefined);\n }\n hooks.beforeBranch?.(node, \"else\");\n if (node.alternate) {\n return UpdateEmpty(yield* Evaluate(node.alternate), undefined);\n }\n return NormalCompletion(undefined);\n case \"ReturnStatement\": {\n // https://tc39.es/ecma262/#sec-return-statement\n let v: unknown;\n if (node.argument) {\n const exprRef = yield* Evaluate(node.argument);\n v = GetValue(exprRef);\n }\n return new CompletionRecord(\"return\", v);\n }\n case \"ThisExpression\": {\n if (!externalSourceForDebug) {\n break;\n }\n const envRec = GetThisEnvironment();\n return NormalCompletion(envRec.GetThisBinding());\n }\n case \"ThrowStatement\":\n // https://tc39.es/ecma262/#sec-throw-statement\n throw GetValue(yield* Evaluate(node.argument));\n case \"UpdateExpression\": {\n // https://tc39.es/ecma262/#sec-update-expressions\n const lhs = (yield* Evaluate(node.argument)).Value as ReferenceRecord;\n const oldValue = Number(GetValue(lhs));\n const newValue = node.operator === \"++\" ? oldValue + 1 : oldValue - 1;\n PutValue(lhs, newValue);\n return NormalCompletion(node.prefix ? newValue : oldValue);\n }\n case \"SwitchCase\":\n return yield* EvaluateStatementList(node.consequent);\n case \"SwitchStatement\": {\n // https://tc39.es/ecma262/#sec-switch-statement\n const exprRef = yield* Evaluate(node.discriminant);\n const switchValue = GetValue(exprRef);\n const oldEnv = getRunningContext().LexicalEnvironment;\n const blockEnv = new DeclarativeEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.cases, blockEnv);\n getRunningContext().LexicalEnvironment = blockEnv;\n const R = yield* CaseBlockEvaluation(node.cases, switchValue);\n getRunningContext().LexicalEnvironment = oldEnv;\n return EvaluateBreakableStatement(R);\n }\n case \"TryStatement\": {\n // https://tc39.es/ecma262/#sec-try-statement\n let R: CompletionRecord;\n try {\n R = yield* Evaluate(node.block);\n } catch (error) {\n if (node.handler) {\n currentNode = node.handler;\n hooks.beforeEvaluate?.(node.handler);\n R = yield* CatchClauseEvaluation(node.handler, error);\n } else {\n throw error;\n }\n } finally {\n if (node.finalizer) {\n const F = yield* Evaluate(node.finalizer);\n if (F.Type !== \"normal\") {\n R = F;\n }\n }\n }\n return R;\n }\n case \"VariableDeclaration\": {\n // https://tc39.es/ecma262/#sec-declarations-and-the-variable-statement\n let result: CompletionRecord | undefined;\n for (const declarator of node.declarations) {\n currentNode = declarator;\n if (!declarator.init) {\n // Assert: a declarator without init is always an identifier.\n if (node.kind === \"var\") {\n result = NormalCompletion(Empty);\n } else {\n const lhs = ResolveBinding((declarator.id as Identifier).name);\n result = InitializeReferencedBinding(lhs, undefined);\n }\n } else if (declarator.id.type === \"Identifier\") {\n currentNode = declarator.init;\n if (\n debug &&\n currentNode.type !== \"CallExpression\" &&\n currentNode.type !== \"TaggedTemplateExpression\"\n )\n yield;\n const bindingId = declarator.id.name;\n const lhs = ResolveBinding(bindingId);\n let value: unknown;\n if (IsAnonymousFunctionDefinition(declarator.init)) {\n value = NamedEvaluation(declarator.init, bindingId);\n } else {\n const rhs = yield* Evaluate(declarator.init);\n value = GetValue(rhs);\n }\n result =\n node.kind === \"var\"\n ? PutValue(lhs, value)\n : InitializeReferencedBinding(lhs, value);\n } else {\n currentNode = declarator.init;\n if (\n debug &&\n currentNode.type !== \"CallExpression\" &&\n currentNode.type !== \"TaggedTemplateExpression\"\n )\n yield;\n const rhs = yield* Evaluate(declarator.init);\n const rval = GetValue(rhs);\n result = yield* BindingInitialization(\n declarator.id,\n rval,\n node.kind === \"var\"\n ? undefined\n : getRunningContext().LexicalEnvironment\n );\n }\n }\n return result!;\n }\n case \"WhileStatement\":\n // https://tc39.es/ecma262/#sec-while-statement\n return EvaluateBreakableStatement(yield* WhileLoopEvaluation(node));\n }\n }\n // eslint-disable-next-line no-console\n throw new SyntaxError(`Unsupported node type \\`${node.type}\\``);\n }\n\n // https://tc39.es/ecma262/#sec-execution-contexts\n function getRunningContext(): ExecutionContext {\n return executionContextStack[executionContextStack.length - 1];\n }\n\n // https://tc39.es/ecma262/#sec-resolvebinding\n function ResolveBinding(\n name: string,\n env?: EnvironmentRecord\n ): ReferenceRecord {\n if (!env) {\n env = getRunningContext().LexicalEnvironment;\n }\n return GetIdentifierReference(env, name, true);\n }\n\n // Try statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-catchclauseevaluation\n function* CatchClauseEvaluation(\n node: CatchClause,\n thrownValue: unknown\n ): CompletionRecordResult {\n if (!node.param) {\n return yield* Evaluate(node.body);\n }\n const oldEnv = getRunningContext().LexicalEnvironment;\n const catchEnv = new DeclarativeEnvironment(oldEnv);\n for (const argName of collectBoundNames(node.param)) {\n catchEnv.CreateMutableBinding(argName, false);\n }\n getRunningContext().LexicalEnvironment = catchEnv;\n yield* BindingInitialization(node.param, thrownValue, catchEnv);\n const B = yield* Evaluate(node.body);\n getRunningContext().LexicalEnvironment = oldEnv;\n return B;\n }\n\n // Iteration statements and switch statements.\n // https://tc39.es/ecma262/#prod-BreakableStatement\n function EvaluateBreakableStatement(\n stmtResult: CompletionRecord\n ): CompletionRecord {\n return stmtResult.Type === \"break\"\n ? stmtResult.Value === Empty\n ? NormalCompletion(undefined)\n : NormalCompletion(stmtResult.Value)\n : stmtResult;\n }\n\n // Switch statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseblockevaluation\n function* CaseBlockEvaluation(\n cases: SwitchCase[],\n input: unknown\n ): CompletionRecordResult {\n let V: unknown;\n\n const defaultCaseIndex = cases.findIndex((switchCase) => !switchCase.test);\n const hasDefaultCase = defaultCaseIndex >= 0;\n const A = hasDefaultCase ? cases.slice(0, defaultCaseIndex) : cases;\n let found = false;\n for (const C of A) {\n if (!found) {\n found = yield* CaseClauseIsSelected(C, input);\n }\n if (found) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n }\n\n if (!hasDefaultCase) {\n return NormalCompletion(V);\n }\n\n let foundInB = false;\n const B = cases.slice(defaultCaseIndex + 1);\n if (!found) {\n for (const C of B) {\n if (!foundInB) {\n foundInB = yield* CaseClauseIsSelected(C, input);\n }\n if (foundInB) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n }\n }\n\n if (foundInB) {\n return NormalCompletion(V);\n }\n const R = yield* Evaluate(cases[defaultCaseIndex]);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n\n // NOTE: The following is another complete iteration of the second CaseClauses.\n for (const C of B) {\n const R = yield* Evaluate(C);\n if (R.Value !== Empty) {\n V = R.Value;\n }\n if (R.Type !== \"normal\") {\n return UpdateEmpty(R, V);\n }\n }\n return NormalCompletion(V);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-caseclauseisselected\n function* CaseClauseIsSelected(\n C: SwitchCase,\n input: unknown\n ): EvaluateResult<unknown, boolean> {\n const clauseSelector = GetValue(yield* Evaluate(C.test!));\n return input === clauseSelector;\n }\n\n // While statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-whileloopevaluation\n function* WhileLoopEvaluation(node: WhileStatement): CompletionRecordResult {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const exprValue = GetValue(yield* Evaluate(node.test, undefined, true));\n if (!exprValue) {\n return NormalCompletion(V);\n }\n const stmtResult = yield* Evaluate(node.body);\n if (!LoopContinues(stmtResult)) {\n return UpdateEmpty(stmtResult, V);\n }\n if (stmtResult.Value !== Empty) {\n V = stmtResult.Value;\n }\n }\n }\n\n // Do-while Statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-dowhileloopevaluation\n function* DoWhileLoopEvaluation(\n node: DoWhileStatement\n ): CompletionRecordResult {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const stmtResult = yield* Evaluate(node.body);\n if (!LoopContinues(stmtResult)) {\n return UpdateEmpty(stmtResult, V);\n }\n if (stmtResult.Value !== Empty) {\n V = stmtResult.Value;\n }\n const exprValue = GetValue(yield* Evaluate(node.test, undefined, true));\n if (!exprValue) {\n return NormalCompletion(V);\n }\n }\n }\n\n // For in/of statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-forinofloopevaluation\n function* ForInOfLoopEvaluation(\n node: ForInStatement | ForOfStatement\n ): CompletionRecordResult {\n const lhs = node.left;\n const isVariableDeclaration = lhs.type === \"VariableDeclaration\";\n const lhsKind = isVariableDeclaration\n ? lhs.kind === \"var\"\n ? \"varBinding\"\n : \"lexicalBinding\"\n : \"assignment\";\n const uninitializedBoundNames =\n lhsKind === \"lexicalBinding\" ? collectBoundNames(lhs) : [];\n const iterationKind =\n node.type === \"ForInStatement\" ? \"enumerate\" : \"iterate\";\n const keyResult = yield* ForInOfHeadEvaluation(\n uninitializedBoundNames,\n node.right,\n iterationKind\n );\n if (keyResult.Type !== \"normal\") {\n // When enumerate, if the target is nil, a break completion will be returned.\n return keyResult;\n }\n return yield* ForInOfBodyEvaluation(\n lhs,\n node.body,\n keyResult.Value as Iterator<unknown>,\n iterationKind,\n lhsKind\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-forinofheadevaluation\n function* ForInOfHeadEvaluation(\n uninitializedBoundNames: string[],\n expr: Expression,\n iterationKind: \"enumerate\" | \"iterate\"\n ): CompletionRecordResult {\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n if (uninitializedBoundNames.length > 0) {\n const newEnv = new DeclarativeEnvironment(oldEnv);\n for (const name of uninitializedBoundNames) {\n newEnv.CreateMutableBinding(name, false);\n }\n runningContext.LexicalEnvironment = newEnv;\n }\n const exprRef = yield* Evaluate(expr, undefined, true);\n runningContext.LexicalEnvironment = oldEnv;\n const exprValue = GetValue(exprRef);\n if (iterationKind === \"enumerate\") {\n if (exprValue === null || exprValue === undefined) {\n return new CompletionRecord(\"break\", Empty);\n }\n const iterator = EnumerateObjectProperties(exprValue);\n return NormalCompletion(iterator);\n }\n const iterator = CreateListIteratorRecord(exprValue as Iterable<unknown>);\n return NormalCompletion(iterator);\n }\n\n function* ForInOfBodyEvaluation(\n node: VariableDeclaration | EstreeLVal,\n stmt: Statement,\n iteratorRecord: Iterator<unknown>,\n iterationKind: \"enumerate\" | \"iterate\",\n lhsKind: \"varBinding\" | \"lexicalBinding\" | \"assignment\"\n ): CompletionRecordResult {\n const lhs =\n lhsKind === \"assignment\"\n ? (node as EstreeLVal)\n : (node as VariableDeclaration).declarations[0].id;\n const oldEnv = getRunningContext().LexicalEnvironment;\n let V: unknown;\n // When `destructuring` is false,\n // For `node` whose `kind` is assignment:\n // `lhs` is an `Identifier` or a `MemberExpression`,\n // Otherwise:\n // `lhs` is an `Identifier`.\n const destructuring =\n lhs.type === \"ObjectPattern\" || lhs.type === \"ArrayPattern\";\n // eslint-disable-next-line no-constant-condition\n while (true) {\n currentNode = lhs;\n const { done, value: nextValue } = iteratorRecord.next();\n if (done) {\n if (debug) yield;\n return NormalCompletion(V);\n }\n let lhsRef: ReferenceRecord | undefined;\n let iterationEnv: DeclarativeEnvironment | undefined;\n if (lhsKind === \"lexicalBinding\") {\n iterationEnv = new DeclarativeEnvironment(oldEnv);\n ForDeclarationBindingInstantiation(\n node as VariableDeclaration,\n iterationEnv\n );\n getRunningContext().LexicalEnvironment = iterationEnv;\n if (debug) yield;\n if (!destructuring) {\n const [lhsName] = collectBoundNames(lhs);\n lhsRef = ResolveBinding(lhsName);\n }\n } else {\n if (debug) yield;\n if (!destructuring) {\n lhsRef = (yield* Evaluate(lhs)).Value as ReferenceRecord;\n }\n }\n\n destructuring\n ? lhsKind === \"assignment\"\n ? yield* DestructuringAssignmentEvaluation(lhs, nextValue)\n : lhsKind === \"varBinding\"\n ? yield* BindingInitialization(lhs, nextValue, undefined)\n : yield* BindingInitialization(lhs, nextValue, iterationEnv)\n : lhsKind === \"lexicalBinding\"\n ? InitializeReferencedBinding(lhsRef!, nextValue)\n : PutValue(lhsRef!, nextValue);\n\n const result = yield* Evaluate(stmt);\n getRunningContext().LexicalEnvironment = oldEnv;\n if (!LoopContinues(result)) {\n const status = UpdateEmpty(result, V);\n if (\n !(\n iterationKind === \"enumerate\" || iteratorRecord.return === undefined\n )\n ) {\n // Perform *IteratorClose*\n // https://tc39.es/ecma262/#sec-iteratorclose\n const innerResult = iteratorRecord.return();\n if (\n !innerResult ||\n ![\"object\", \"function\"].includes(typeof innerResult)\n ) {\n throw new TypeError(`Iterator result is not an object`);\n }\n }\n return status;\n }\n if (result.Value !== Empty) {\n V = result.Value;\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-enumerate-object-properties\n function* EnumerateObjectProperties(value: any): Iterator<PropertyKey> {\n for (const key in value) {\n yield key;\n }\n }\n\n // For statements.\n // https://tc39.es/ecma262/#sec-runtime-semantics-forloopevaluation\n function* ForLoopEvaluation(node: ForStatement): CompletionRecordResult {\n if (node.init?.type === \"VariableDeclaration\") {\n // `for (var … ; … ; … ) …`\n if (node.init.kind === \"var\") {\n yield* Evaluate(node.init);\n return yield* ForBodyEvaluation(node.test, node.update, node.body, []);\n }\n // `for (let/const … ; … ; … ) …`\n const oldEnv = getRunningContext().LexicalEnvironment;\n const loopEnv = new DeclarativeEnvironment(oldEnv);\n const isConst = node.init.kind === \"const\";\n const boundNames = collectBoundNames(node.init);\n for (const dn of boundNames) {\n if (isConst) {\n loopEnv.CreateImmutableBinding(dn, true);\n } else {\n loopEnv.CreateMutableBinding(dn, false);\n }\n }\n getRunningContext().LexicalEnvironment = loopEnv;\n yield* Evaluate(node.init);\n const perIterationLets = isConst ? [] : Array.from(boundNames);\n const bodyResult = yield* ForBodyEvaluation(\n node.test,\n node.update,\n node.body,\n perIterationLets\n );\n getRunningContext().LexicalEnvironment = oldEnv;\n return bodyResult;\n }\n // `for ( … ; … ; … ) …`\n if (node.init) {\n const exprRef = yield* Evaluate(node.init);\n GetValue(exprRef);\n }\n return yield* ForBodyEvaluation(node.test, node.update, node.body, []);\n }\n\n // https://tc39.es/ecma262/#sec-forbodyevaluation\n function* ForBodyEvaluation(\n test: Expression | null | undefined,\n increment: Expression | null | undefined,\n stmt: Statement,\n perIterationBindings: string[]\n ): CompletionRecordResult {\n CreatePerIterationEnvironment(perIterationBindings);\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (test) {\n const testRef = yield* Evaluate(test, undefined, true);\n const testValue = GetValue(testRef);\n if (!testValue) {\n return NormalCompletion(V);\n }\n }\n const result = yield* Evaluate(stmt);\n if (!LoopContinues(result)) {\n return UpdateEmpty(result, V);\n }\n if (result.Value) {\n V = result.Value;\n }\n CreatePerIterationEnvironment(perIterationBindings);\n if (increment) {\n const incRef = yield* Evaluate(increment, undefined, true);\n GetValue(incRef);\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-createperiterationenvironment\n function CreatePerIterationEnvironment(\n perIterationBindings: string[]\n ): unknown {\n if (perIterationBindings.length === 0) {\n return;\n }\n const lastIterationEnv = getRunningContext().LexicalEnvironment!;\n const outer = lastIterationEnv.OuterEnv;\n const thisIterationEnv = new DeclarativeEnvironment(outer);\n for (const bn of perIterationBindings) {\n thisIterationEnv.CreateMutableBinding(bn, false);\n const lastValue = lastIterationEnv.GetBindingValue(bn, false);\n thisIterationEnv.InitializeBinding(bn, lastValue);\n }\n getRunningContext().LexicalEnvironment = thisIterationEnv;\n }\n\n // Destructuring assignments.\n // https://tc39.es/ecma262/#sec-runtime-semantics-destructuringassignmentevaluation\n function* DestructuringAssignmentEvaluation(\n pattern: ObjectPattern | EstreeObjectPattern | ArrayPattern,\n value: unknown\n ): CompletionRecordResult {\n if (pattern.type === \"ObjectPattern\") {\n RequireObjectCoercible(value);\n if (pattern.properties.length > 0) {\n yield* PropertyDestructuringAssignmentEvaluation(\n (pattern as EstreeObjectPattern).properties,\n value\n );\n }\n return NormalCompletion(Empty);\n }\n const iteratorRecord = CreateListIteratorRecord(value as Iterable<unknown>);\n return yield* IteratorDestructuringAssignmentEvaluation(\n pattern.elements,\n iteratorRecord\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-propertydestructuringassignmentevaluation\n function* PropertyDestructuringAssignmentEvaluation(\n properties: (EstreeProperty | RestElement)[],\n value: unknown\n ): EvaluateResult<unknown, void> {\n const excludedNames = new Set<PropertyKey>();\n for (const prop of properties) {\n if (prop.type === \"Property\") {\n const propName =\n !prop.computed && prop.key.type === \"Identifier\"\n ? prop.key.name\n : ((yield* EvaluateComputedPropertyName(\n prop.key as Expression\n )) as string);\n const valueTarget =\n prop.value.type === \"AssignmentPattern\"\n ? prop.value.left\n : prop.value;\n if (valueTarget.type === \"Identifier\") {\n const lref = ResolveBinding(valueTarget.name);\n let v = GetV(value, propName);\n if (prop.value.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(prop.value.right)) {\n v = NamedEvaluation(prop.value.right, valueTarget.name);\n } else {\n const defaultValue = yield* Evaluate(prop.value.right);\n v = GetValue(defaultValue);\n }\n }\n PutValue(lref, v);\n excludedNames.add(propName);\n } else {\n yield* KeyedDestructuringAssignmentEvaluation(\n prop.value,\n value,\n propName\n );\n excludedNames.add(propName);\n }\n } else {\n yield* RestDestructuringAssignmentEvaluation(\n prop,\n value,\n excludedNames\n );\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-keyeddestructuringassignmentevaluation\n function* KeyedDestructuringAssignmentEvaluation(\n node: EstreeNode,\n value: unknown,\n propertyName: PropertyKey\n ): CompletionRecordResult {\n const assignmentTarget =\n node.type === \"AssignmentPattern\" ? node.left : node;\n const isObjectOrArray =\n assignmentTarget.type === \"ArrayPattern\" ||\n assignmentTarget.type === \"ObjectPattern\";\n let lref: ReferenceRecord | undefined;\n if (!isObjectOrArray) {\n lref = (yield* Evaluate(assignmentTarget)).Value as ReferenceRecord;\n }\n const v = GetV(value, propertyName);\n let rhsValue;\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n // `assignmentTarget.type` is never \"Identifier\" here.\n const defaultValue = yield* Evaluate(node.right);\n rhsValue = GetValue(defaultValue);\n } else {\n rhsValue = v;\n }\n if (isObjectOrArray) {\n return yield* DestructuringAssignmentEvaluation(\n assignmentTarget,\n rhsValue\n );\n }\n return PutValue(lref!, rhsValue);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-restdestructuringassignmentevaluation\n function* RestDestructuringAssignmentEvaluation(\n restProperty: RestElement,\n value: unknown,\n excludedNames: Set<PropertyKey>\n ): CompletionRecordResult {\n const lref = (yield* Evaluate(restProperty.argument))\n .Value as ReferenceRecord;\n const restObj = CopyDataProperties({}, value, excludedNames);\n return PutValue(lref, restObj);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-iteratordestructuringassignmentevaluation\n function* IteratorDestructuringAssignmentEvaluation(\n elements: (PatternLike | LVal | null)[],\n iteratorRecord: Iterator<unknown>\n ): CompletionRecordResult {\n let status = NormalCompletion(Empty);\n for (const element of elements) {\n if (!element) {\n iteratorRecord.next();\n status = NormalCompletion(Empty);\n continue;\n }\n const assignmentTarget =\n element.type === \"RestElement\"\n ? element.argument\n : element.type === \"AssignmentPattern\"\n ? element.left\n : element;\n const isObjectOrArray =\n assignmentTarget.type === \"ArrayPattern\" ||\n assignmentTarget.type === \"ObjectPattern\";\n let lref: ReferenceRecord | undefined;\n if (!isObjectOrArray) {\n lref = (yield* Evaluate(assignmentTarget)).Value as ReferenceRecord;\n }\n let v: unknown;\n if (element.type !== \"RestElement\") {\n const { done, value: nextValue } = iteratorRecord.next();\n const value = done ? undefined : nextValue;\n if (element.type === \"AssignmentPattern\" && value === undefined) {\n if (\n IsAnonymousFunctionDefinition(element.right) &&\n assignmentTarget.type === \"Identifier\"\n ) {\n v = NamedEvaluation(element.right, assignmentTarget.name);\n } else {\n const defaultValue = yield* Evaluate(element.right);\n v = GetValue(defaultValue);\n }\n } else {\n v = value;\n }\n } else {\n // RestElement\n v = new ArrayConstructor();\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value: nextValue } = iteratorRecord.next();\n if (done) {\n break;\n }\n (v as unknown[])[n] = nextValue;\n n++;\n }\n }\n if (isObjectOrArray) {\n status = yield* DestructuringAssignmentEvaluation(assignmentTarget, v);\n } else {\n status = PutValue(lref!, v);\n }\n }\n return status;\n }\n\n // Object expressions.\n // https://tc39.es/ecma262/#sec-evaluate-property-access-with-expression-key\n function* EvaluatePropertyAccessWithExpressionKey(\n baseValue: Record<PropertyKey, unknown>,\n expression: Expression,\n strict: boolean\n ): EvaluateResult<unknown, ReferenceRecord> {\n const propertyNameReference = yield* Evaluate(expression);\n const propertyNameValue = GetValue(propertyNameReference);\n const propertyKey = ToPropertyKey(propertyNameValue);\n return new ReferenceRecord(baseValue, propertyKey, strict);\n }\n\n // https://tc39.es/ecma262/#sec-evaluate-property-access-with-identifier-key\n function EvaluatePropertyAccessWithIdentifierKey(\n baseValue: Record<PropertyKey, unknown>,\n identifier: Identifier,\n strict: boolean\n ): ReferenceRecord {\n currentNode = identifier;\n const propertyNameString = identifier.name;\n return new ReferenceRecord(baseValue, propertyNameString, strict);\n }\n\n // Block statements.\n // https://tc39.es/ecma262/#sec-blockdeclarationinstantiation\n function BlockDeclarationInstantiation(\n code: Statement[] | SwitchCase[],\n env: EnvironmentRecord\n ): void {\n const declarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: false,\n });\n for (const d of declarations) {\n const IsConstantDeclaration =\n d.type === \"VariableDeclaration\" && d.kind === \"const\";\n for (const dn of collectBoundNames(d)) {\n if (IsConstantDeclaration) {\n env.CreateImmutableBinding(dn, true);\n } else {\n env.CreateMutableBinding(dn, false);\n }\n }\n if (d.type === \"FunctionDeclaration\") {\n const [fn] = collectBoundNames(d);\n const fo = InstantiateFunctionObject(d, env);\n env.InitializeBinding(fn, fo);\n }\n }\n }\n\n // Function declarations and expressions.\n // https://tc39.es/ecma262/#sec-evaluatecall\n function* EvaluateCall(\n func: Function,\n ref: ReferenceRecord,\n args: CallExpression[\"arguments\"] | TemplateLiteral,\n callee: CallExpression[\"callee\"]\n ): CompletionRecordResult {\n let thisValue;\n if (ref instanceof ReferenceRecord) {\n if (IsPropertyReference(ref)) {\n thisValue = ref.Base;\n }\n }\n const argList = yield* ArgumentListEvaluation(args);\n if (typeof func !== \"function\") {\n const funcName = codeSource.substring(callee.start!, callee.end!);\n throw new TypeError(`${funcName} is not a function`);\n }\n\n if (debug || externalSourceForDebug) {\n const debuggerCall = (func as FunctionObject)[DebuggerCall];\n if (debuggerCall) {\n const result = yield* (debuggerCall as Function).apply(\n thisValue,\n argList\n );\n doSanitize(result);\n return NormalCompletion(result);\n }\n }\n\n const result = func.apply(thisValue, argList);\n doSanitize(result);\n return NormalCompletion(result);\n }\n\n // https://tc39.es/ecma262/#sec-evaluatenew\n function* EvaluateNew(\n constructExpr: CallExpression[\"callee\"],\n args: NewExpression[\"arguments\"]\n ): CompletionRecordResult {\n const ref = yield* Evaluate(constructExpr);\n const constructor = GetValue(ref) as new (...args: unknown[]) => unknown;\n const argList = yield* ArgumentListEvaluation(args);\n if (\n typeof constructor !== \"function\" ||\n (constructor as unknown as FunctionObject)[IsConstructor] === false\n ) {\n const constructorName = codeSource.substring(\n constructExpr.start!,\n constructExpr.end!\n );\n throw new TypeError(`${constructorName} is not a constructor`);\n }\n if (\n !externalSourceForDebug &&\n !isAllowedConstructor(constructor) &&\n constructor !== ArrayConstructor\n ) {\n const constructorName = codeSource.substring(\n constructExpr.start!,\n constructExpr.end!\n );\n throw new TypeError(`${constructorName} is not an allowed constructor`);\n }\n\n return NormalCompletion(new constructor(...argList));\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-argumentlistevaluation\n function* ArgumentListEvaluation(\n args: CallExpression[\"arguments\"] | TemplateLiteral\n ): EvaluateResult<unknown, unknown[]> {\n const array: unknown[] = [];\n if (Array.isArray(args)) {\n for (const arg of args) {\n if (arg.type === \"SpreadElement\") {\n const spreadValues = GetValue(\n yield* Evaluate(arg.argument)\n ) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(yield* Evaluate(arg)));\n }\n }\n } else {\n array.push(GetTemplateObject(args));\n for (const expr of args.expressions) {\n array.push(GetValue(yield* Evaluate(expr)));\n }\n }\n return array;\n }\n\n // https://tc39.es/ecma262/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n function* CallFunction(\n closure: FunctionObject,\n thisArgument: unknown,\n args: Iterable<unknown>\n ): EvaluateResult<unknown, unknown> {\n hooks.beforeCall?.(closure[SourceNode]);\n const calleeContext = PrepareForOrdinaryCall(closure);\n OrdinaryCallBindThis(closure, calleeContext, thisArgument);\n const result = yield* OrdinaryCallEvaluateBody(closure, args);\n if (debug) {\n currentNode = {\n ...closure[SourceNode],\n [DebuggerReturn]: true,\n } as EstreeNode & {\n [DebuggerReturn]?: boolean;\n };\n yield {\n type: \"return\",\n value: result.Type === \"return\" ? result.Value : undefined,\n };\n }\n executionContextStack.pop();\n globalExecutionContextStack.pop();\n if (result.Type === \"return\") {\n return result.Value;\n }\n return undefined;\n }\n\n // https://tc39.es/ecma262/#sec-prepareforordinarycall\n function PrepareForOrdinaryCall(F: FunctionObject): ExecutionContext {\n const calleeContext = new ExecutionContext();\n calleeContext.Function = F;\n const localEnv = new FunctionEnvironment(F);\n calleeContext.VariableEnvironment = localEnv;\n calleeContext.LexicalEnvironment = localEnv;\n executionContextStack.push(calleeContext);\n globalExecutionContextStack.push(calleeContext);\n return calleeContext;\n }\n\n function OrdinaryCallBindThis(\n F: FunctionObject,\n calleeContext: ExecutionContext,\n thisArgument: unknown\n ) {\n if (F[ThisMode] === Mode.LEXICAL) {\n return;\n }\n const localEnv = calleeContext.LexicalEnvironment;\n (localEnv as FunctionEnvironment)?.BindThisValue(thisArgument);\n }\n\n // https://tc39.es/ecma262/#sec-ordinarycallevaluatebody\n function* OrdinaryCallEvaluateBody(\n F: FunctionObject,\n args: Iterable<unknown>\n ): CompletionRecordResult {\n return yield* EvaluateFunctionBody(F[ECMAScriptCode], F, args);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-evaluatefunctionbody\n function* EvaluateFunctionBody(\n body: Statement[] | Expression,\n F: FunctionObject,\n args: Iterable<unknown>\n ): CompletionRecordResult {\n yield* FunctionDeclarationInstantiation(F, args);\n if (Array.isArray(body)) {\n return yield* EvaluateStatementList(body);\n }\n return new CompletionRecord(\"return\", GetValue(yield* Evaluate(body)));\n }\n\n // https://tc39.es/ecma262/#sec-block-runtime-semantics-evaluation\n function* EvaluateStatementList(\n statements: Statement[]\n ): CompletionRecordResult {\n let result = NormalCompletion(Empty);\n for (const stmt of statements) {\n const s = yield* Evaluate(stmt);\n if (s.Type !== \"normal\") {\n return s;\n }\n result = UpdateEmpty(result, s.Value);\n }\n return result;\n }\n\n function GetThisEnvironment(): FunctionEnvironment {\n let env: EnvironmentRecord | null | undefined =\n getRunningContext().LexicalEnvironment;\n while (env) {\n if (env.HasThisBinding()) {\n return env as FunctionEnvironment;\n }\n env = env.OuterEnv;\n }\n throw new Error(\"Accessing global this is forbidden\");\n }\n\n // https://tc39.es/ecma262/#sec-isanonymousfunctiondefinition\n function IsAnonymousFunctionDefinition(\n node: EstreeNode\n ): node is FunctionDefinition {\n // No ParenthesizedExpression in ESTree.\n return (\n (node.type === \"FunctionExpression\" && !node.id) ||\n node.type === \"ArrowFunctionExpression\"\n );\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-namedevaluation\n function NamedEvaluation(node: FunctionDefinition, name: string) {\n hooks.beforeEvaluate?.(node);\n // No ParenthesizedExpression in ESTree.\n switch (node.type) {\n case \"FunctionExpression\":\n return InstantiateOrdinaryFunctionExpression(node, name);\n case \"ArrowFunctionExpression\":\n return InstantiateArrowFunctionExpression(node, name);\n // istanbul ignore next: should never happen\n default:\n throw new Error(\n `Unexpected node type for NamedEvaluation: ${(node as FunctionDefinition).type}`\n );\n }\n }\n\n // https://tc39.es/ecma262/#sec-functiondeclarationinstantiation\n function* FunctionDeclarationInstantiation(\n func: FunctionObject,\n args: Iterable<unknown>\n ): EvaluateResult<unknown, void> {\n const calleeContext = getRunningContext();\n const code = func[ECMAScriptCode];\n const formals = func[FormalParameters] as FunctionDeclaration[\"params\"];\n const parameterNames = collectBoundNames(formals);\n const hasParameterExpressions = containsExpression(formals);\n const varDeclarations = collectScopedDeclarations(code, {\n var: true,\n topLevel: true,\n });\n const varNames = collectBoundNames(varDeclarations);\n\n // `functionNames` ∈ `varNames`\n // `functionsToInitialize` ≈ `functionNames`\n const functionNames: string[] = [];\n const functionsToInitialize: FunctionDeclaration[] = [];\n for (let i = varDeclarations.length - 1; i >= 0; i--) {\n const d = varDeclarations[i];\n if (d.type === \"FunctionDeclaration\") {\n ThrowIfFunctionIsInvalid(d);\n const [fn] = collectBoundNames(d);\n if (!functionNames.includes(fn)) {\n functionNames.unshift(fn);\n functionsToInitialize.unshift(d);\n }\n } else if (rules?.noVar) {\n throw new SyntaxError(\n \"Var declaration is not recommended, use `let` or `const` instead\"\n );\n }\n }\n\n // let argumentsObjectNeeded = true;\n // if (func[ThisMode] === Mode.LEXICAL) {\n // // NOTE: Arrow functions never have an arguments object.\n // argumentsObjectNeeded = false;\n // } else if (parameterNames.includes(\"arguments\")) {\n // argumentsObjectNeeded = false;\n // } else if (!hasParameterExpressions && (\n // varNames.includes(\"arguments\") ||\n // collectBoundNames(collectScopedDeclarations(code, { var: false })).includes(\"arguments\")\n // )) {\n // argumentsObjectNeeded = false;\n // }\n // NOTE: In strict mode, no parameter/function/var/lexical names can be \"arguments\".\n const argumentsObjectNeeded =\n !!externalSourceForDebug && func[ThisMode] !== Mode.LEXICAL;\n\n const env = calleeContext.LexicalEnvironment!;\n for (const paramName of parameterNames) {\n // In strict mode, it's guaranteed no duplicate params exist.\n env.CreateMutableBinding(paramName, false);\n }\n\n let parameterBindings = parameterNames;\n if (argumentsObjectNeeded) {\n const ao = CreateUnmappedArgumentsObject(args);\n env.CreateImmutableBinding(\"arguments\", false);\n env.InitializeBinding(\"arguments\", ao);\n parameterBindings = parameterNames.concat(\"arguments\");\n }\n\n const iteratorRecord = CreateListIteratorRecord(args);\n yield* IteratorBindingInitialization(formals, iteratorRecord, env);\n\n let varEnv: EnvironmentRecord;\n if (!hasParameterExpressions) {\n // NOTE: Only a single Environment Record is needed for the parameters\n // and top-level vars.\n // `varNames` are unique.\n const instantiatedVarNames = [...parameterBindings];\n for (const n of varNames) {\n if (!instantiatedVarNames.includes(n)) {\n instantiatedVarNames.push(n);\n env.CreateMutableBinding(n, false);\n env.InitializeBinding(n, undefined);\n }\n }\n varEnv = env;\n } else {\n // NOTE: A separate Environment Record is needed to ensure that closures\n // created by expressions in the formal parameter list do not have\n // visibility of declarations in the function body.\n varEnv = new DeclarativeEnvironment(env);\n calleeContext.VariableEnvironment = varEnv;\n // `varNames` are unique.\n const instantiatedVarNames: string[] = [];\n for (const n of varNames) {\n if (!instantiatedVarNames.includes(n)) {\n instantiatedVarNames.push(n);\n varEnv.CreateMutableBinding(n, false);\n let initialValue: unknown;\n if (parameterBindings.includes(n) && !functionNames.includes(n)) {\n initialValue = env.GetBindingValue(n, false);\n }\n varEnv.InitializeBinding(n, initialValue);\n // NOTE: A var with the same name as a formal parameter initially has\n // the same value as the corresponding initialized parameter.\n }\n }\n }\n const lexEnv = varEnv;\n calleeContext.LexicalEnvironment = lexEnv;\n\n const lexDeclarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: true,\n });\n for (const d of lexDeclarations) {\n for (const dn of collectBoundNames(d)) {\n // Only lexical VariableDeclaration here in top-level.\n if ((d as VariableDeclaration).kind === \"const\") {\n lexEnv.CreateImmutableBinding(dn, true);\n } else {\n lexEnv.CreateMutableBinding(dn, false);\n }\n }\n }\n\n for (const f of functionsToInitialize) {\n const [fn] = collectBoundNames(f);\n const fo = InstantiateFunctionObject(f, lexEnv);\n varEnv.SetMutableBinding(fn, fo, false);\n }\n }\n\n function CreateUnmappedArgumentsObject(args: Iterable<unknown>) {\n const argList = [...args];\n const argumentObject: Record<string, unknown> = {};\n Object.defineProperty(argumentObject, \"length\", {\n value: argList.length,\n writable: true,\n configurable: true,\n });\n for (let index = 0; index < argList.length; index++) {\n argumentObject[String(index)] = argList[index];\n }\n Object.defineProperty(argumentObject, Symbol.iterator, {\n value: Array.prototype.values,\n writable: true,\n configurable: true,\n });\n const ThrowTypeError = () => {\n throw new TypeError(\n \"'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them\"\n );\n };\n Object.defineProperty(argumentObject, \"callee\", {\n get: ThrowTypeError,\n set: ThrowTypeError,\n });\n return argumentObject;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiatefunctionobject\n function InstantiateFunctionObject(\n func: FunctionDeclaration,\n scope: EnvironmentRecord\n ): FunctionObject {\n const F = OrdinaryFunctionCreate(func, scope, true, false);\n\n if (func.id) {\n SetFunctionName(F, func.id.name);\n }\n\n return F;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiateordinaryfunctionexpression\n function InstantiateOrdinaryFunctionExpression(\n functionExpression: FunctionExpression,\n name?: string\n ): FunctionObject {\n const scope = getRunningContext().LexicalEnvironment!;\n if (functionExpression.id) {\n const name = functionExpression.id.name;\n const funcEnv = new DeclarativeEnvironment(scope);\n funcEnv.CreateImmutableBinding(name, false);\n const closure = OrdinaryFunctionCreate(\n functionExpression,\n funcEnv,\n true,\n false\n );\n SetFunctionName(closure, name);\n funcEnv.InitializeBinding(name, closure);\n return closure;\n } else {\n const closure = OrdinaryFunctionCreate(\n functionExpression,\n scope,\n true,\n false\n );\n SetFunctionName(closure, name ?? \"\");\n return closure;\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiatearrowfunctionexpression\n function InstantiateArrowFunctionExpression(\n arrowFunction: ArrowFunctionExpression,\n name?: string\n ): FunctionObject {\n const scope = getRunningContext().LexicalEnvironment!;\n const closure = OrdinaryFunctionCreate(arrowFunction, scope, false, true);\n SetFunctionName(closure, name ?? \"\");\n return closure;\n }\n\n function SetFunctionName(F: FunctionObject, name: string) {\n Object.defineProperty(F, \"name\", {\n value: name,\n configurable: true,\n });\n }\n\n // https://tc39.es/ecma262/#sec-ordinaryfunctioncreate\n function OrdinaryFunctionCreate(\n sourceNode:\n | FunctionDeclaration\n | FunctionExpression\n | ArrowFunctionExpression,\n scope: EnvironmentRecord,\n isConstructor: boolean,\n lexicalThis: boolean\n ): FunctionObject {\n const F = function (this: unknown) {\n // eslint-disable-next-line prefer-rest-params\n return unwind(CallFunction(F, this, arguments));\n } as FunctionObject;\n Object.defineProperties(F, {\n [SourceNode]: {\n value: sourceNode,\n },\n [FormalParameters]: {\n value: sourceNode.params,\n },\n [ECMAScriptCode]: {\n value:\n sourceNode.body.type === \"BlockStatement\"\n ? sourceNode.body.body\n : sourceNode.body,\n },\n [Environment]: {\n value: scope,\n },\n [IsConstructor]: {\n value: isConstructor,\n },\n [ThisMode]: {\n value: lexicalThis ? Mode.LEXICAL : Mode.STRICT,\n },\n });\n\n const len = ExpectedArgumentCount(sourceNode.params);\n Object.defineProperty(F, \"length\", {\n configurable: true,\n value: len,\n });\n\n if (debug || externalSourceForDebug) {\n Object.defineProperty(F, DebuggerCall, {\n value: function () {\n // eslint-disable-next-line prefer-rest-params\n return CallFunction(F, this, arguments);\n },\n });\n }\n return F;\n }\n\n function ExpectedArgumentCount(\n params: (Identifier | Pattern | RestElement)[]\n ) {\n let count = 0;\n for (const param of params) {\n switch (param.type) {\n case \"AssignmentPattern\":\n case \"RestElement\":\n return count;\n default:\n count++;\n }\n }\n return count;\n }\n\n // Patterns initialization.\n // https://tc39.es/ecma262/#sec-runtime-semantics-bindinginitialization\n function* BindingInitialization(\n node: EstreeLVal,\n value: unknown,\n environment?: EnvironmentRecord\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n switch (node.type) {\n case \"Identifier\":\n return InitializeBoundName(node.name, value, environment);\n case \"ObjectPattern\":\n RequireObjectCoercible(value);\n return yield* PropertyBindingInitialization(\n (node as EstreeObjectPattern).properties,\n value,\n environment\n );\n case \"ArrayPattern\": {\n const iteratorRecord = CreateListIteratorRecord(\n value as Iterable<unknown>\n );\n return yield* IteratorBindingInitialization(\n node.elements,\n iteratorRecord,\n environment\n );\n }\n }\n }\n\n // https://tc39.es/ecma262/#sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization\n function* PropertyBindingInitialization(\n properties: (EstreeProperty | RestElement)[],\n value: unknown,\n environment?: EnvironmentRecord\n ): CompletionRecordResult {\n const excludedNames = new Set<PropertyKey>();\n for (const prop of properties) {\n if (prop.type === \"RestElement\") {\n return RestBindingInitialization(\n prop,\n value,\n environment,\n excludedNames\n );\n }\n if (!prop.computed && prop.key.type === \"Identifier\") {\n yield* KeyedBindingInitialization(\n prop.value as EstreeLVal,\n value,\n environment,\n prop.key.name\n );\n excludedNames.add(prop.key.name);\n } else {\n const P = yield* EvaluateComputedPropertyName(prop.key as Expression);\n yield* KeyedBindingInitialization(\n prop.value as EstreeLVal,\n value,\n environment,\n P\n );\n excludedNames.add(P);\n }\n }\n return NormalCompletion(Empty);\n }\n\n // https://tc39.es/ecma262/#prod-ComputedPropertyName\n function* EvaluateComputedPropertyName(\n node: Expression\n ): EvaluateResult<unknown, PropertyKey> {\n const propName = GetValue(yield* Evaluate(node));\n return ToPropertyKey(propName);\n }\n\n // https://tc39.es/ecma262/#sec-destructuring-binding-patterns-runtime-semantics-restbindinginitialization\n function RestBindingInitialization(\n restProperty: RestElement,\n value: unknown,\n environment: EnvironmentRecord | undefined,\n excludedNames: Set<PropertyKey>\n ): CompletionRecord {\n const lhs = ResolveBinding(\n (restProperty.argument as Identifier).name,\n environment\n );\n const restObj = CopyDataProperties({}, value, excludedNames);\n if (!environment) {\n return PutValue(lhs, restObj);\n }\n return InitializeReferencedBinding(lhs, restObj);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-iteratorbindinginitialization\n function* IteratorBindingInitialization(\n elements: (PatternLike | LVal | null)[],\n iteratorRecord: Iterator<unknown>,\n environment?: EnvironmentRecord\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n if (elements.length === 0) {\n return NormalCompletion(Empty);\n }\n let result;\n for (const node of elements) {\n if (!node) {\n // Elision element.\n iteratorRecord.next();\n result = NormalCompletion(Empty);\n } else if (node.type === \"RestElement\") {\n // Rest element.\n if (node.argument.type === \"Identifier\") {\n const lhs = ResolveBinding(node.argument.name, environment);\n const A: unknown[] = new ArrayConstructor();\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iteratorRecord.next();\n if (done) {\n result = environment\n ? InitializeReferencedBinding(lhs, A)\n : PutValue(lhs, A);\n break;\n }\n A[n] = value;\n n++;\n }\n } else {\n const A: unknown[] = new ArrayConstructor();\n let n = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iteratorRecord.next();\n if (done) {\n result = yield* BindingInitialization(\n node.argument,\n A,\n environment\n );\n break;\n }\n A[n] = value;\n n++;\n }\n }\n } else {\n // Normal element.\n const bindingElement =\n node.type === \"AssignmentPattern\" ? node.left : node;\n switch (bindingElement.type) {\n case \"ObjectPattern\":\n case \"ArrayPattern\": {\n let v: unknown;\n const { done, value } = iteratorRecord.next();\n if (!done) {\n v = value;\n }\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n result = yield* BindingInitialization(\n bindingElement,\n v,\n environment\n );\n break;\n }\n case \"Identifier\": {\n const bindingId = bindingElement.name;\n const lhs = ResolveBinding(bindingId, environment);\n let v: unknown;\n const { done, value } = iteratorRecord.next();\n if (!done) {\n v = value;\n }\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(node.right)) {\n v = NamedEvaluation(node.right, bindingId);\n } else {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n }\n result = environment\n ? InitializeReferencedBinding(lhs, v)\n : PutValue(lhs, v);\n break;\n }\n }\n }\n }\n return result;\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-keyedbindinginitialization\n function* KeyedBindingInitialization(\n node: EstreeLVal,\n value: unknown,\n environment: EnvironmentRecord | undefined,\n propertyName: PropertyKey\n ): EvaluateResult<unknown, CompletionRecord | undefined> {\n const isIdentifier =\n node.type === \"Identifier\" ||\n (node.type === \"AssignmentPattern\" && node.left.type === \"Identifier\");\n if (isIdentifier) {\n const bindingId =\n node.type === \"Identifier\" ? node.name : (node.left as Identifier).name;\n const lhs = ResolveBinding(bindingId, environment);\n let v = GetV(value, propertyName);\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n if (IsAnonymousFunctionDefinition(node.right)) {\n v = NamedEvaluation(node.right, bindingId);\n } else {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n }\n if (!environment) {\n return PutValue(lhs, v);\n }\n return InitializeReferencedBinding(lhs, v);\n }\n\n let v = GetV(value, propertyName);\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n const defaultValue = yield* Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n return yield* BindingInitialization(\n node.type === \"AssignmentPattern\" ? node.left : node,\n v,\n environment\n );\n }\n\n // https://tc39.es/ecma262/#sec-initializeboundname\n function InitializeBoundName(\n name: string,\n value: unknown,\n environment?: EnvironmentRecord\n ): CompletionRecord {\n // Assert: environment is always present.\n environment!.InitializeBinding(name, value);\n return NormalCompletion(Empty);\n }\n\n function ThrowIfFunctionIsInvalid(\n func: FunctionDeclaration | FunctionExpression | ArrowFunctionExpression\n ): void {\n if (func.async || func.generator) {\n throw new SyntaxError(\n `${func.async ? \"Async\" : \"Generator\"} function is not allowed`\n );\n }\n if (expressionOnly && !(func as ArrowFunctionExpression).expression) {\n throw new SyntaxError(\n \"Only an `Expression` is allowed in `ArrowFunctionExpression`'s body\"\n );\n }\n }\n\n if (expressionOnly) {\n return GetValue(unwind(Evaluate(rootAst)));\n }\n\n hooks.beforeEvaluate?.(rootAst);\n ThrowIfFunctionIsInvalid(rootAst);\n const [fn] = collectBoundNames(rootAst);\n // Create an immutable binding for the root function.\n rootEnv.CreateImmutableBinding(fn, true);\n const fo = InstantiateFunctionObject(rootAst, rootEnv);\n rootEnv.InitializeBinding(fn, fo);\n\n if (debug) {\n Object.defineProperties(fo, {\n [DebuggerScope]: {\n value: function () {\n return getRunningContext().LexicalEnvironment;\n },\n },\n [DebuggerNode]: {\n value: function () {\n return currentNode;\n },\n },\n });\n }\n\n return fo;\n}\n\nfunction unwind(iterator: EvaluateResult<unknown, unknown>): unknown {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = iterator.next();\n if (done) {\n return value;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/cook",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.5",
|
|
4
4
|
"description": "Cook expressions and storyboard functions",
|
|
5
5
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/cook",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -52,10 +52,10 @@
|
|
|
52
52
|
"@babel/parser": "^7.25.6"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@next-core/build-next-libs": "^1.0.
|
|
56
|
-
"@next-core/supply": "^2.3.
|
|
55
|
+
"@next-core/build-next-libs": "^1.0.22",
|
|
56
|
+
"@next-core/supply": "^2.3.2",
|
|
57
57
|
"@next-core/test-next": "^1.1.7",
|
|
58
58
|
"lodash": "^4.17.21"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "74a5372d7b667fa7d36c9a0c00db523f858e4dd0"
|
|
61
61
|
}
|