@next-core/cook 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/cook.js +8 -8
- package/dist/esm/cook.js.map +1 -1
- package/package.json +6 -6
package/dist/esm/cook.js
CHANGED
|
@@ -252,15 +252,15 @@ export function cook(rootAst, codeSource) {
|
|
|
252
252
|
if (!(node.left.type === "ArrayPattern" || node.left.type === "ObjectPattern")) {
|
|
253
253
|
var _lref = Evaluate(node.left).Value;
|
|
254
254
|
// Todo: IsAnonymousFunctionDefinition(lref)
|
|
255
|
-
var
|
|
256
|
-
var
|
|
257
|
-
PutValue(_lref,
|
|
258
|
-
return NormalCompletion(
|
|
255
|
+
var _rref = Evaluate(node.right);
|
|
256
|
+
var _rval = GetValue(_rref);
|
|
257
|
+
PutValue(_lref, _rval);
|
|
258
|
+
return NormalCompletion(_rval);
|
|
259
259
|
}
|
|
260
|
-
var
|
|
261
|
-
var
|
|
262
|
-
DestructuringAssignmentEvaluation(node.left,
|
|
263
|
-
return NormalCompletion(
|
|
260
|
+
var _rref2 = Evaluate(node.right);
|
|
261
|
+
var _rval2 = GetValue(_rref2);
|
|
262
|
+
DestructuringAssignmentEvaluation(node.left, _rval2);
|
|
263
|
+
return NormalCompletion(_rval2);
|
|
264
264
|
}
|
|
265
265
|
// Operators other than `=`.
|
|
266
266
|
var lref = Evaluate(node.left).Value;
|
package/dist/esm/cook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cook.js","names":["ApplyStringOrNumericAssignment","CreateListIteratorRecord","ApplyStringOrNumericBinaryOperator","GetV","GetValue","InitializeReferencedBinding","IsPropertyReference","LoopContinues","PutValue","RequireObjectCoercible","ToPropertyKey","UpdateEmpty","ApplyUnaryOperator","GetIdentifierReference","ForDeclarationBindingInstantiation","CopyDataProperties","CompletionRecord","DeclarativeEnvironment","ECMAScriptCode","Empty","Environment","ExecutionContext","FormalParameters","FunctionEnvironment","IsConstructor","NormalCompletion","ReferenceRecord","SourceNode","sanitize","isAllowedConstructor","collectBoundNames","collectScopedDeclarations","containsExpression","cook","rootAst","codeSource","_hooks$beforeEvaluate3","rules","globalVariables","hooks","arguments","length","undefined","expressionOnly","type","rootEnv","rootContext","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","Evaluate","node","optionalChainRef","_hooks$beforeEvaluate","_hooks$beforeBranch","_hooks$beforeBranch2","beforeEvaluate","call","array","element","elements","spreadValues","argument","push","ThrowIfFunctionIsInvalid","closure","InstantiateArrowFunctionExpression","leftRef","left","leftValue","rightRef","right","Value","rightValue","operator","funcName","substring","start","end","TypeError","concat","thisValue","Base","result","ref","callee","func","optional","skipped","EvaluateCall","expression","test","consequent","alternate","ResolveBinding","name","regex","SyntaxError","flags","includes","baseReference","object","baseValue","computed","EvaluatePropertyAccessWithExpressionKey","property","EvaluatePropertyAccessWithIdentifierKey","EvaluateNew","prop","properties","fromValue","Set","kind","propName","EvaluateComputedPropertyName","expr","expressions","chunks","index","val","String","join","tagRef","tag","tagFunc","deleteStatus","ReferenceName","lref","rref","rval","DestructuringAssignmentEvaluation","lval","r","body","oldEnv","getRunningContext","blockEnv","BlockDeclarationInstantiation","blockValue","EvaluateStatementList","EvaluateBreakableStatement","DoWhileLoopEvaluation","ForInOfLoopEvaluation","ForLoopEvaluation","InstantiateOrdinaryFunctionExpression","beforeBranch","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","bindingId","rhs","BindingInitialization","WhileLoopEvaluation","env","thrownValue","param","catchEnv","argName","CreateMutableBinding","B","stmtResult","input","V","defaultCaseIndex","findIndex","switchCase","hasDefaultCase","A","slice","found","C","CaseClauseIsSelected","foundInB","clauseSelector","exprValue","isVariableDeclaration","lhsKind","uninitializedBoundNames","iterationKind","keyResult","ForInOfHeadEvaluation","ForInOfBodyEvaluation","runningContext","newEnv","iterator","EnumerateObjectProperties","stmt","iteratorRecord","destructuring","done","nextValue","next","lhsRef","iterationEnv","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","PropertyDestructuringAssignmentEvaluation","IteratorDestructuringAssignmentEvaluation","excludedNames","valueTarget","defaultValue","add","KeyedDestructuringAssignmentEvaluation","RestDestructuringAssignmentEvaluation","propertyName","assignmentTarget","isObjectOrArray","rhsValue","restProperty","restObj","n","strict","propertyNameReference","propertyNameValue","propertyKey","identifier","propertyNameString","code","var","topLevel","d","IsConstantDeclaration","fn","fo","InstantiateFunctionObject","args","argList","ArgumentListEvaluation","apply","constructExpr","constructor","constructorName","isArray","arg","CallFunction","_hooks$beforeCall","beforeCall","PrepareForOrdinaryCall","OrdinaryCallEvaluateBody","pop","calleeContext","Function","localEnv","EvaluateFunctionBody","FunctionDeclarationInstantiation","statements","s","formals","parameterNames","hasParameterExpressions","varDeclarations","varNames","functionNames","functionsToInitialize","i","unshift","noVar","paramName","IteratorBindingInitialization","varEnv","initialValue","lexEnv","lexDeclarations","f","SetMutableBinding","scope","OrdinaryFunctionCreate","functionExpression","funcEnv","arrowFunction","sourceNode","isConstructor","defineProperties","params","environment","InitializeBoundName","PropertyBindingInitialization","RestBindingInitialization","KeyedBindingInitialization","P","bindingElement","isIdentifier","async","generator"],"sources":["../../src/cook.ts"],"sourcesContent":["import {\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 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 {\n EstreeLVal,\n EstreeNode,\n EstreeObjectExpression,\n EstreeObjectPattern,\n EstreeProperty,\n CookRules,\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}\n\nexport interface CookHooks {\n beforeEvaluate?(node: EstreeNode): void;\n beforeCall?(node: EstreeNode): void;\n beforeBranch?(node: EstreeNode, branch: \"if\" | \"else\"): void;\n}\n\n/** For next-core internal usage only. */\nexport function cook(\n rootAst: FunctionDeclaration | Expression,\n codeSource: string,\n { rules, 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 function Evaluate(\n node: EstreeNode,\n optionalChainRef?: OptionalChainRef\n ): CompletionRecord {\n hooks.beforeEvaluate?.(node);\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 Evaluate(element.argument)\n ) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(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 = Evaluate(node.left);\n const leftValue = GetValue(leftRef);\n const rightRef = 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 = 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 return EvaluateCall(func, ref, node.arguments, node.callee);\n }\n case \"ChainExpression\":\n // https://tc39.es/ecma262/#sec-optional-chains\n return Evaluate(node.expression, {});\n case \"ConditionalExpression\":\n // https://tc39.es/ecma262/#sec-conditional-operator\n return NormalCompletion(\n GetValue(\n Evaluate(\n GetValue(Evaluate(node.test)) ? node.consequent : 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(Evaluate(node.left));\n switch (node.operator) {\n case \"&&\":\n return NormalCompletion(\n leftValue && GetValue(Evaluate(node.right))\n );\n case \"||\":\n return NormalCompletion(\n leftValue || GetValue(Evaluate(node.right))\n );\n case \"??\":\n return NormalCompletion(\n leftValue ?? GetValue(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 = 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 ? 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 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(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 : EvaluateComputedPropertyName(prop.key as Expression);\n if (propName === \"__proto__\") {\n throw new TypeError(\n \"Setting '__proto__' property is not allowed\"\n );\n }\n object[propName] = GetValue(Evaluate(prop.value));\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(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(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 = Evaluate(node.tag).Value as ReferenceRecord;\n const tagFunc = GetValue(tagRef) as Function;\n sanitize(tagFunc);\n return EvaluateCall(tagFunc, tagRef, node.quasi, node.tag);\n }\n case \"UnaryExpression\": {\n // https://tc39.es/ecma262/#sec-unary-operators\n const ref = 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 = Evaluate(node.left).Value as ReferenceRecord;\n // Todo: IsAnonymousFunctionDefinition(lref)\n const rref = Evaluate(node.right);\n const rval = GetValue(rref);\n\n PutValue(lref, rval);\n return NormalCompletion(rval);\n }\n const rref = Evaluate(node.right);\n const rval = GetValue(rref) as string | number;\n DestructuringAssignmentEvaluation(node.left, rval);\n return NormalCompletion(rval);\n }\n // Operators other than `=`.\n const lref = Evaluate(node.left).Value as ReferenceRecord;\n const lval = GetValue(lref) as string | number;\n const rref = 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 = 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(DoWhileLoopEvaluation(node));\n case \"ExpressionStatement\":\n case \"TSAsExpression\":\n // https://tc39.es/ecma262/#sec-expression-statement\n return Evaluate(node.expression);\n case \"ForInStatement\":\n case \"ForOfStatement\":\n // https://tc39.es/ecma262/#sec-for-in-and-for-of-statements\n return EvaluateBreakableStatement(ForInOfLoopEvaluation(node));\n case \"ForStatement\":\n // https://tc39.es/ecma262/#sec-for-statement\n return EvaluateBreakableStatement(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 return GetValue(Evaluate(node.test))\n ? (hooks.beforeBranch?.(node, \"if\"),\n UpdateEmpty(Evaluate(node.consequent), undefined))\n : (hooks.beforeBranch?.(node, \"else\"), node.alternate)\n ? UpdateEmpty(Evaluate(node.alternate), undefined)\n : NormalCompletion(undefined);\n case \"ReturnStatement\": {\n // https://tc39.es/ecma262/#sec-return-statement\n let v: unknown;\n if (node.argument) {\n const exprRef = Evaluate(node.argument);\n v = GetValue(exprRef);\n }\n return new CompletionRecord(\"return\", v);\n }\n case \"ThrowStatement\":\n // https://tc39.es/ecma262/#sec-throw-statement\n throw GetValue(Evaluate(node.argument));\n case \"UpdateExpression\": {\n // https://tc39.es/ecma262/#sec-update-expressions\n const lhs = 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 EvaluateStatementList(node.consequent);\n case \"SwitchStatement\": {\n // https://tc39.es/ecma262/#sec-switch-statement\n const exprRef = 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 = 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 = Evaluate(node.block);\n } catch (error) {\n if (node.handler) {\n hooks.beforeEvaluate?.(node.handler);\n R = CatchClauseEvaluation(node.handler, error);\n } else {\n throw error;\n }\n } finally {\n if (node.finalizer) {\n const F = 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 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 const bindingId = declarator.id.name;\n const lhs = ResolveBinding(bindingId);\n // Todo: IsAnonymousFunctionDefinition(Initializer)\n const rhs = Evaluate(declarator.init);\n const value = GetValue(rhs);\n result =\n node.kind === \"var\"\n ? PutValue(lhs, value)\n : InitializeReferencedBinding(lhs, value);\n } else {\n const rhs = Evaluate(declarator.init);\n const rval = GetValue(rhs);\n result = 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(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 ): CompletionRecord {\n if (!node.param) {\n return 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 BindingInitialization(node.param, thrownValue, catchEnv);\n const B = 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 ): CompletionRecord {\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 = CaseClauseIsSelected(C, input);\n }\n if (found) {\n const R = 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 = CaseClauseIsSelected(C, input);\n }\n if (foundInB) {\n const R = 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 = 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 = 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(C: SwitchCase, input: unknown): boolean {\n const clauseSelector = GetValue(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): CompletionRecord {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const exprValue = GetValue(Evaluate(node.test));\n if (!exprValue) {\n return NormalCompletion(V);\n }\n const stmtResult = 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(node: DoWhileStatement): CompletionRecord {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const stmtResult = 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(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 ): CompletionRecord {\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 = 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 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 ): CompletionRecord {\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 = Evaluate(expr);\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 ): CompletionRecord {\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 const { done, value: nextValue } = iteratorRecord.next();\n if (done) {\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 (!destructuring) {\n const [lhsName] = collectBoundNames(lhs);\n lhsRef = ResolveBinding(lhsName);\n }\n } else if (!destructuring) {\n lhsRef = Evaluate(lhs).Value as ReferenceRecord;\n }\n destructuring\n ? lhsKind === \"assignment\"\n ? DestructuringAssignmentEvaluation(lhs, nextValue)\n : lhsKind === \"varBinding\"\n ? BindingInitialization(lhs, nextValue, undefined)\n : BindingInitialization(lhs, nextValue, iterationEnv)\n : lhsKind === \"lexicalBinding\"\n ? InitializeReferencedBinding(lhsRef!, nextValue)\n : PutValue(lhsRef!, nextValue);\n\n const result = 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): CompletionRecord {\n if (node.init?.type === \"VariableDeclaration\") {\n // `for (var … ; … ; … ) …`\n if (node.init.kind === \"var\") {\n Evaluate(node.init);\n return 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 Evaluate(node.init);\n const perIterationLets = isConst ? [] : Array.from(boundNames);\n const bodyResult = 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 = Evaluate(node.init);\n GetValue(exprRef);\n }\n return 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 ): CompletionRecord {\n CreatePerIterationEnvironment(perIterationBindings);\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (test) {\n const testRef = Evaluate(test);\n const testValue = GetValue(testRef);\n if (!testValue) {\n return NormalCompletion(V);\n }\n }\n const result = Evaluate(stmt) as CompletionRecord;\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 = Evaluate(increment);\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 ): CompletionRecord {\n if (pattern.type === \"ObjectPattern\") {\n RequireObjectCoercible(value);\n if (pattern.properties.length > 0) {\n 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 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 ): 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 : (EvaluateComputedPropertyName(prop.key as Expression) 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 // Todo(steve): check IsAnonymousFunctionDefinition(Initializer)\n const defaultValue = Evaluate(prop.value.right);\n v = GetValue(defaultValue);\n }\n PutValue(lref, v);\n excludedNames.add(propName);\n } else {\n KeyedDestructuringAssignmentEvaluation(prop.value, value, propName);\n excludedNames.add(propName);\n }\n } else {\n RestDestructuringAssignmentEvaluation(prop, value, excludedNames);\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 ): CompletionRecord {\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 = Evaluate(assignmentTarget).Value as ReferenceRecord;\n }\n const v = GetV(value, propertyName);\n let rhsValue;\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n // Todo(steve): check IsAnonymousFunctionDefinition(Initializer)\n const defaultValue = Evaluate(node.right);\n rhsValue = GetValue(defaultValue);\n } else {\n rhsValue = v;\n }\n if (isObjectOrArray) {\n return DestructuringAssignmentEvaluation(assignmentTarget, rhsValue);\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 ): CompletionRecord {\n const lref = Evaluate(restProperty.argument).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 ): CompletionRecord {\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 = 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 // Todo(steve): check IsAnonymousFunctionDefinition(Initializer)\n const defaultValue = Evaluate(element.right);\n v = GetValue(defaultValue);\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 = 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 ): ReferenceRecord {\n const propertyNameReference = 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 ): CompletionRecord {\n let thisValue;\n if (ref instanceof ReferenceRecord) {\n if (IsPropertyReference(ref)) {\n thisValue = ref.Base;\n }\n }\n const argList = 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 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 ): CompletionRecord {\n const ref = Evaluate(constructExpr);\n const constructor = GetValue(ref) as new (...args: unknown[]) => unknown;\n const argList = 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 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 ): 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(Evaluate(arg.argument)) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(Evaluate(arg)));\n }\n }\n } else {\n array.push(GetTemplateObject(args));\n for (const expr of args.expressions) {\n array.push(GetValue(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 ): unknown {\n hooks.beforeCall?.(closure[SourceNode]);\n PrepareForOrdinaryCall(closure);\n const result = OrdinaryCallEvaluateBody(closure, args);\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 ): CompletionRecord {\n return 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 ): CompletionRecord {\n FunctionDeclarationInstantiation(F, args);\n if (Array.isArray(body)) {\n return EvaluateStatementList(body);\n }\n return new CompletionRecord(\"return\", GetValue(Evaluate(body)));\n }\n\n // https://tc39.es/ecma262/#sec-block-runtime-semantics-evaluation\n function EvaluateStatementList(statements: Statement[]): CompletionRecord {\n let result = NormalCompletion(Empty);\n for (const stmt of statements) {\n const s = 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-functiondeclarationinstantiation\n function FunctionDeclarationInstantiation(\n func: FunctionObject,\n args: Iterable<unknown>\n ): 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 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 return OrdinaryFunctionCreate(func, scope, true);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiateordinaryfunctionexpression\n function InstantiateOrdinaryFunctionExpression(\n functionExpression: FunctionExpression\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 funcEnv.InitializeBinding(name, closure);\n return closure;\n } else {\n const closure = OrdinaryFunctionCreate(functionExpression, scope, true);\n return closure;\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiatearrowfunctionexpression\n function InstantiateArrowFunctionExpression(\n arrowFunction: ArrowFunctionExpression\n ): FunctionObject {\n const scope = getRunningContext().LexicalEnvironment!;\n const closure = OrdinaryFunctionCreate(arrowFunction, scope, false);\n return closure;\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 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 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 ): CompletionRecord | undefined {\n switch (node.type) {\n case \"Identifier\":\n return InitializeBoundName(node.name, value, environment);\n case \"ObjectPattern\":\n RequireObjectCoercible(value);\n return 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 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 ): CompletionRecord {\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 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 = EvaluateComputedPropertyName(prop.key as Expression);\n 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(node: Expression): PropertyKey {\n const propName = GetValue(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 ): 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 = BindingInitialization(node.argument, A, environment);\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 = Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n result = BindingInitialization(bindingElement, v, environment);\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 // IsAnonymousFunctionDefinition(Initializer)\n const defaultValue = Evaluate(node.right);\n v = GetValue(defaultValue);\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 ): 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(Initializer)\n const defaultValue = Evaluate(node.right);\n v = GetValue(defaultValue);\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 = Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n return 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(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 return fo;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cook.js","names":["ApplyStringOrNumericAssignment","CreateListIteratorRecord","ApplyStringOrNumericBinaryOperator","GetV","GetValue","InitializeReferencedBinding","IsPropertyReference","LoopContinues","PutValue","RequireObjectCoercible","ToPropertyKey","UpdateEmpty","ApplyUnaryOperator","GetIdentifierReference","ForDeclarationBindingInstantiation","CopyDataProperties","CompletionRecord","DeclarativeEnvironment","ECMAScriptCode","Empty","Environment","ExecutionContext","FormalParameters","FunctionEnvironment","IsConstructor","NormalCompletion","ReferenceRecord","SourceNode","sanitize","isAllowedConstructor","collectBoundNames","collectScopedDeclarations","containsExpression","cook","rootAst","codeSource","_hooks$beforeEvaluate3","rules","globalVariables","hooks","arguments","length","undefined","expressionOnly","type","rootEnv","rootContext","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","Evaluate","node","optionalChainRef","_hooks$beforeEvaluate","_hooks$beforeBranch","_hooks$beforeBranch2","beforeEvaluate","call","array","element","elements","spreadValues","argument","push","ThrowIfFunctionIsInvalid","closure","InstantiateArrowFunctionExpression","leftRef","left","leftValue","rightRef","right","Value","rightValue","operator","funcName","substring","start","end","TypeError","concat","thisValue","Base","result","ref","callee","func","optional","skipped","EvaluateCall","expression","test","consequent","alternate","ResolveBinding","name","regex","SyntaxError","flags","includes","baseReference","object","baseValue","computed","EvaluatePropertyAccessWithExpressionKey","property","EvaluatePropertyAccessWithIdentifierKey","EvaluateNew","prop","properties","fromValue","Set","kind","propName","EvaluateComputedPropertyName","expr","expressions","chunks","index","val","String","join","tagRef","tag","tagFunc","deleteStatus","ReferenceName","lref","rref","rval","DestructuringAssignmentEvaluation","lval","r","body","oldEnv","getRunningContext","blockEnv","BlockDeclarationInstantiation","blockValue","EvaluateStatementList","EvaluateBreakableStatement","DoWhileLoopEvaluation","ForInOfLoopEvaluation","ForLoopEvaluation","InstantiateOrdinaryFunctionExpression","beforeBranch","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","bindingId","rhs","BindingInitialization","WhileLoopEvaluation","env","thrownValue","param","catchEnv","argName","CreateMutableBinding","B","stmtResult","input","V","defaultCaseIndex","findIndex","switchCase","hasDefaultCase","A","slice","found","C","CaseClauseIsSelected","foundInB","clauseSelector","exprValue","isVariableDeclaration","lhsKind","uninitializedBoundNames","iterationKind","keyResult","ForInOfHeadEvaluation","ForInOfBodyEvaluation","runningContext","newEnv","iterator","EnumerateObjectProperties","stmt","iteratorRecord","destructuring","done","nextValue","next","lhsRef","iterationEnv","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","PropertyDestructuringAssignmentEvaluation","IteratorDestructuringAssignmentEvaluation","excludedNames","valueTarget","defaultValue","add","KeyedDestructuringAssignmentEvaluation","RestDestructuringAssignmentEvaluation","propertyName","assignmentTarget","isObjectOrArray","rhsValue","restProperty","restObj","n","strict","propertyNameReference","propertyNameValue","propertyKey","identifier","propertyNameString","code","var","topLevel","d","IsConstantDeclaration","fn","fo","InstantiateFunctionObject","args","argList","ArgumentListEvaluation","apply","constructExpr","constructor","constructorName","isArray","arg","CallFunction","_hooks$beforeCall","beforeCall","PrepareForOrdinaryCall","OrdinaryCallEvaluateBody","pop","calleeContext","Function","localEnv","EvaluateFunctionBody","FunctionDeclarationInstantiation","statements","s","formals","parameterNames","hasParameterExpressions","varDeclarations","varNames","functionNames","functionsToInitialize","i","unshift","noVar","paramName","IteratorBindingInitialization","varEnv","initialValue","lexEnv","lexDeclarations","f","SetMutableBinding","scope","OrdinaryFunctionCreate","functionExpression","funcEnv","arrowFunction","sourceNode","isConstructor","defineProperties","params","environment","InitializeBoundName","PropertyBindingInitialization","RestBindingInitialization","KeyedBindingInitialization","P","bindingElement","isIdentifier","async","generator"],"sources":["../../src/cook.ts"],"sourcesContent":["import {\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 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 {\n EstreeLVal,\n EstreeNode,\n EstreeObjectExpression,\n EstreeObjectPattern,\n EstreeProperty,\n CookRules,\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}\n\nexport interface CookHooks {\n beforeEvaluate?(node: EstreeNode): void;\n beforeCall?(node: EstreeNode): void;\n beforeBranch?(node: EstreeNode, branch: \"if\" | \"else\"): void;\n}\n\n/** For next-core internal usage only. */\nexport function cook(\n rootAst: FunctionDeclaration | Expression,\n codeSource: string,\n { rules, 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 function Evaluate(\n node: EstreeNode,\n optionalChainRef?: OptionalChainRef\n ): CompletionRecord {\n hooks.beforeEvaluate?.(node);\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 Evaluate(element.argument)\n ) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(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 = Evaluate(node.left);\n const leftValue = GetValue(leftRef);\n const rightRef = 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 = 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 return EvaluateCall(func, ref, node.arguments, node.callee);\n }\n case \"ChainExpression\":\n // https://tc39.es/ecma262/#sec-optional-chains\n return Evaluate(node.expression, {});\n case \"ConditionalExpression\":\n // https://tc39.es/ecma262/#sec-conditional-operator\n return NormalCompletion(\n GetValue(\n Evaluate(\n GetValue(Evaluate(node.test)) ? node.consequent : 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(Evaluate(node.left));\n switch (node.operator) {\n case \"&&\":\n return NormalCompletion(\n leftValue && GetValue(Evaluate(node.right))\n );\n case \"||\":\n return NormalCompletion(\n leftValue || GetValue(Evaluate(node.right))\n );\n case \"??\":\n return NormalCompletion(\n leftValue ?? GetValue(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 = 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 ? 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 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(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 : EvaluateComputedPropertyName(prop.key as Expression);\n if (propName === \"__proto__\") {\n throw new TypeError(\n \"Setting '__proto__' property is not allowed\"\n );\n }\n object[propName] = GetValue(Evaluate(prop.value));\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(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(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 = Evaluate(node.tag).Value as ReferenceRecord;\n const tagFunc = GetValue(tagRef) as Function;\n sanitize(tagFunc);\n return EvaluateCall(tagFunc, tagRef, node.quasi, node.tag);\n }\n case \"UnaryExpression\": {\n // https://tc39.es/ecma262/#sec-unary-operators\n const ref = 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 = Evaluate(node.left).Value as ReferenceRecord;\n // Todo: IsAnonymousFunctionDefinition(lref)\n const rref = Evaluate(node.right);\n const rval = GetValue(rref);\n\n PutValue(lref, rval);\n return NormalCompletion(rval);\n }\n const rref = Evaluate(node.right);\n const rval = GetValue(rref) as string | number;\n DestructuringAssignmentEvaluation(node.left, rval);\n return NormalCompletion(rval);\n }\n // Operators other than `=`.\n const lref = Evaluate(node.left).Value as ReferenceRecord;\n const lval = GetValue(lref) as string | number;\n const rref = 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 = 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(DoWhileLoopEvaluation(node));\n case \"ExpressionStatement\":\n case \"TSAsExpression\":\n // https://tc39.es/ecma262/#sec-expression-statement\n return Evaluate(node.expression);\n case \"ForInStatement\":\n case \"ForOfStatement\":\n // https://tc39.es/ecma262/#sec-for-in-and-for-of-statements\n return EvaluateBreakableStatement(ForInOfLoopEvaluation(node));\n case \"ForStatement\":\n // https://tc39.es/ecma262/#sec-for-statement\n return EvaluateBreakableStatement(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 return GetValue(Evaluate(node.test))\n ? (hooks.beforeBranch?.(node, \"if\"),\n UpdateEmpty(Evaluate(node.consequent), undefined))\n : (hooks.beforeBranch?.(node, \"else\"), node.alternate)\n ? UpdateEmpty(Evaluate(node.alternate), undefined)\n : NormalCompletion(undefined);\n case \"ReturnStatement\": {\n // https://tc39.es/ecma262/#sec-return-statement\n let v: unknown;\n if (node.argument) {\n const exprRef = Evaluate(node.argument);\n v = GetValue(exprRef);\n }\n return new CompletionRecord(\"return\", v);\n }\n case \"ThrowStatement\":\n // https://tc39.es/ecma262/#sec-throw-statement\n throw GetValue(Evaluate(node.argument));\n case \"UpdateExpression\": {\n // https://tc39.es/ecma262/#sec-update-expressions\n const lhs = 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 EvaluateStatementList(node.consequent);\n case \"SwitchStatement\": {\n // https://tc39.es/ecma262/#sec-switch-statement\n const exprRef = 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 = 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 = Evaluate(node.block);\n } catch (error) {\n if (node.handler) {\n hooks.beforeEvaluate?.(node.handler);\n R = CatchClauseEvaluation(node.handler, error);\n } else {\n throw error;\n }\n } finally {\n if (node.finalizer) {\n const F = 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 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 const bindingId = declarator.id.name;\n const lhs = ResolveBinding(bindingId);\n // Todo: IsAnonymousFunctionDefinition(Initializer)\n const rhs = Evaluate(declarator.init);\n const value = GetValue(rhs);\n result =\n node.kind === \"var\"\n ? PutValue(lhs, value)\n : InitializeReferencedBinding(lhs, value);\n } else {\n const rhs = Evaluate(declarator.init);\n const rval = GetValue(rhs);\n result = 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(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 ): CompletionRecord {\n if (!node.param) {\n return 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 BindingInitialization(node.param, thrownValue, catchEnv);\n const B = 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 ): CompletionRecord {\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 = CaseClauseIsSelected(C, input);\n }\n if (found) {\n const R = 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 = CaseClauseIsSelected(C, input);\n }\n if (foundInB) {\n const R = 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 = 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 = 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(C: SwitchCase, input: unknown): boolean {\n const clauseSelector = GetValue(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): CompletionRecord {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const exprValue = GetValue(Evaluate(node.test));\n if (!exprValue) {\n return NormalCompletion(V);\n }\n const stmtResult = 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(node: DoWhileStatement): CompletionRecord {\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const stmtResult = 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(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 ): CompletionRecord {\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 = 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 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 ): CompletionRecord {\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 = Evaluate(expr);\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 ): CompletionRecord {\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 const { done, value: nextValue } = iteratorRecord.next();\n if (done) {\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 (!destructuring) {\n const [lhsName] = collectBoundNames(lhs);\n lhsRef = ResolveBinding(lhsName);\n }\n } else if (!destructuring) {\n lhsRef = Evaluate(lhs).Value as ReferenceRecord;\n }\n destructuring\n ? lhsKind === \"assignment\"\n ? DestructuringAssignmentEvaluation(lhs, nextValue)\n : lhsKind === \"varBinding\"\n ? BindingInitialization(lhs, nextValue, undefined)\n : BindingInitialization(lhs, nextValue, iterationEnv)\n : lhsKind === \"lexicalBinding\"\n ? InitializeReferencedBinding(lhsRef!, nextValue)\n : PutValue(lhsRef!, nextValue);\n\n const result = 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): CompletionRecord {\n if (node.init?.type === \"VariableDeclaration\") {\n // `for (var … ; … ; … ) …`\n if (node.init.kind === \"var\") {\n Evaluate(node.init);\n return 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 Evaluate(node.init);\n const perIterationLets = isConst ? [] : Array.from(boundNames);\n const bodyResult = 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 = Evaluate(node.init);\n GetValue(exprRef);\n }\n return 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 ): CompletionRecord {\n CreatePerIterationEnvironment(perIterationBindings);\n let V: unknown;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (test) {\n const testRef = Evaluate(test);\n const testValue = GetValue(testRef);\n if (!testValue) {\n return NormalCompletion(V);\n }\n }\n const result = Evaluate(stmt) as CompletionRecord;\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 = Evaluate(increment);\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 ): CompletionRecord {\n if (pattern.type === \"ObjectPattern\") {\n RequireObjectCoercible(value);\n if (pattern.properties.length > 0) {\n 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 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 ): 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 : (EvaluateComputedPropertyName(prop.key as Expression) 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 // Todo(steve): check IsAnonymousFunctionDefinition(Initializer)\n const defaultValue = Evaluate(prop.value.right);\n v = GetValue(defaultValue);\n }\n PutValue(lref, v);\n excludedNames.add(propName);\n } else {\n KeyedDestructuringAssignmentEvaluation(prop.value, value, propName);\n excludedNames.add(propName);\n }\n } else {\n RestDestructuringAssignmentEvaluation(prop, value, excludedNames);\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 ): CompletionRecord {\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 = Evaluate(assignmentTarget).Value as ReferenceRecord;\n }\n const v = GetV(value, propertyName);\n let rhsValue;\n if (node.type === \"AssignmentPattern\" && v === undefined) {\n // Todo(steve): check IsAnonymousFunctionDefinition(Initializer)\n const defaultValue = Evaluate(node.right);\n rhsValue = GetValue(defaultValue);\n } else {\n rhsValue = v;\n }\n if (isObjectOrArray) {\n return DestructuringAssignmentEvaluation(assignmentTarget, rhsValue);\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 ): CompletionRecord {\n const lref = Evaluate(restProperty.argument).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 ): CompletionRecord {\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 = 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 // Todo(steve): check IsAnonymousFunctionDefinition(Initializer)\n const defaultValue = Evaluate(element.right);\n v = GetValue(defaultValue);\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 = 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 ): ReferenceRecord {\n const propertyNameReference = 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 ): CompletionRecord {\n let thisValue;\n if (ref instanceof ReferenceRecord) {\n if (IsPropertyReference(ref)) {\n thisValue = ref.Base;\n }\n }\n const argList = 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 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 ): CompletionRecord {\n const ref = Evaluate(constructExpr);\n const constructor = GetValue(ref) as new (...args: unknown[]) => unknown;\n const argList = 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 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 ): 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(Evaluate(arg.argument)) as unknown[];\n array.push(...spreadValues);\n } else {\n array.push(GetValue(Evaluate(arg)));\n }\n }\n } else {\n array.push(GetTemplateObject(args));\n for (const expr of args.expressions) {\n array.push(GetValue(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 ): unknown {\n hooks.beforeCall?.(closure[SourceNode]);\n PrepareForOrdinaryCall(closure);\n const result = OrdinaryCallEvaluateBody(closure, args);\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 ): CompletionRecord {\n return 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 ): CompletionRecord {\n FunctionDeclarationInstantiation(F, args);\n if (Array.isArray(body)) {\n return EvaluateStatementList(body);\n }\n return new CompletionRecord(\"return\", GetValue(Evaluate(body)));\n }\n\n // https://tc39.es/ecma262/#sec-block-runtime-semantics-evaluation\n function EvaluateStatementList(statements: Statement[]): CompletionRecord {\n let result = NormalCompletion(Empty);\n for (const stmt of statements) {\n const s = 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-functiondeclarationinstantiation\n function FunctionDeclarationInstantiation(\n func: FunctionObject,\n args: Iterable<unknown>\n ): 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 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 return OrdinaryFunctionCreate(func, scope, true);\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiateordinaryfunctionexpression\n function InstantiateOrdinaryFunctionExpression(\n functionExpression: FunctionExpression\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 funcEnv.InitializeBinding(name, closure);\n return closure;\n } else {\n const closure = OrdinaryFunctionCreate(functionExpression, scope, true);\n return closure;\n }\n }\n\n // https://tc39.es/ecma262/#sec-runtime-semantics-instantiatearrowfunctionexpression\n function InstantiateArrowFunctionExpression(\n arrowFunction: ArrowFunctionExpression\n ): FunctionObject {\n const scope = getRunningContext().LexicalEnvironment!;\n const closure = OrdinaryFunctionCreate(arrowFunction, scope, false);\n return closure;\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 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 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 ): CompletionRecord | undefined {\n switch (node.type) {\n case \"Identifier\":\n return InitializeBoundName(node.name, value, environment);\n case \"ObjectPattern\":\n RequireObjectCoercible(value);\n return 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 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 ): CompletionRecord {\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 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 = EvaluateComputedPropertyName(prop.key as Expression);\n 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(node: Expression): PropertyKey {\n const propName = GetValue(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 ): 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 = BindingInitialization(node.argument, A, environment);\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 = Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n result = BindingInitialization(bindingElement, v, environment);\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 // IsAnonymousFunctionDefinition(Initializer)\n const defaultValue = Evaluate(node.right);\n v = GetValue(defaultValue);\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 ): 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(Initializer)\n const defaultValue = Evaluate(node.right);\n v = GetValue(defaultValue);\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 = Evaluate(node.right);\n v = GetValue(defaultValue);\n }\n return 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(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 return fo;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/cook",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
4
4
|
"description": "Cook expressions and storyboard functions",
|
|
5
5
|
"homepage": "https://github.com/easyops-cn/next-core/tree/master/packages/cook",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -48,13 +48,13 @@
|
|
|
48
48
|
},
|
|
49
49
|
"sideEffects": false,
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@babel/parser": "^7.21.
|
|
51
|
+
"@babel/parser": "^7.21.4"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@next-core/build-next-libs": "^1.0.
|
|
55
|
-
"@next-core/supply": "^2.0.
|
|
56
|
-
"@next-core/test-next": "^1.0.
|
|
54
|
+
"@next-core/build-next-libs": "^1.0.3",
|
|
55
|
+
"@next-core/supply": "^2.0.4",
|
|
56
|
+
"@next-core/test-next": "^1.0.4",
|
|
57
57
|
"lodash": "^4.17.21"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "21be51ee07f9a5a80364e5e0eb84beebc52c410b"
|
|
60
60
|
}
|