@next-core/cook 2.4.2 → 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/precook.js +8 -3
- package/dist/cjs/precook.js.map +1 -1
- package/dist/esm/AnalysisContext.js.map +1 -1
- package/dist/esm/precook.js +8 -3
- package/dist/esm/precook.js.map +1 -1
- package/dist/types/AnalysisContext.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalysisContext.js","names":["AnalysisContext","VariableEnvironment","LexicalEnvironment","exports","AnalysisEnvironment","OuterEnv","bindingSet","Set","constructor","outer","HasBinding","name","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;AACO,MAAMA,eAAe,CAAC;EAC3BC,mBAAmB;EACnBC,kBAAkB;AACpB;;AAEA;AAAAC,OAAA,CAAAH,eAAA,GAAAA,eAAA;AACO,MAAMI,mBAAmB,CAAC;EACtBC,QAAQ;EACAC,UAAU,GAAG,IAAIC,GAAG,CAAS,CAAC;EAE/CC,WAAWA,CAACC,KAA6C,EAAE;IACzD,IAAI,CAACJ,QAAQ,GAAGI,KAAK;EACvB;EAEAC,UAAUA,CAACC,IAAY,EAAW;IAChC,OAAO,IAAI,CAACL,UAAU,CAACM,GAAG,CAACD,IAAI,CAAC;EAClC;EAEAE,aAAaA,CAACF,IAAY,EAAQ;IAChC,IAAI,CAACL,UAAU,CAACQ,GAAG,CAACH,IAAI,CAAC;EAC3B;AACF;AAACR,OAAA,CAAAC,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AnalysisContext.js","names":["AnalysisContext","VariableEnvironment","LexicalEnvironment","exports","AnalysisEnvironment","OuterEnv","bindingSet","Set","constructor","outer","HasBinding","name","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;AACO,MAAMA,eAAe,CAAC;EAC3BC,mBAAmB;EACnBC,kBAAkB;AACpB;;AAEA;AAAAC,OAAA,CAAAH,eAAA,GAAAA,eAAA;AACO,MAAMI,mBAAmB,CAAC;EACtBC,QAAQ;EACAC,UAAU,GAAG,IAAIC,GAAG,CAAS,CAAC;EAE/CC,WAAWA,CAACC,KAA6C,EAAE;IACzD,IAAI,CAACJ,QAAQ,GAAGI,KAAK;EACvB;EAEAC,UAAUA,CAACC,IAAY,EAAW;IAChC,OAAO,IAAI,CAACL,UAAU,CAACM,GAAG,CAACD,IAAI,CAAC;EAClC;EAEAE,aAAaA,CAACF,IAAY,EAAQ;IAChC,IAAI,CAACL,UAAU,CAACQ,GAAG,CAACH,IAAI,CAAC;EAC3B;AACF;AAACR,OAAA,CAAAC,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
package/dist/cjs/precook.js
CHANGED
|
@@ -73,7 +73,7 @@ function precook(rootAst, {
|
|
|
73
73
|
case "ArrowFunctionExpression":
|
|
74
74
|
{
|
|
75
75
|
const env = getRunningContext().LexicalEnvironment;
|
|
76
|
-
const closure = OrdinaryFunctionCreate(node, env);
|
|
76
|
+
const closure = OrdinaryFunctionCreate(node, env, true);
|
|
77
77
|
CallFunction(closure, parent);
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
@@ -319,8 +319,12 @@ function precook(rootAst, {
|
|
|
319
319
|
topLevel: true
|
|
320
320
|
});
|
|
321
321
|
const varNames = (0, _traverse.collectBoundNames)(varDeclarations);
|
|
322
|
+
const argumentsObjectNeeded = !!externalSourceForDebug && func.ThisMode !== "LEXICAL";
|
|
322
323
|
const env = calleeContext.LexicalEnvironment;
|
|
323
324
|
BoundNamesInstantiation(formals, env);
|
|
325
|
+
if (argumentsObjectNeeded) {
|
|
326
|
+
env.CreateBinding("arguments");
|
|
327
|
+
}
|
|
324
328
|
Evaluate(formals, parent === null || parent === void 0 ? void 0 : parent.concat({
|
|
325
329
|
node: func.Function,
|
|
326
330
|
key: "params"
|
|
@@ -361,12 +365,13 @@ function precook(rootAst, {
|
|
|
361
365
|
funcEnv.CreateBinding(name);
|
|
362
366
|
return OrdinaryFunctionCreate(functionExpression, funcEnv);
|
|
363
367
|
}
|
|
364
|
-
function OrdinaryFunctionCreate(func, scope) {
|
|
368
|
+
function OrdinaryFunctionCreate(func, scope, lexicalThis) {
|
|
365
369
|
return {
|
|
366
370
|
Function: func,
|
|
367
371
|
FormalParameters: func.params,
|
|
368
372
|
ECMAScriptCode: func.body.type === "BlockStatement" ? func.body.body : func.body,
|
|
369
|
-
Environment: scope
|
|
373
|
+
Environment: scope,
|
|
374
|
+
ThisMode: lexicalThis ? "LEXICAL" : "STRICT"
|
|
370
375
|
};
|
|
371
376
|
}
|
|
372
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","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","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 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);\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 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/precook.js
CHANGED
|
@@ -68,7 +68,7 @@ export function precook(rootAst) {
|
|
|
68
68
|
case "ArrowFunctionExpression":
|
|
69
69
|
{
|
|
70
70
|
const env = getRunningContext().LexicalEnvironment;
|
|
71
|
-
const closure = OrdinaryFunctionCreate(node, env);
|
|
71
|
+
const closure = OrdinaryFunctionCreate(node, env, true);
|
|
72
72
|
CallFunction(closure, parent);
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
@@ -314,8 +314,12 @@ export function precook(rootAst) {
|
|
|
314
314
|
topLevel: true
|
|
315
315
|
});
|
|
316
316
|
const varNames = collectBoundNames(varDeclarations);
|
|
317
|
+
const argumentsObjectNeeded = !!externalSourceForDebug && func.ThisMode !== "LEXICAL";
|
|
317
318
|
const env = calleeContext.LexicalEnvironment;
|
|
318
319
|
BoundNamesInstantiation(formals, env);
|
|
320
|
+
if (argumentsObjectNeeded) {
|
|
321
|
+
env.CreateBinding("arguments");
|
|
322
|
+
}
|
|
319
323
|
Evaluate(formals, parent === null || parent === void 0 ? void 0 : parent.concat({
|
|
320
324
|
node: func.Function,
|
|
321
325
|
key: "params"
|
|
@@ -356,12 +360,13 @@ export function precook(rootAst) {
|
|
|
356
360
|
funcEnv.CreateBinding(name);
|
|
357
361
|
return OrdinaryFunctionCreate(functionExpression, funcEnv);
|
|
358
362
|
}
|
|
359
|
-
function OrdinaryFunctionCreate(func, scope) {
|
|
363
|
+
function OrdinaryFunctionCreate(func, scope, lexicalThis) {
|
|
360
364
|
return {
|
|
361
365
|
Function: func,
|
|
362
366
|
FormalParameters: func.params,
|
|
363
367
|
ECMAScriptCode: func.body.type === "BlockStatement" ? func.body.body : func.body,
|
|
364
|
-
Environment: scope
|
|
368
|
+
Environment: scope,
|
|
369
|
+
ThisMode: lexicalThis ? "LEXICAL" : "STRICT"
|
|
365
370
|
};
|
|
366
371
|
}
|
|
367
372
|
Evaluate(rootAst, withParent ? [] : undefined);
|
package/dist/esm/precook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"precook.js","names":["hasOwnProperty","AnalysisContext","AnalysisEnvironment","collectBoundNames","collectScopedDeclarations","containsExpression","precook","rootAst","expressionOnly","visitors","withParent","externalSourceForDebug","hooks","arguments","length","undefined","attemptToVisitGlobals","Set","analysisContextStack","rootEnv","rootContext","VariableEnvironment","LexicalEnvironment","push","getRunningContext","visit","node","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","fo","CreateBinding","InstantiateOrdinaryFunctionExpression","cases","silent","beforeVisitUnknown","console","warn","declarations","GetIdentifierReference","HasBinding","OuterEnv","code","var","topLevel","PrepareOrdinaryCall","FunctionDeclarationInstantiation","ECMAScriptCode","Function","pop","F","calleeContext","localEnv","Environment","func","formals","FormalParameters","hasParameterExpressions","varDeclarations","varNames","varEnv","lexEnv","lexDeclarations","functionExpression","scope","id","funcEnv","params"],"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);\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 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","AnalysisContext","AnalysisEnvironment","collectBoundNames","collectScopedDeclarations","containsExpression","precook","rootAst","expressionOnly","visitors","withParent","externalSourceForDebug","hooks","arguments","length","undefined","attemptToVisitGlobals","Set","analysisContextStack","rootEnv","rootContext","VariableEnvironment","LexicalEnvironment","push","getRunningContext","visit","node","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","fo","CreateBinding","InstantiateOrdinaryFunctionExpression","cases","silent","beforeVisitUnknown","console","warn","declarations","GetIdentifierReference","HasBinding","OuterEnv","code","var","topLevel","PrepareOrdinaryCall","FunctionDeclarationInstantiation","ECMAScriptCode","Function","pop","F","calleeContext","localEnv","Environment","func","formals","FormalParameters","hasParameterExpressions","varDeclarations","varNames","argumentsObjectNeeded","ThisMode","varEnv","lexEnv","lexDeclarations","functionExpression","scope","id","funcEnv","lexicalThis","params"],"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":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/cook",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.3",
|
|
4
4
|
"description": "Cook expressions and storyboard functions",
|
|
5
5
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/cook",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"@next-core/test-next": "^1.1.3",
|
|
58
58
|
"lodash": "^4.17.21"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "a8e1b7d906e4653035ceda76bf09a16afcb02a7a"
|
|
61
61
|
}
|