@next-core/cook 2.3.0 → 2.4.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cook.js","names":["_contextFree","require","_ExecutionContext","_sanitize","_traverse","cook","rootAst","codeSource","rules","debug","globalVariables","hooks","_hooks$beforeEvaluate3","expressionOnly","type","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","cooked","freeze","defineProperty","writable","enumerable","configurable","set","currentNode","Evaluate","node","optionalChainRef","forceYield","_hooks$beforeEvaluate","_hooks$beforeBranch2","beforeEvaluate","call","endsWith","array","element","elements","length","spreadValues","GetValue","argument","push","NormalCompletion","ThrowIfFunctionIsInvalid","closure","InstantiateArrowFunctionExpression","leftRef","left","leftValue","rightRef","right","Value","rightValue","operator","funcName","substring","start","end","TypeError","thisValue","ReferenceRecord","IsPropertyReference","Base","result","ApplyStringOrNumericBinaryOperator","ref","callee","func","undefined","optional","skipped","sanitize","EvaluateCall","arguments","expression","test","consequent","alternate","ResolveBinding","name","regex","SyntaxError","flags","includes","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","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","Array","from","bodyResult","increment","perIterationBindings","CreatePerIterationEnvironment","testRef","testValue","incRef","lastIterationEnv","outer","OuterEnv","thisIterationEnv","bn","lastValue","GetBindingValue","pattern","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","_hooks$beforeCall","_currentNode","beforeCall","SourceNode","PrepareForOrdinaryCall","OrdinaryCallEvaluateBody","pop","calleeContext","Function","localEnv","FunctionEnvironment","Environment","EvaluateFunctionBody","ECMAScriptCode","FunctionDeclarationInstantiation","statements","s","Error","formals","FormalParameters","parameterNames","hasParameterExpressions","containsExpression","varDeclarations","varNames","functionNames","functionsToInitialize","i","unshift","noVar","paramName","IteratorBindingInitialization","varEnv","initialValue","lexEnv","lexDeclarations","f","SetMutableBinding","scope","OrdinaryFunctionCreate","functionExpression","funcEnv","arrowFunction","sourceNode","isConstructor","unwind","defineProperties","params","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 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 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} 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}\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\n/** For next-core internal usage only. */\nexport function cook(\n rootAst: FunctionDeclaration | Expression,\n codeSource: string,\n { rules, debug, globalVariables = {}, hooks = {} }: CookOptions = {}\n): unknown {\n const expressionOnly = rootAst.type !== \"FunctionDeclaration\";\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 node.type !== \"TryStatement\" &&\n node.type !== \"BlockStatement\" &&\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 = [];\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)).Value;\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 sanitize(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 }\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 sanitize(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 sanitize(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 sanitize(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 currentNode = node;\n return new CompletionRecord(\"return\", v);\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 (debug) 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 (debug) 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));\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));\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 = [];\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 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) {\n const debuggerCall = (func as FunctionObject)[DebuggerCall];\n if (debuggerCall) {\n const result = yield* (debuggerCall as Function).apply(\n thisValue,\n argList\n );\n sanitize(result);\n return NormalCompletion(result);\n }\n }\n\n const result = func.apply(thisValue, argList);\n sanitize(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 (!isAllowedConstructor(constructor)) {\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 args: Iterable<unknown>\n ): EvaluateResult<unknown, unknown> {\n hooks.beforeCall?.(closure[SourceNode]);\n PrepareForOrdinaryCall(closure);\n const result = yield* OrdinaryCallEvaluateBody(closure, args);\n if (currentNode?.type !== \"ReturnStatement\") {\n currentNode = closure[SourceNode];\n }\n if (debug)\n yield {\n type: \"return\",\n value: result.Type === \"return\" ? result.Value : undefined,\n };\n executionContextStack.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[Environment]);\n calleeContext.VariableEnvironment = localEnv;\n calleeContext.LexicalEnvironment = localEnv;\n executionContextStack.push(calleeContext);\n return calleeContext;\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 // 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 // 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 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 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 for (const n of varNames) {\n if (!parameterNames.includes(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 for (const n of varNames) {\n varEnv.CreateMutableBinding(n, false);\n let initialValue: unknown;\n if (parameterNames.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 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 // 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);\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(functionExpression, funcEnv, true);\n SetFunctionName(closure, name);\n funcEnv.InitializeBinding(name, closure);\n return closure;\n } else {\n const closure = OrdinaryFunctionCreate(functionExpression, scope, true);\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);\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 ): FunctionObject {\n const F = function () {\n // eslint-disable-next-line prefer-rest-params\n return unwind(CallFunction(F, 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 });\n if (debug) {\n Object.defineProperty(F, DebuggerCall, {\n value: function () {\n // eslint-disable-next-line prefer-rest-params\n return CallFunction(F, arguments);\n },\n });\n }\n return F;\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[] = [];\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[] = [];\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","cook","rootAst","codeSource","rules","debug","externalSourceForDebug","globalVariables","ArrayConstructor","Array","hooks","_hooks$beforeEvaluate3","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","length","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","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","pattern","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","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","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 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\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 }\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 (debug) 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 (debug) 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 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 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 // 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 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 // 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":[]}