@next-core/cook 2.4.1 → 2.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AnalysisContext.js.map +1 -1
- package/dist/cjs/cook.js +14 -2
- package/dist/cjs/cook.js.map +1 -1
- package/dist/cjs/precook.js +16 -3
- package/dist/cjs/precook.js.map +1 -1
- package/dist/esm/AnalysisContext.js.map +1 -1
- package/dist/esm/cook.js +12 -2
- package/dist/esm/cook.js.map +1 -1
- package/dist/esm/precook.js +16 -3
- package/dist/esm/precook.js.map +1 -1
- package/dist/types/AnalysisContext.d.ts +1 -0
- package/dist/types/cook.d.ts +3 -0
- package/dist/types/precook.d.ts +2 -1
- package/package.json +2 -2
package/dist/cjs/precook.js
CHANGED
|
@@ -18,6 +18,7 @@ function precook(rootAst, {
|
|
|
18
18
|
expressionOnly,
|
|
19
19
|
visitors,
|
|
20
20
|
withParent,
|
|
21
|
+
externalSourceForDebug,
|
|
21
22
|
hooks = {}
|
|
22
23
|
} = {}) {
|
|
23
24
|
const attemptToVisitGlobals = new Set();
|
|
@@ -72,7 +73,7 @@ function precook(rootAst, {
|
|
|
72
73
|
case "ArrowFunctionExpression":
|
|
73
74
|
{
|
|
74
75
|
const env = getRunningContext().LexicalEnvironment;
|
|
75
|
-
const closure = OrdinaryFunctionCreate(node, env);
|
|
76
|
+
const closure = OrdinaryFunctionCreate(node, env, true);
|
|
76
77
|
CallFunction(closure, parent);
|
|
77
78
|
return;
|
|
78
79
|
}
|
|
@@ -242,6 +243,13 @@ function precook(rootAst, {
|
|
|
242
243
|
runningContext.LexicalEnvironment = oldEnv;
|
|
243
244
|
return;
|
|
244
245
|
}
|
|
246
|
+
case "ThisExpression":
|
|
247
|
+
{
|
|
248
|
+
if (!externalSourceForDebug) {
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
245
253
|
case "TryStatement":
|
|
246
254
|
EvaluateChildren(node, ["block", "handler", "finalizer"], parent);
|
|
247
255
|
return;
|
|
@@ -311,8 +319,12 @@ function precook(rootAst, {
|
|
|
311
319
|
topLevel: true
|
|
312
320
|
});
|
|
313
321
|
const varNames = (0, _traverse.collectBoundNames)(varDeclarations);
|
|
322
|
+
const argumentsObjectNeeded = !!externalSourceForDebug && func.ThisMode !== "LEXICAL";
|
|
314
323
|
const env = calleeContext.LexicalEnvironment;
|
|
315
324
|
BoundNamesInstantiation(formals, env);
|
|
325
|
+
if (argumentsObjectNeeded) {
|
|
326
|
+
env.CreateBinding("arguments");
|
|
327
|
+
}
|
|
316
328
|
Evaluate(formals, parent === null || parent === void 0 ? void 0 : parent.concat({
|
|
317
329
|
node: func.Function,
|
|
318
330
|
key: "params"
|
|
@@ -353,12 +365,13 @@ function precook(rootAst, {
|
|
|
353
365
|
funcEnv.CreateBinding(name);
|
|
354
366
|
return OrdinaryFunctionCreate(functionExpression, funcEnv);
|
|
355
367
|
}
|
|
356
|
-
function OrdinaryFunctionCreate(func, scope) {
|
|
368
|
+
function OrdinaryFunctionCreate(func, scope, lexicalThis) {
|
|
357
369
|
return {
|
|
358
370
|
Function: func,
|
|
359
371
|
FormalParameters: func.params,
|
|
360
372
|
ECMAScriptCode: func.body.type === "BlockStatement" ? func.body.body : func.body,
|
|
361
|
-
Environment: scope
|
|
373
|
+
Environment: scope,
|
|
374
|
+
ThisMode: lexicalThis ? "LEXICAL" : "STRICT"
|
|
362
375
|
};
|
|
363
376
|
}
|
|
364
377
|
Evaluate(rootAst, withParent ? [] : undefined);
|
package/dist/cjs/precook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"precook.js","names":["_hasOwnProperty","require","_AnalysisContext","_traverse","precook","rootAst","expressionOnly","visitors","withParent","hooks","attemptToVisitGlobals","Set","analysisContextStack","rootEnv","AnalysisEnvironment","rootContext","AnalysisContext","VariableEnvironment","LexicalEnvironment","push","getRunningContext","length","visit","node","hasOwnProperty","type","EvaluateChildren","keys","parent","key","Evaluate","concat","Array","isArray","forEach","n","index","slice","_hooks$beforeVisit","_hooks$beforeVisitUnk","beforeVisit","call","ResolveBinding","name","_hooks$beforeVisitGlo","beforeVisitGlobal","add","env","closure","OrdinaryFunctionCreate","CallFunction","computed","body","runningContext","oldEnv","blockEnv","BlockDeclarationInstantiation","catchEnv","BoundNamesInstantiation","param","lexicalBinding","left","kind","newEnv","iterationEnv","_node$init","init","loopEnv","fn","collectBoundNames","fo","CreateBinding","InstantiateOrdinaryFunctionExpression","cases","silent","beforeVisitUnknown","console","warn","declarations","GetIdentifierReference","HasBinding","OuterEnv","code","collectScopedDeclarations","var","topLevel","PrepareOrdinaryCall","FunctionDeclarationInstantiation","ECMAScriptCode","Function","pop","F","calleeContext","localEnv","Environment","func","formals","FormalParameters","hasParameterExpressions","containsExpression","varDeclarations","varNames","varEnv","lexEnv","lexDeclarations","functionExpression","scope","id","funcEnv","params","undefined"],"sources":["../../src/precook.ts"],"sourcesContent":["import {\n ArrowFunctionExpression,\n Expression,\n FunctionDeclaration,\n FunctionExpression,\n Identifier,\n Statement,\n SwitchCase,\n VariableDeclaration,\n} from \"@babel/types\";\nimport { hasOwnProperty } from \"./hasOwnProperty.js\";\nimport {\n AnalysisContext,\n AnalysisEnvironment,\n AnalysisFunctionObject,\n} from \"./AnalysisContext.js\";\nimport {\n EstreeNode,\n EstreeVisitors,\n NodeWithBoundNames,\n} from \"./interfaces.js\";\nimport {\n collectBoundNames,\n collectScopedDeclarations,\n containsExpression,\n} from \"./traverse.js\";\n\nexport interface PrecookOptions {\n expressionOnly?: boolean;\n /** @deprecated Use hooks instead. */\n visitors?: EstreeVisitors;\n hooks?: PrecookHooks;\n withParent?: boolean;\n}\n\nexport type EstreeParent = EstreeParentItem[];\n\nexport interface EstreeParentItem {\n node: EstreeNode;\n key: string;\n index?: number;\n}\n\nexport interface PrecookHooks {\n beforeVisit?(node: EstreeNode, parent?: EstreeParent): void;\n beforeVisitGlobal?(node: Identifier, parent?: EstreeParent): void;\n /** Return true if want to silent warnings for unknown nodes. */\n beforeVisitUnknown?(node: EstreeNode, parent?: EstreeParent): boolean | void;\n}\n\n/**\n * Analysis an AST of a storyboard function or an evaluation expression.\n *\n * @param rootAst - The root AST.\n * @param options - Analysis options.\n * @returns A set of global variables the root AST attempts to access.\n */\nexport function precook(\n rootAst: Expression | FunctionDeclaration,\n { expressionOnly, visitors, withParent, hooks = {} }: PrecookOptions = {}\n): Set<string> {\n const attemptToVisitGlobals = new Set<string>();\n const analysisContextStack: AnalysisContext[] = [];\n const rootEnv = new AnalysisEnvironment(null);\n const rootContext = new AnalysisContext();\n rootContext.VariableEnvironment = rootEnv;\n rootContext.LexicalEnvironment = rootEnv;\n analysisContextStack.push(rootContext);\n\n function getRunningContext(): AnalysisContext {\n return analysisContextStack[analysisContextStack.length - 1];\n }\n\n function visit(node: EstreeNode): void {\n if (visitors && hasOwnProperty(visitors, node.type)) {\n visitors[node.type](node);\n }\n }\n\n function EvaluateChildren<T extends EstreeNode>(\n node: T,\n keys: (keyof T)[],\n parent?: EstreeParent\n ): void {\n for (const key of keys) {\n Evaluate(\n node[key] as unknown as EstreeNode | EstreeNode[],\n parent?.concat({ node, key } as EstreeParentItem)\n );\n }\n }\n\n function Evaluate(\n node: EstreeNode | EstreeNode[],\n parent?: EstreeParent\n ): void {\n if (Array.isArray(node)) {\n node.forEach((n, index) => {\n Evaluate(\n n,\n parent\n ? parent.slice(0, -1).concat({\n ...parent[parent.length - 1],\n index,\n })\n : parent\n );\n });\n } else if (node) {\n // `node` maybe `null` in some cases.\n hooks.beforeVisit?.(node, parent);\n visit(node);\n // Expressions:\n switch (node.type) {\n case \"Identifier\":\n if (!ResolveBinding(node.name)) {\n hooks.beforeVisitGlobal?.(node, parent);\n attemptToVisitGlobals.add(node.name);\n }\n return;\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n EvaluateChildren(node, [\"elements\"], parent);\n return;\n case \"ArrowFunctionExpression\": {\n const env = getRunningContext().LexicalEnvironment;\n const closure = OrdinaryFunctionCreate(node, env);\n CallFunction(closure, parent);\n return;\n }\n case \"AssignmentPattern\":\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n EvaluateChildren(node, [\"left\", \"right\"], parent);\n return;\n case \"CallExpression\":\n case \"NewExpression\":\n EvaluateChildren(node, [\"callee\", \"arguments\"], parent);\n return;\n case \"ChainExpression\":\n EvaluateChildren(node, [\"expression\"], parent);\n return;\n case \"ConditionalExpression\":\n EvaluateChildren(node, [\"test\", \"consequent\", \"alternate\"], parent);\n return;\n case \"MemberExpression\":\n EvaluateChildren(node, [\"object\"], parent);\n if (node.computed) {\n EvaluateChildren(node, [\"property\"], parent);\n }\n return;\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n EvaluateChildren(node, [\"properties\"], parent);\n return;\n case \"Property\":\n if (node.computed) {\n EvaluateChildren(node, [\"key\"], parent);\n }\n EvaluateChildren(node, [\"value\"], parent);\n return;\n case \"RestElement\":\n case \"SpreadElement\":\n case \"UnaryExpression\":\n EvaluateChildren(node, [\"argument\"], parent);\n return;\n case \"SequenceExpression\":\n case \"TemplateLiteral\":\n EvaluateChildren(node, [\"expressions\"], parent);\n return;\n case \"TaggedTemplateExpression\":\n EvaluateChildren(node, [\"tag\", \"quasi\"], parent);\n return;\n case \"Literal\":\n return;\n }\n if (!expressionOnly) {\n // Statements and assignments:\n switch (node.type) {\n case \"AssignmentExpression\":\n EvaluateChildren(node, [\"right\", \"left\"], parent);\n return;\n case \"BlockStatement\": {\n if (!node.body.length) {\n return;\n }\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n const blockEnv = new AnalysisEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.body, blockEnv);\n runningContext.LexicalEnvironment = blockEnv;\n EvaluateChildren(node, [\"body\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n return;\n }\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"EmptyStatement\":\n return;\n case \"CatchClause\": {\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n const catchEnv = new AnalysisEnvironment(oldEnv);\n BoundNamesInstantiation(node.param, catchEnv);\n runningContext.LexicalEnvironment = catchEnv;\n EvaluateChildren(node, [\"param\", \"body\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n return;\n }\n case \"DoWhileStatement\":\n EvaluateChildren(node, [\"body\", \"test\"], parent);\n return;\n case \"ExpressionStatement\":\n case \"TSAsExpression\":\n EvaluateChildren(node, [\"expression\"], parent);\n return;\n case \"ForInStatement\":\n case \"ForOfStatement\": {\n // ForIn/OfHeadEvaluation\n const lexicalBinding =\n node.left.type === \"VariableDeclaration\" &&\n node.left.kind !== \"var\";\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n if (lexicalBinding) {\n const newEnv = new AnalysisEnvironment(oldEnv);\n BoundNamesInstantiation(node.left, newEnv);\n runningContext.LexicalEnvironment = newEnv;\n }\n EvaluateChildren(node, [\"right\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n\n // ForIn/OfBodyEvaluation\n if (lexicalBinding) {\n const iterationEnv = new AnalysisEnvironment(oldEnv);\n BoundNamesInstantiation(node.left, iterationEnv);\n runningContext.LexicalEnvironment = iterationEnv;\n }\n EvaluateChildren(node, [\"left\", \"body\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n return;\n }\n case \"ForStatement\": {\n const lexicalBinding =\n node.init?.type === \"VariableDeclaration\" &&\n node.init.kind !== \"var\";\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n if (lexicalBinding) {\n const loopEnv = new AnalysisEnvironment(oldEnv);\n BoundNamesInstantiation(\n node.init as VariableDeclaration,\n loopEnv\n );\n runningContext.LexicalEnvironment = loopEnv;\n }\n EvaluateChildren(node, [\"init\", \"test\", \"body\", \"update\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n return;\n }\n case \"FunctionDeclaration\": {\n const [fn] = collectBoundNames(node);\n const env = getRunningContext().LexicalEnvironment!;\n const fo = OrdinaryFunctionCreate(node, env);\n env.CreateBinding(fn);\n CallFunction(fo, parent);\n return;\n }\n case \"FunctionExpression\": {\n const closure = InstantiateOrdinaryFunctionExpression(node);\n CallFunction(closure, parent);\n return;\n }\n case \"IfStatement\":\n EvaluateChildren(node, [\"test\", \"consequent\", \"alternate\"], parent);\n return;\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n case \"UpdateExpression\":\n EvaluateChildren(node, [\"argument\"], parent);\n return;\n case \"SwitchCase\":\n EvaluateChildren(node, [\"test\", \"consequent\"], parent);\n return;\n case \"SwitchStatement\": {\n EvaluateChildren(node, [\"discriminant\"], parent);\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n const blockEnv = new AnalysisEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.cases, blockEnv);\n runningContext.LexicalEnvironment = blockEnv;\n EvaluateChildren(node, [\"cases\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n return;\n }\n case \"TryStatement\":\n EvaluateChildren(node, [\"block\", \"handler\", \"finalizer\"], parent);\n return;\n case \"VariableDeclaration\":\n EvaluateChildren(node, [\"declarations\"], parent);\n return;\n case \"VariableDeclarator\":\n EvaluateChildren(node, [\"id\", \"init\"], parent);\n return;\n case \"WhileStatement\":\n EvaluateChildren(node, [\"test\", \"body\"], parent);\n return;\n }\n }\n const silent = hooks.beforeVisitUnknown?.(node, parent);\n if (!silent) {\n // eslint-disable-next-line no-console\n console.warn(`Unsupported node type \\`${node.type}\\``);\n }\n }\n }\n\n function BoundNamesInstantiation(\n declarations: NodeWithBoundNames | NodeWithBoundNames[] | null | undefined,\n env: AnalysisEnvironment\n ): void {\n for (const name of collectBoundNames(declarations)) {\n env.CreateBinding(name);\n }\n }\n\n function ResolveBinding(name: string): boolean {\n const env = getRunningContext().LexicalEnvironment;\n return GetIdentifierReference(env, name);\n }\n\n function GetIdentifierReference(\n env: AnalysisEnvironment | null | undefined,\n name: string\n ): boolean {\n return (\n !!env &&\n (env.HasBinding(name) || GetIdentifierReference(env.OuterEnv, name))\n );\n }\n\n function BlockDeclarationInstantiation(\n code: Statement[] | SwitchCase[],\n env: AnalysisEnvironment\n ): void {\n const declarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: false,\n });\n BoundNamesInstantiation(declarations, env);\n }\n\n function CallFunction(\n closure: AnalysisFunctionObject,\n parent?: EstreeParent\n ): void {\n PrepareOrdinaryCall(closure);\n FunctionDeclarationInstantiation(closure, parent);\n Evaluate(\n closure.ECMAScriptCode,\n parent\n ?.concat({\n node: closure.Function,\n key: \"body\",\n })\n .concat(\n closure.Function.body.type === \"BlockStatement\"\n ? {\n node: closure.Function.body,\n key: \"body\",\n }\n : []\n )\n );\n analysisContextStack.pop();\n }\n\n function PrepareOrdinaryCall(F: AnalysisFunctionObject): void {\n const calleeContext = new AnalysisContext();\n const localEnv = new AnalysisEnvironment(F.Environment);\n calleeContext.VariableEnvironment = localEnv;\n calleeContext.LexicalEnvironment = localEnv;\n analysisContextStack.push(calleeContext);\n }\n\n function FunctionDeclarationInstantiation(\n func: AnalysisFunctionObject,\n parent?: EstreeParent\n ): void {\n const calleeContext = getRunningContext();\n const code = func.ECMAScriptCode;\n const formals = func.FormalParameters;\n const hasParameterExpressions = containsExpression(formals);\n const varDeclarations = collectScopedDeclarations(code, {\n var: true,\n topLevel: true,\n });\n const varNames = collectBoundNames(varDeclarations);\n\n const env = calleeContext.LexicalEnvironment!;\n BoundNamesInstantiation(formals, env);\n\n Evaluate(formals, parent?.concat({ node: func.Function, key: \"params\" }));\n\n let varEnv: AnalysisEnvironment;\n if (!hasParameterExpressions) {\n // NOTE: Only a single Environment Record is needed for the parameters\n // and top-level vars.\n for (const n of varNames) {\n env.CreateBinding(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 AnalysisEnvironment(env);\n calleeContext.VariableEnvironment = varEnv;\n for (const n of varNames) {\n varEnv.CreateBinding(n);\n }\n }\n const lexEnv = varEnv;\n calleeContext.LexicalEnvironment = lexEnv;\n\n const lexDeclarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: true,\n });\n BoundNamesInstantiation(lexDeclarations, lexEnv);\n }\n\n function InstantiateOrdinaryFunctionExpression(\n functionExpression: FunctionExpression\n ): AnalysisFunctionObject {\n const scope = getRunningContext().LexicalEnvironment;\n if (!functionExpression.id) {\n return OrdinaryFunctionCreate(functionExpression, scope);\n }\n const name = functionExpression.id.name;\n const funcEnv = new AnalysisEnvironment(scope);\n funcEnv.CreateBinding(name);\n return OrdinaryFunctionCreate(functionExpression, funcEnv);\n }\n\n function OrdinaryFunctionCreate(\n func: FunctionDeclaration | FunctionExpression | ArrowFunctionExpression,\n scope?: AnalysisEnvironment\n ): AnalysisFunctionObject {\n return {\n Function: func,\n FormalParameters: func.params,\n ECMAScriptCode:\n func.body.type === \"BlockStatement\" ? func.body.body : func.body,\n Environment: scope,\n };\n }\n\n Evaluate(rootAst, withParent ? [] : undefined);\n\n return attemptToVisitGlobals;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"precook.js","names":["_hasOwnProperty","require","_AnalysisContext","_traverse","precook","rootAst","expressionOnly","visitors","withParent","externalSourceForDebug","hooks","attemptToVisitGlobals","Set","analysisContextStack","rootEnv","AnalysisEnvironment","rootContext","AnalysisContext","VariableEnvironment","LexicalEnvironment","push","getRunningContext","length","visit","node","hasOwnProperty","type","EvaluateChildren","keys","parent","key","Evaluate","concat","Array","isArray","forEach","n","index","slice","_hooks$beforeVisit","_hooks$beforeVisitUnk","beforeVisit","call","ResolveBinding","name","_hooks$beforeVisitGlo","beforeVisitGlobal","add","env","closure","OrdinaryFunctionCreate","CallFunction","computed","body","runningContext","oldEnv","blockEnv","BlockDeclarationInstantiation","catchEnv","BoundNamesInstantiation","param","lexicalBinding","left","kind","newEnv","iterationEnv","_node$init","init","loopEnv","fn","collectBoundNames","fo","CreateBinding","InstantiateOrdinaryFunctionExpression","cases","silent","beforeVisitUnknown","console","warn","declarations","GetIdentifierReference","HasBinding","OuterEnv","code","collectScopedDeclarations","var","topLevel","PrepareOrdinaryCall","FunctionDeclarationInstantiation","ECMAScriptCode","Function","pop","F","calleeContext","localEnv","Environment","func","formals","FormalParameters","hasParameterExpressions","containsExpression","varDeclarations","varNames","argumentsObjectNeeded","ThisMode","varEnv","lexEnv","lexDeclarations","functionExpression","scope","id","funcEnv","lexicalThis","params","undefined"],"sources":["../../src/precook.ts"],"sourcesContent":["import {\n ArrowFunctionExpression,\n Expression,\n FunctionDeclaration,\n FunctionExpression,\n Identifier,\n Statement,\n SwitchCase,\n VariableDeclaration,\n} from \"@babel/types\";\nimport { hasOwnProperty } from \"./hasOwnProperty.js\";\nimport {\n AnalysisContext,\n AnalysisEnvironment,\n AnalysisFunctionObject,\n} from \"./AnalysisContext.js\";\nimport {\n EstreeNode,\n EstreeVisitors,\n NodeWithBoundNames,\n} from \"./interfaces.js\";\nimport {\n collectBoundNames,\n collectScopedDeclarations,\n containsExpression,\n} from \"./traverse.js\";\n\nexport interface PrecookOptions {\n expressionOnly?: boolean;\n /** @deprecated Use hooks instead. */\n visitors?: EstreeVisitors;\n hooks?: PrecookHooks;\n withParent?: boolean;\n externalSourceForDebug?: boolean;\n}\n\nexport type EstreeParent = EstreeParentItem[];\n\nexport interface EstreeParentItem {\n node: EstreeNode;\n key: string;\n index?: number;\n}\n\nexport interface PrecookHooks {\n beforeVisit?(node: EstreeNode, parent?: EstreeParent): void;\n beforeVisitGlobal?(node: Identifier, parent?: EstreeParent): void;\n /** Return true if want to silent warnings for unknown nodes. */\n beforeVisitUnknown?(node: EstreeNode, parent?: EstreeParent): boolean | void;\n}\n\n/**\n * Analysis an AST of a storyboard function or an evaluation expression.\n *\n * @param rootAst - The root AST.\n * @param options - Analysis options.\n * @returns A set of global variables the root AST attempts to access.\n */\nexport function precook(\n rootAst: Expression | FunctionDeclaration,\n {\n expressionOnly,\n visitors,\n withParent,\n externalSourceForDebug,\n hooks = {},\n }: PrecookOptions = {}\n): Set<string> {\n const attemptToVisitGlobals = new Set<string>();\n const analysisContextStack: AnalysisContext[] = [];\n const rootEnv = new AnalysisEnvironment(null);\n const rootContext = new AnalysisContext();\n rootContext.VariableEnvironment = rootEnv;\n rootContext.LexicalEnvironment = rootEnv;\n analysisContextStack.push(rootContext);\n\n function getRunningContext(): AnalysisContext {\n return analysisContextStack[analysisContextStack.length - 1];\n }\n\n function visit(node: EstreeNode): void {\n if (visitors && hasOwnProperty(visitors, node.type)) {\n visitors[node.type](node);\n }\n }\n\n function EvaluateChildren<T extends EstreeNode>(\n node: T,\n keys: (keyof T)[],\n parent?: EstreeParent\n ): void {\n for (const key of keys) {\n Evaluate(\n node[key] as unknown as EstreeNode | EstreeNode[],\n parent?.concat({ node, key } as EstreeParentItem)\n );\n }\n }\n\n function Evaluate(\n node: EstreeNode | EstreeNode[],\n parent?: EstreeParent\n ): void {\n if (Array.isArray(node)) {\n node.forEach((n, index) => {\n Evaluate(\n n,\n parent\n ? parent.slice(0, -1).concat({\n ...parent[parent.length - 1],\n index,\n })\n : parent\n );\n });\n } else if (node) {\n // `node` maybe `null` in some cases.\n hooks.beforeVisit?.(node, parent);\n visit(node);\n // Expressions:\n switch (node.type) {\n case \"Identifier\":\n if (!ResolveBinding(node.name)) {\n hooks.beforeVisitGlobal?.(node, parent);\n attemptToVisitGlobals.add(node.name);\n }\n return;\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n EvaluateChildren(node, [\"elements\"], parent);\n return;\n case \"ArrowFunctionExpression\": {\n const env = getRunningContext().LexicalEnvironment;\n const closure = OrdinaryFunctionCreate(node, env, true);\n CallFunction(closure, parent);\n return;\n }\n case \"AssignmentPattern\":\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n EvaluateChildren(node, [\"left\", \"right\"], parent);\n return;\n case \"CallExpression\":\n case \"NewExpression\":\n EvaluateChildren(node, [\"callee\", \"arguments\"], parent);\n return;\n case \"ChainExpression\":\n EvaluateChildren(node, [\"expression\"], parent);\n return;\n case \"ConditionalExpression\":\n EvaluateChildren(node, [\"test\", \"consequent\", \"alternate\"], parent);\n return;\n case \"MemberExpression\":\n EvaluateChildren(node, [\"object\"], parent);\n if (node.computed) {\n EvaluateChildren(node, [\"property\"], parent);\n }\n return;\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n EvaluateChildren(node, [\"properties\"], parent);\n return;\n case \"Property\":\n if (node.computed) {\n EvaluateChildren(node, [\"key\"], parent);\n }\n EvaluateChildren(node, [\"value\"], parent);\n return;\n case \"RestElement\":\n case \"SpreadElement\":\n case \"UnaryExpression\":\n EvaluateChildren(node, [\"argument\"], parent);\n return;\n case \"SequenceExpression\":\n case \"TemplateLiteral\":\n EvaluateChildren(node, [\"expressions\"], parent);\n return;\n case \"TaggedTemplateExpression\":\n EvaluateChildren(node, [\"tag\", \"quasi\"], parent);\n return;\n case \"Literal\":\n return;\n }\n if (!expressionOnly) {\n // Statements and assignments:\n switch (node.type) {\n case \"AssignmentExpression\":\n EvaluateChildren(node, [\"right\", \"left\"], parent);\n return;\n case \"BlockStatement\": {\n if (!node.body.length) {\n return;\n }\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n const blockEnv = new AnalysisEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.body, blockEnv);\n runningContext.LexicalEnvironment = blockEnv;\n EvaluateChildren(node, [\"body\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n return;\n }\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"EmptyStatement\":\n return;\n case \"CatchClause\": {\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n const catchEnv = new AnalysisEnvironment(oldEnv);\n BoundNamesInstantiation(node.param, catchEnv);\n runningContext.LexicalEnvironment = catchEnv;\n EvaluateChildren(node, [\"param\", \"body\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n return;\n }\n case \"DoWhileStatement\":\n EvaluateChildren(node, [\"body\", \"test\"], parent);\n return;\n case \"ExpressionStatement\":\n case \"TSAsExpression\":\n EvaluateChildren(node, [\"expression\"], parent);\n return;\n case \"ForInStatement\":\n case \"ForOfStatement\": {\n // ForIn/OfHeadEvaluation\n const lexicalBinding =\n node.left.type === \"VariableDeclaration\" &&\n node.left.kind !== \"var\";\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n if (lexicalBinding) {\n const newEnv = new AnalysisEnvironment(oldEnv);\n BoundNamesInstantiation(node.left, newEnv);\n runningContext.LexicalEnvironment = newEnv;\n }\n EvaluateChildren(node, [\"right\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n\n // ForIn/OfBodyEvaluation\n if (lexicalBinding) {\n const iterationEnv = new AnalysisEnvironment(oldEnv);\n BoundNamesInstantiation(node.left, iterationEnv);\n runningContext.LexicalEnvironment = iterationEnv;\n }\n EvaluateChildren(node, [\"left\", \"body\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n return;\n }\n case \"ForStatement\": {\n const lexicalBinding =\n node.init?.type === \"VariableDeclaration\" &&\n node.init.kind !== \"var\";\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n if (lexicalBinding) {\n const loopEnv = new AnalysisEnvironment(oldEnv);\n BoundNamesInstantiation(\n node.init as VariableDeclaration,\n loopEnv\n );\n runningContext.LexicalEnvironment = loopEnv;\n }\n EvaluateChildren(node, [\"init\", \"test\", \"body\", \"update\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n return;\n }\n case \"FunctionDeclaration\": {\n const [fn] = collectBoundNames(node);\n const env = getRunningContext().LexicalEnvironment!;\n const fo = OrdinaryFunctionCreate(node, env);\n env.CreateBinding(fn);\n CallFunction(fo, parent);\n return;\n }\n case \"FunctionExpression\": {\n const closure = InstantiateOrdinaryFunctionExpression(node);\n CallFunction(closure, parent);\n return;\n }\n case \"IfStatement\":\n EvaluateChildren(node, [\"test\", \"consequent\", \"alternate\"], parent);\n return;\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n case \"UpdateExpression\":\n EvaluateChildren(node, [\"argument\"], parent);\n return;\n case \"SwitchCase\":\n EvaluateChildren(node, [\"test\", \"consequent\"], parent);\n return;\n case \"SwitchStatement\": {\n EvaluateChildren(node, [\"discriminant\"], parent);\n const runningContext = getRunningContext();\n const oldEnv = runningContext.LexicalEnvironment;\n const blockEnv = new AnalysisEnvironment(oldEnv);\n BlockDeclarationInstantiation(node.cases, blockEnv);\n runningContext.LexicalEnvironment = blockEnv;\n EvaluateChildren(node, [\"cases\"], parent);\n runningContext.LexicalEnvironment = oldEnv;\n return;\n }\n case \"ThisExpression\": {\n if (!externalSourceForDebug) {\n break;\n }\n return;\n }\n case \"TryStatement\":\n EvaluateChildren(node, [\"block\", \"handler\", \"finalizer\"], parent);\n return;\n case \"VariableDeclaration\":\n EvaluateChildren(node, [\"declarations\"], parent);\n return;\n case \"VariableDeclarator\":\n EvaluateChildren(node, [\"id\", \"init\"], parent);\n return;\n case \"WhileStatement\":\n EvaluateChildren(node, [\"test\", \"body\"], parent);\n return;\n }\n }\n const silent = hooks.beforeVisitUnknown?.(node, parent);\n if (!silent) {\n // eslint-disable-next-line no-console\n console.warn(`Unsupported node type \\`${node.type}\\``);\n }\n }\n }\n\n function BoundNamesInstantiation(\n declarations: NodeWithBoundNames | NodeWithBoundNames[] | null | undefined,\n env: AnalysisEnvironment\n ): void {\n for (const name of collectBoundNames(declarations)) {\n env.CreateBinding(name);\n }\n }\n\n function ResolveBinding(name: string): boolean {\n const env = getRunningContext().LexicalEnvironment;\n return GetIdentifierReference(env, name);\n }\n\n function GetIdentifierReference(\n env: AnalysisEnvironment | null | undefined,\n name: string\n ): boolean {\n return (\n !!env &&\n (env.HasBinding(name) || GetIdentifierReference(env.OuterEnv, name))\n );\n }\n\n function BlockDeclarationInstantiation(\n code: Statement[] | SwitchCase[],\n env: AnalysisEnvironment\n ): void {\n const declarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: false,\n });\n BoundNamesInstantiation(declarations, env);\n }\n\n function CallFunction(\n closure: AnalysisFunctionObject,\n parent?: EstreeParent\n ): void {\n PrepareOrdinaryCall(closure);\n FunctionDeclarationInstantiation(closure, parent);\n Evaluate(\n closure.ECMAScriptCode,\n parent\n ?.concat({\n node: closure.Function,\n key: \"body\",\n })\n .concat(\n closure.Function.body.type === \"BlockStatement\"\n ? {\n node: closure.Function.body,\n key: \"body\",\n }\n : []\n )\n );\n analysisContextStack.pop();\n }\n\n function PrepareOrdinaryCall(F: AnalysisFunctionObject): void {\n const calleeContext = new AnalysisContext();\n const localEnv = new AnalysisEnvironment(F.Environment);\n calleeContext.VariableEnvironment = localEnv;\n calleeContext.LexicalEnvironment = localEnv;\n analysisContextStack.push(calleeContext);\n }\n\n function FunctionDeclarationInstantiation(\n func: AnalysisFunctionObject,\n parent?: EstreeParent\n ): void {\n const calleeContext = getRunningContext();\n const code = func.ECMAScriptCode;\n const formals = func.FormalParameters;\n const hasParameterExpressions = containsExpression(formals);\n const varDeclarations = collectScopedDeclarations(code, {\n var: true,\n topLevel: true,\n });\n const varNames = collectBoundNames(varDeclarations);\n\n const argumentsObjectNeeded =\n !!externalSourceForDebug && func.ThisMode !== \"LEXICAL\";\n\n const env = calleeContext.LexicalEnvironment!;\n BoundNamesInstantiation(formals, env);\n\n if (argumentsObjectNeeded) {\n env.CreateBinding(\"arguments\");\n }\n\n Evaluate(formals, parent?.concat({ node: func.Function, key: \"params\" }));\n\n let varEnv: AnalysisEnvironment;\n if (!hasParameterExpressions) {\n // NOTE: Only a single Environment Record is needed for the parameters\n // and top-level vars.\n for (const n of varNames) {\n env.CreateBinding(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 AnalysisEnvironment(env);\n calleeContext.VariableEnvironment = varEnv;\n for (const n of varNames) {\n varEnv.CreateBinding(n);\n }\n }\n const lexEnv = varEnv;\n calleeContext.LexicalEnvironment = lexEnv;\n\n const lexDeclarations = collectScopedDeclarations(code, {\n var: false,\n topLevel: true,\n });\n BoundNamesInstantiation(lexDeclarations, lexEnv);\n }\n\n function InstantiateOrdinaryFunctionExpression(\n functionExpression: FunctionExpression\n ): AnalysisFunctionObject {\n const scope = getRunningContext().LexicalEnvironment;\n if (!functionExpression.id) {\n return OrdinaryFunctionCreate(functionExpression, scope);\n }\n const name = functionExpression.id.name;\n const funcEnv = new AnalysisEnvironment(scope);\n funcEnv.CreateBinding(name);\n return OrdinaryFunctionCreate(functionExpression, funcEnv);\n }\n\n function OrdinaryFunctionCreate(\n func: FunctionDeclaration | FunctionExpression | ArrowFunctionExpression,\n scope?: AnalysisEnvironment,\n lexicalThis?: boolean\n ): AnalysisFunctionObject {\n return {\n Function: func,\n FormalParameters: func.params,\n ECMAScriptCode:\n func.body.type === \"BlockStatement\" ? func.body.body : func.body,\n Environment: scope,\n ThisMode: lexicalThis ? \"LEXICAL\" : \"STRICT\",\n };\n }\n\n Evaluate(rootAst, withParent ? [] : undefined);\n\n return attemptToVisitGlobals;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalysisContext.js","names":["AnalysisContext","constructor","_defineProperty","AnalysisEnvironment","outer","Set","OuterEnv","HasBinding","name","bindingSet","has","CreateBinding","add"],"sources":["../../src/AnalysisContext.ts"],"sourcesContent":["import {\n ArrowFunctionExpression,\n Expression,\n FunctionDeclaration,\n FunctionExpression,\n Statement,\n} from \"@babel/types\";\n\n// https://tc39.es/ecma262/#sec-execution-contexts\nexport class AnalysisContext {\n VariableEnvironment?: AnalysisEnvironment;\n LexicalEnvironment?: AnalysisEnvironment;\n}\n\n// https://tc39.es/ecma262/#sec-environment-records\nexport class AnalysisEnvironment {\n readonly OuterEnv: AnalysisEnvironment | null | undefined;\n private readonly bindingSet = new Set<string>();\n\n constructor(outer: AnalysisEnvironment | null | undefined) {\n this.OuterEnv = outer;\n }\n\n HasBinding(name: string): boolean {\n return this.bindingSet.has(name);\n }\n\n CreateBinding(name: string): void {\n this.bindingSet.add(name);\n }\n}\n\nexport interface AnalysisFunctionObject {\n Function: FunctionDeclaration | FunctionExpression | ArrowFunctionExpression;\n FormalParameters: FunctionDeclaration[\"params\"];\n ECMAScriptCode: Statement[] | Expression;\n Environment?: AnalysisEnvironment;\n}\n"],"mappings":";AAQA;AACA,OAAO,MAAMA,eAAe,CAAC;EAAAC,YAAA;IAAAC,eAAA;IAAAA,eAAA;EAAA;AAG7B;;AAEA;AACA,OAAO,MAAMC,mBAAmB,CAAC;EAI/BF,WAAWA,CAACG,KAA6C,EAAE;IAAAF,eAAA;IAAAA,eAAA,qBAF7B,IAAIG,GAAG,CAAS,CAAC;IAG7C,IAAI,CAACC,QAAQ,GAAGF,KAAK;EACvB;EAEAG,UAAUA,CAACC,IAAY,EAAW;IAChC,OAAO,IAAI,CAACC,UAAU,CAACC,GAAG,CAACF,IAAI,CAAC;EAClC;EAEAG,aAAaA,CAACH,IAAY,EAAQ;IAChC,IAAI,CAACC,UAAU,CAACG,GAAG,CAACJ,IAAI,CAAC;EAC3B;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AnalysisContext.js","names":["AnalysisContext","constructor","_defineProperty","AnalysisEnvironment","outer","Set","OuterEnv","HasBinding","name","bindingSet","has","CreateBinding","add"],"sources":["../../src/AnalysisContext.ts"],"sourcesContent":["import {\n ArrowFunctionExpression,\n Expression,\n FunctionDeclaration,\n FunctionExpression,\n Statement,\n} from \"@babel/types\";\n\n// https://tc39.es/ecma262/#sec-execution-contexts\nexport class AnalysisContext {\n VariableEnvironment?: AnalysisEnvironment;\n LexicalEnvironment?: AnalysisEnvironment;\n}\n\n// https://tc39.es/ecma262/#sec-environment-records\nexport class AnalysisEnvironment {\n readonly OuterEnv: AnalysisEnvironment | null | undefined;\n private readonly bindingSet = new Set<string>();\n\n constructor(outer: AnalysisEnvironment | null | undefined) {\n this.OuterEnv = outer;\n }\n\n HasBinding(name: string): boolean {\n return this.bindingSet.has(name);\n }\n\n CreateBinding(name: string): void {\n this.bindingSet.add(name);\n }\n}\n\nexport interface AnalysisFunctionObject {\n Function: FunctionDeclaration | FunctionExpression | ArrowFunctionExpression;\n FormalParameters: FunctionDeclaration[\"params\"];\n ECMAScriptCode: Statement[] | Expression;\n Environment?: AnalysisEnvironment;\n ThisMode: \"LEXICAL\" | \"STRICT\";\n}\n"],"mappings":";AAQA;AACA,OAAO,MAAMA,eAAe,CAAC;EAAAC,YAAA;IAAAC,eAAA;IAAAA,eAAA;EAAA;AAG7B;;AAEA;AACA,OAAO,MAAMC,mBAAmB,CAAC;EAI/BF,WAAWA,CAACG,KAA6C,EAAE;IAAAF,eAAA;IAAAA,eAAA,qBAF7B,IAAIG,GAAG,CAAS,CAAC;IAG7C,IAAI,CAACC,QAAQ,GAAGF,KAAK;EACvB;EAEAG,UAAUA,CAACC,IAAY,EAAW;IAChC,OAAO,IAAI,CAACC,UAAU,CAACC,GAAG,CAACF,IAAI,CAAC;EAClC;EAEAG,aAAaA,CAACH,IAAY,EAAQ;IAChC,IAAI,CAACC,UAAU,CAACG,GAAG,CAACJ,IAAI,CAAC;EAC3B;AACF","ignoreList":[]}
|
package/dist/esm/cook.js
CHANGED
|
@@ -2,6 +2,14 @@ import { ApplyStringOrNumericAssignment, CreateListIteratorRecord, ApplyStringOr
|
|
|
2
2
|
import { CompletionRecord, DebuggerCall, DebuggerNode, DebuggerReturn, DebuggerScope, DeclarativeEnvironment, ECMAScriptCode, Empty, Environment, ExecutionContext, FormalParameters, FunctionEnvironment, IsConstructor, NormalCompletion, ReferenceRecord, SourceNode, Mode, ThisMode } from "./ExecutionContext.js";
|
|
3
3
|
import { sanitize, isAllowedConstructor } from "./sanitize.js";
|
|
4
4
|
import { collectBoundNames, collectScopedDeclarations, containsExpression } from "./traverse.js";
|
|
5
|
+
const globalExecutionContextStack = [];
|
|
6
|
+
export function __dev_only_clearGlobalExecutionContextStack() {
|
|
7
|
+
globalExecutionContextStack.length = 0;
|
|
8
|
+
}
|
|
9
|
+
export function __dev_only_getGlobalExecutionContextStack() {
|
|
10
|
+
return globalExecutionContextStack;
|
|
11
|
+
}
|
|
12
|
+
|
|
5
13
|
/** For next-core internal usage only. */
|
|
6
14
|
export function cook(rootAst, codeSource) {
|
|
7
15
|
var _hooks$beforeEvaluate3;
|
|
@@ -437,7 +445,7 @@ export function cook(rootAst, codeSource) {
|
|
|
437
445
|
}
|
|
438
446
|
} else if (declarator.id.type === "Identifier") {
|
|
439
447
|
currentNode = declarator.init;
|
|
440
|
-
if (debug) yield;
|
|
448
|
+
if (debug && currentNode.type !== "CallExpression" && currentNode.type !== "TaggedTemplateExpression") yield;
|
|
441
449
|
const bindingId = declarator.id.name;
|
|
442
450
|
const lhs = ResolveBinding(bindingId);
|
|
443
451
|
let value;
|
|
@@ -450,7 +458,7 @@ export function cook(rootAst, codeSource) {
|
|
|
450
458
|
result = node.kind === "var" ? PutValue(lhs, value) : InitializeReferencedBinding(lhs, value);
|
|
451
459
|
} else {
|
|
452
460
|
currentNode = declarator.init;
|
|
453
|
-
if (debug) yield;
|
|
461
|
+
if (debug && currentNode.type !== "CallExpression" && currentNode.type !== "TaggedTemplateExpression") yield;
|
|
454
462
|
const rhs = yield* Evaluate(declarator.init);
|
|
455
463
|
const rval = GetValue(rhs);
|
|
456
464
|
result = yield* BindingInitialization(declarator.id, rval, node.kind === "var" ? undefined : getRunningContext().LexicalEnvironment);
|
|
@@ -1058,6 +1066,7 @@ export function cook(rootAst, codeSource) {
|
|
|
1058
1066
|
};
|
|
1059
1067
|
}
|
|
1060
1068
|
executionContextStack.pop();
|
|
1069
|
+
globalExecutionContextStack.pop();
|
|
1061
1070
|
if (result.Type === "return") {
|
|
1062
1071
|
return result.Value;
|
|
1063
1072
|
}
|
|
@@ -1072,6 +1081,7 @@ export function cook(rootAst, codeSource) {
|
|
|
1072
1081
|
calleeContext.VariableEnvironment = localEnv;
|
|
1073
1082
|
calleeContext.LexicalEnvironment = localEnv;
|
|
1074
1083
|
executionContextStack.push(calleeContext);
|
|
1084
|
+
globalExecutionContextStack.push(calleeContext);
|
|
1075
1085
|
return calleeContext;
|
|
1076
1086
|
}
|
|
1077
1087
|
function OrdinaryCallBindThis(F, calleeContext, thisArgument) {
|