@next-core/cook 2.2.4 → 2.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cook.js +4 -4
- package/dist/cjs/cook.js.map +1 -1
- package/dist/cjs/lint.js.map +1 -1
- package/dist/cjs/precook.js +2 -2
- package/dist/cjs/precook.js.map +1 -1
- package/dist/esm/cook.js +4 -4
- package/dist/esm/cook.js.map +1 -1
- package/dist/esm/lint.js.map +1 -1
- package/dist/esm/precook.js +2 -2
- package/dist/esm/precook.js.map +1 -1
- package/dist/types/lint.d.ts +10 -2
- package/package.json +6 -6
package/dist/esm/lint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.js","names":["parseForAnalysis","precook","lint","source","typescript","rules","arguments","length","undefined","errors","file","body","program","jsNodes","node","type","startsWith","test","push","message","concat","loc","func","isFunctionDeclaration","unshift","start","line","column","end","hooks","beforeVisit","async","generator","regex","value","flags","includes","prop","properties","kind","computed","key","name","noVar","beforeVisitGlobal","beforeVisitUnknown"],"sources":["../../src/lint.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport {\n type FunctionDeclaration,\n SourceLocation,\n Statement,\n} from \"@babel/types\";\nimport type { CookRules, ParseResultOfFile } from \"./interfaces.js\";\nimport { parseForAnalysis } from \"./parseForAnalysis.js\";\nimport { precook } from \"./precook.js\";\n\nexport interface LintOptions {\n typescript?: boolean;\n rules?: CookRules;\n}\n\nexport interface LintError {\n type: \"SyntaxError\" | \"TypeError\";\n message: string;\n loc: SourceLocation;\n}\n\n/** For next-core internal or devtools usage only. */\nexport function lint(\n source: string | ParseResultOfFile | null,\n { typescript, rules }: LintOptions = {}\n): LintError[] {\n const errors: LintError[] = [];\n const file =\n typeof source === \"string\"\n ? parseForAnalysis(source, { typescript })\n : source;\n if (!file) {\n // Return no errors if parse failed.\n return errors;\n }\n const body = file.program.body;\n const jsNodes: Statement[] = typescript ? [] : body;\n if (typescript) {\n for (const node of body) {\n if (node.type.startsWith(\"TS\")) {\n if (/Enum|Import|Export/.test(node.type)) {\n errors.push({\n type: \"SyntaxError\",\n message: `Unsupported TypeScript syntax: \\`${node.type}\\``,\n loc: node.loc!,\n });\n }\n } else {\n jsNodes.push(node);\n }\n }\n }\n let func: FunctionDeclaration | undefined;\n for (const node of jsNodes) {\n const isFunctionDeclaration = node.type === \"FunctionDeclaration\";\n if (isFunctionDeclaration && !func) {\n func = node;\n } else {\n errors.push({\n type: \"SyntaxError\",\n message: isFunctionDeclaration\n ? \"Expect a single function declaration\"\n : `\\`${node.type}\\` is not allowed in top level`,\n loc: node.loc!,\n });\n }\n }\n if (!func) {\n errors.unshift({\n type: \"SyntaxError\",\n message: \"Function declaration not found\",\n loc: {\n start: { line: 1, column: 0 },\n end: { line: 1, column: 0 },\n },\n });\n } else {\n precook(func, {\n hooks: {\n beforeVisit(node) {\n switch (node.type) {\n case \"ArrowFunctionExpression\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n if (node.async || node.generator) {\n errors.push({\n type: \"SyntaxError\",\n message: `${\n node.async ? \"Async\" : \"Generator\"\n } function is not allowed`,\n loc: node.loc!,\n });\n }\n break;\n case \"Literal\":\n if (node.regex) {\n if (node.value === null) {\n errors.push({\n type: \"SyntaxError\",\n message: \"Invalid regular expression\",\n loc: node.loc,\n });\n } else if (node.regex.flags.includes(\"u\")) {\n errors.push({\n type: \"SyntaxError\",\n message: \"Unsupported unicode flag in regular expression\",\n loc: node.loc,\n });\n }\n }\n break;\n case \"ObjectExpression\":\n for (const prop of node.properties) {\n if (prop.type === \"Property\") {\n if (prop.kind !== \"init\") {\n errors.push({\n type: \"SyntaxError\",\n message: \"Unsupported object getter/setter property\",\n loc: prop.loc!,\n });\n } else if (\n !prop.computed &&\n prop.key.type === \"Identifier\" &&\n prop.key.name === \"__proto__\"\n ) {\n errors.push({\n type: \"TypeError\",\n message: \"Setting '__proto__' property is not allowed\",\n loc: prop.key.loc!,\n });\n }\n }\n }\n break;\n case \"VariableDeclaration\":\n if (node.kind === \"var\" && rules?.noVar) {\n errors.push({\n type: \"SyntaxError\",\n message:\n \"Var declaration is not recommended, use `let` or `const` instead\",\n loc: {\n start: node.loc!.start,\n end: {\n line: node.loc!.start.line,\n // Only decorate the \"var\".\n column: node.loc!.start.column + 3,\n },\n },\n });\n }\n break;\n }\n },\n beforeVisitGlobal(node) {\n if (node.name === \"arguments\") {\n errors.push({\n type: \"SyntaxError\",\n message: \"Use the rest parameters instead of 'arguments'\",\n loc: node.loc!,\n });\n }\n },\n beforeVisitUnknown(node) {\n errors.push({\n type: \"SyntaxError\",\n message: `Unsupported syntax: \\`${node.type}\\``,\n loc: node.loc!,\n });\n return true;\n },\n },\n });\n }\n return errors;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lint.js","names":["parseForAnalysis","precook","lint","source","typescript","rules","arguments","length","undefined","errors","file","body","program","jsNodes","node","type","startsWith","test","push","message","concat","loc","func","isFunctionDeclaration","unshift","start","line","column","end","hooks","beforeVisit","async","generator","regex","value","flags","includes","prop","properties","kind","computed","key","name","noVar","beforeVisitGlobal","beforeVisitUnknown"],"sources":["../../src/lint.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { type FunctionDeclaration, Statement } from \"@babel/types\";\nimport type { CookRules, ParseResultOfFile } from \"./interfaces.js\";\nimport { parseForAnalysis } from \"./parseForAnalysis.js\";\nimport { precook } from \"./precook.js\";\n\nexport interface LintOptions {\n typescript?: boolean;\n rules?: CookRules;\n}\n\nexport interface LintError {\n type: \"SyntaxError\" | \"TypeError\";\n message: string;\n loc: {\n start: {\n line: number;\n column: number;\n };\n end: {\n line: number;\n column: number;\n };\n };\n}\n\n/** For next-core internal or devtools usage only. */\nexport function lint(\n source: string | ParseResultOfFile | null,\n { typescript, rules }: LintOptions = {}\n): LintError[] {\n const errors: LintError[] = [];\n const file =\n typeof source === \"string\"\n ? parseForAnalysis(source, { typescript })\n : source;\n if (!file) {\n // Return no errors if parse failed.\n return errors;\n }\n const body = file.program.body;\n const jsNodes: Statement[] = typescript ? [] : body;\n if (typescript) {\n for (const node of body) {\n if (node.type.startsWith(\"TS\")) {\n if (/Enum|Import|Export/.test(node.type)) {\n errors.push({\n type: \"SyntaxError\",\n message: `Unsupported TypeScript syntax: \\`${node.type}\\``,\n loc: node.loc!,\n });\n }\n } else {\n jsNodes.push(node);\n }\n }\n }\n let func: FunctionDeclaration | undefined;\n for (const node of jsNodes) {\n const isFunctionDeclaration = node.type === \"FunctionDeclaration\";\n if (isFunctionDeclaration && !func) {\n func = node;\n } else {\n errors.push({\n type: \"SyntaxError\",\n message: isFunctionDeclaration\n ? \"Expect a single function declaration\"\n : `\\`${node.type}\\` is not allowed in top level`,\n loc: node.loc!,\n });\n }\n }\n if (!func) {\n errors.unshift({\n type: \"SyntaxError\",\n message: \"Function declaration not found\",\n loc: {\n start: { line: 1, column: 0 },\n end: { line: 1, column: 0 },\n },\n });\n } else {\n precook(func, {\n hooks: {\n beforeVisit(node) {\n switch (node.type) {\n case \"ArrowFunctionExpression\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n if (node.async || node.generator) {\n errors.push({\n type: \"SyntaxError\",\n message: `${\n node.async ? \"Async\" : \"Generator\"\n } function is not allowed`,\n loc: node.loc!,\n });\n }\n break;\n case \"Literal\":\n if (node.regex) {\n if (node.value === null) {\n errors.push({\n type: \"SyntaxError\",\n message: \"Invalid regular expression\",\n loc: node.loc,\n });\n } else if (node.regex.flags.includes(\"u\")) {\n errors.push({\n type: \"SyntaxError\",\n message: \"Unsupported unicode flag in regular expression\",\n loc: node.loc,\n });\n }\n }\n break;\n case \"ObjectExpression\":\n for (const prop of node.properties) {\n if (prop.type === \"Property\") {\n if (prop.kind !== \"init\") {\n errors.push({\n type: \"SyntaxError\",\n message: \"Unsupported object getter/setter property\",\n loc: prop.loc!,\n });\n } else if (\n !prop.computed &&\n prop.key.type === \"Identifier\" &&\n prop.key.name === \"__proto__\"\n ) {\n errors.push({\n type: \"TypeError\",\n message: \"Setting '__proto__' property is not allowed\",\n loc: prop.key.loc!,\n });\n }\n }\n }\n break;\n case \"VariableDeclaration\":\n if (node.kind === \"var\" && rules?.noVar) {\n errors.push({\n type: \"SyntaxError\",\n message:\n \"Var declaration is not recommended, use `let` or `const` instead\",\n loc: {\n start: node.loc!.start,\n end: {\n line: node.loc!.start.line,\n // Only decorate the \"var\".\n column: node.loc!.start.column + 3,\n },\n },\n });\n }\n break;\n }\n },\n beforeVisitGlobal(node) {\n if (node.name === \"arguments\") {\n errors.push({\n type: \"SyntaxError\",\n message: \"Use the rest parameters instead of 'arguments'\",\n loc: node.loc!,\n });\n }\n },\n beforeVisitUnknown(node) {\n errors.push({\n type: \"SyntaxError\",\n message: `Unsupported syntax: \\`${node.type}\\``,\n loc: node.loc!,\n });\n return true;\n },\n },\n });\n }\n return errors;\n}\n"],"mappings":"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"}
|
package/dist/esm/precook.js
CHANGED
|
@@ -49,14 +49,14 @@ export function precook(rootAst) {
|
|
|
49
49
|
} else if (node) {
|
|
50
50
|
var _hooks$beforeVisit, _hooks$beforeVisitUnk;
|
|
51
51
|
// `node` maybe `null` in some cases.
|
|
52
|
-
(_hooks$beforeVisit = hooks.beforeVisit) === null || _hooks$beforeVisit === void 0
|
|
52
|
+
(_hooks$beforeVisit = hooks.beforeVisit) === null || _hooks$beforeVisit === void 0 || _hooks$beforeVisit.call(hooks, node, parent);
|
|
53
53
|
visit(node);
|
|
54
54
|
// Expressions:
|
|
55
55
|
switch (node.type) {
|
|
56
56
|
case "Identifier":
|
|
57
57
|
if (!ResolveBinding(node.name)) {
|
|
58
58
|
var _hooks$beforeVisitGlo;
|
|
59
|
-
(_hooks$beforeVisitGlo = hooks.beforeVisitGlobal) === null || _hooks$beforeVisitGlo === void 0
|
|
59
|
+
(_hooks$beforeVisitGlo = hooks.beforeVisitGlobal) === null || _hooks$beforeVisitGlo === void 0 || _hooks$beforeVisitGlo.call(hooks, node, parent);
|
|
60
60
|
attemptToVisitGlobals.add(node.name);
|
|
61
61
|
}
|
|
62
62
|
return;
|
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","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","_objectSpread","_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}\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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"}
|
|
1
|
+
{"version":3,"file":"precook.js","names":["hasOwnProperty","AnalysisContext","AnalysisEnvironment","collectBoundNames","collectScopedDeclarations","containsExpression","precook","rootAst","expressionOnly","visitors","withParent","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","_objectSpread","_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}\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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"}
|
package/dist/types/lint.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SourceLocation } from "@babel/types";
|
|
2
1
|
import type { CookRules, ParseResultOfFile } from "./interfaces.js";
|
|
3
2
|
export interface LintOptions {
|
|
4
3
|
typescript?: boolean;
|
|
@@ -7,7 +6,16 @@ export interface LintOptions {
|
|
|
7
6
|
export interface LintError {
|
|
8
7
|
type: "SyntaxError" | "TypeError";
|
|
9
8
|
message: string;
|
|
10
|
-
loc:
|
|
9
|
+
loc: {
|
|
10
|
+
start: {
|
|
11
|
+
line: number;
|
|
12
|
+
column: number;
|
|
13
|
+
};
|
|
14
|
+
end: {
|
|
15
|
+
line: number;
|
|
16
|
+
column: number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
11
19
|
}
|
|
12
20
|
/** For next-core internal or devtools usage only. */
|
|
13
21
|
export declare function lint(source: string | ParseResultOfFile | null, { typescript, rules }?: LintOptions): LintError[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/cook",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.6",
|
|
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",
|
|
@@ -48,13 +48,13 @@
|
|
|
48
48
|
},
|
|
49
49
|
"sideEffects": false,
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@babel/parser": "^7.22.
|
|
51
|
+
"@babel/parser": "^7.22.15"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@next-core/build-next-libs": "^1.0.
|
|
55
|
-
"@next-core/supply": "^2.1.
|
|
56
|
-
"@next-core/test-next": "^1.0.
|
|
54
|
+
"@next-core/build-next-libs": "^1.0.7",
|
|
55
|
+
"@next-core/supply": "^2.1.5",
|
|
56
|
+
"@next-core/test-next": "^1.0.10",
|
|
57
57
|
"lodash": "^4.17.21"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "d20f09a934e6d8ba67e669a947acb816e7d6266b"
|
|
60
60
|
}
|