@easyv/biz-components 1.0.28 → 1.0.29
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/components/code-editor/code-editor.d.ts +3 -0
- package/dist/components/code-editor/code-editor.es.js +49 -24
- package/dist/components/code-editor/code-editor.es.js.map +1 -1
- package/dist/components/code-editor/constants.d.ts +135 -0
- package/dist/components/code-editor/constants.es.js +281 -0
- package/dist/components/code-editor/constants.es.js.map +1 -0
- package/dist/components/code-editor/utils.d.ts +61 -0
- package/dist/components/code-editor/utils.es.js +128 -0
- package/dist/components/code-editor/utils.es.js.map +1 -0
- package/dist/node_modules/.pnpm/@codemirror_lang-javascript@6.2.1/node_modules/@codemirror/lang-javascript/dist/index.es.js +1 -1
- package/dist/node_modules/.pnpm/@codemirror_language@6.11.0/node_modules/@codemirror/language/dist/index.es.js +2 -2
- package/dist/node_modules/.pnpm/@codemirror_view@6.38.0/node_modules/@codemirror/view/dist/index.es.js +1 -1
- package/dist/node_modules/.pnpm/acorn-walk@8.3.4/node_modules/acorn-walk/dist/walk.es.js +297 -0
- package/dist/node_modules/.pnpm/acorn-walk@8.3.4/node_modules/acorn-walk/dist/walk.es.js.map +1 -0
- package/dist/stats.html +1 -1
- package/dist/utils/vosk-browser-manager/vosk-browser-manager.d.ts +2 -0
- package/dist/utils/vosk-browser-manager/vosk-browser-manager.es.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { parse } from "../../node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/dist/acorn.es.js";
|
|
2
|
+
import { simple } from "../../node_modules/.pnpm/acorn-walk@8.3.4/node_modules/acorn-walk/dist/walk.es.js";
|
|
3
|
+
import { LINT_CONFIG, nodeGlobals, browserGlobals, ERROR_MESSAGES, DIAGNOSTIC_SEVERITY } from "./constants.es.js";
|
|
4
|
+
const getGlobalDefinitions = (environment) => {
|
|
5
|
+
return environment === "node" ? nodeGlobals : browserGlobals;
|
|
6
|
+
};
|
|
7
|
+
const collectVariableDeclarations = (ast) => {
|
|
8
|
+
const declaredVars = /* @__PURE__ */ new Map();
|
|
9
|
+
simple(ast, {
|
|
10
|
+
// 处理变量声明
|
|
11
|
+
VariableDeclarator(node) {
|
|
12
|
+
if (node.id && node.id.type === "Identifier") {
|
|
13
|
+
declaredVars.set(node.id.name, {
|
|
14
|
+
line: node.id.loc.start.line,
|
|
15
|
+
column: node.id.loc.start.column,
|
|
16
|
+
used: false
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
// 处理函数声明
|
|
21
|
+
FunctionDeclaration(node) {
|
|
22
|
+
if (node.id && node.id.type === "Identifier") {
|
|
23
|
+
declaredVars.set(node.id.name, {
|
|
24
|
+
line: node.id.loc.start.line,
|
|
25
|
+
column: node.id.loc.start.column,
|
|
26
|
+
used: false
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return declaredVars;
|
|
32
|
+
};
|
|
33
|
+
const checkVariableUsageAndMethods = (ast, declaredVars, globals, view) => {
|
|
34
|
+
const diagnostics = [];
|
|
35
|
+
simple(ast, {
|
|
36
|
+
Identifier(node) {
|
|
37
|
+
if (declaredVars.has(node.name)) {
|
|
38
|
+
const varInfo = declaredVars.get(node.name);
|
|
39
|
+
varInfo.used = true;
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
MemberExpression(node) {
|
|
43
|
+
if (node.object && node.property && !node.computed) {
|
|
44
|
+
const objectName = node.object.name;
|
|
45
|
+
const propertyName = node.property.name;
|
|
46
|
+
if (objectName && propertyName && objectName in globals && typeof globals[objectName] === "object") {
|
|
47
|
+
const methods = globals[objectName];
|
|
48
|
+
if (!methods[propertyName]) {
|
|
49
|
+
const line = view.state.doc.line(node.property.loc.start.line);
|
|
50
|
+
const from = line.from + node.property.loc.start.column;
|
|
51
|
+
const to = from + propertyName.length;
|
|
52
|
+
diagnostics.push({
|
|
53
|
+
from,
|
|
54
|
+
to,
|
|
55
|
+
severity: DIAGNOSTIC_SEVERITY.WARNING,
|
|
56
|
+
message: ERROR_MESSAGES.METHOD_NOT_EXIST(objectName, propertyName)
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
return diagnostics;
|
|
64
|
+
};
|
|
65
|
+
const checkUnusedVariables = (declaredVars, view) => {
|
|
66
|
+
const diagnostics = [];
|
|
67
|
+
for (const [varName, varInfo] of declaredVars) {
|
|
68
|
+
if (!varInfo.used) {
|
|
69
|
+
const line = view.state.doc.line(varInfo.line);
|
|
70
|
+
const from = line.from + varInfo.column;
|
|
71
|
+
const to = from + varName.length;
|
|
72
|
+
diagnostics.push({
|
|
73
|
+
from,
|
|
74
|
+
to,
|
|
75
|
+
severity: DIAGNOSTIC_SEVERITY.WARNING,
|
|
76
|
+
message: ERROR_MESSAGES.UNUSED_VARIABLE(varName)
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return diagnostics;
|
|
81
|
+
};
|
|
82
|
+
const handleSyntaxError = (error, view) => {
|
|
83
|
+
const { loc, message } = error;
|
|
84
|
+
console.log(`%c ❤️ love ==== js lint error:`, LINT_CONFIG.CONSOLE_STYLES.ERROR, { error });
|
|
85
|
+
console.dir(error);
|
|
86
|
+
const errorMsg = ERROR_MESSAGES.SYNTAX_ERROR(loc.line, loc.column, message);
|
|
87
|
+
const line = view.state.doc.line(loc.line);
|
|
88
|
+
const from = line.from + loc.column - 1;
|
|
89
|
+
const to = Math.min(from + 1, line.to);
|
|
90
|
+
return [
|
|
91
|
+
{
|
|
92
|
+
from,
|
|
93
|
+
to,
|
|
94
|
+
severity: DIAGNOSTIC_SEVERITY.ERROR,
|
|
95
|
+
message: errorMsg
|
|
96
|
+
}
|
|
97
|
+
];
|
|
98
|
+
};
|
|
99
|
+
const lintJavaScriptCode = (code, environment, view) => {
|
|
100
|
+
const diagnostics = [];
|
|
101
|
+
try {
|
|
102
|
+
const ast = parse(code, { ecmaVersion: LINT_CONFIG.ECMA_VERSION, locations: true });
|
|
103
|
+
const globals = getGlobalDefinitions(environment);
|
|
104
|
+
const declaredVars = collectVariableDeclarations(ast);
|
|
105
|
+
const usageAndMethodDiagnostics = checkVariableUsageAndMethods(
|
|
106
|
+
ast,
|
|
107
|
+
declaredVars,
|
|
108
|
+
globals,
|
|
109
|
+
view
|
|
110
|
+
);
|
|
111
|
+
diagnostics.push(...usageAndMethodDiagnostics);
|
|
112
|
+
const unusedVariableDiagnostics = checkUnusedVariables(declaredVars, view);
|
|
113
|
+
diagnostics.push(...unusedVariableDiagnostics);
|
|
114
|
+
} catch (error) {
|
|
115
|
+
const syntaxErrorDiagnostics = handleSyntaxError(error, view);
|
|
116
|
+
diagnostics.push(...syntaxErrorDiagnostics);
|
|
117
|
+
}
|
|
118
|
+
return diagnostics;
|
|
119
|
+
};
|
|
120
|
+
export {
|
|
121
|
+
checkUnusedVariables,
|
|
122
|
+
checkVariableUsageAndMethods,
|
|
123
|
+
collectVariableDeclarations,
|
|
124
|
+
getGlobalDefinitions,
|
|
125
|
+
handleSyntaxError,
|
|
126
|
+
lintJavaScriptCode
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=utils.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.es.js","sources":["../../../src/components/code-editor/utils.ts"],"sourcesContent":["import { Diagnostic } from '@codemirror/lint';\nimport { EditorView } from '@codemirror/view';\nimport * as acorn from 'acorn';\nimport { simple as walk } from 'acorn-walk';\nimport {\n browserGlobals,\n DIAGNOSTIC_SEVERITY,\n ERROR_MESSAGES,\n LINT_CONFIG,\n nodeGlobals,\n} from './constants';\n\n// 获取全局变量定义 - 基于 TypeScript 类型定义\nexport const getGlobalDefinitions = (environment: 'browser' | 'node') => {\n return environment === 'node' ? nodeGlobals : browserGlobals;\n};\n\n// 变量信息接口\nexport interface VariableInfo {\n line: number;\n column: number;\n used: boolean;\n}\n\n// 收集变量声明\nexport const collectVariableDeclarations = (ast: any): Map<string, VariableInfo> => {\n const declaredVars = new Map<string, VariableInfo>();\n\n walk(ast, {\n // 处理变量声明\n VariableDeclarator(node: any) {\n if (node.id && node.id.type === 'Identifier') {\n declaredVars.set(node.id.name, {\n line: node.id.loc.start.line,\n column: node.id.loc.start.column,\n used: false,\n });\n }\n },\n // 处理函数声明\n FunctionDeclaration(node: any) {\n if (node.id && node.id.type === 'Identifier') {\n declaredVars.set(node.id.name, {\n line: node.id.loc.start.line,\n column: node.id.loc.start.column,\n used: false,\n });\n }\n },\n });\n\n return declaredVars;\n};\n\n// 检查变量使用和方法调用\nexport const checkVariableUsageAndMethods = (\n ast: any,\n declaredVars: Map<string, VariableInfo>,\n globals: any,\n view: EditorView,\n): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n\n walk(ast, {\n Identifier(node: any) {\n if (declaredVars.has(node.name)) {\n const varInfo = declaredVars.get(node.name)!;\n varInfo.used = true;\n }\n },\n MemberExpression(node: any) {\n // 检测方法调用是否存在\n if (node.object && node.property && !node.computed) {\n const objectName = node.object.name;\n const propertyName = node.property.name;\n\n // 检查全局对象的方法\n if (\n objectName &&\n propertyName &&\n objectName in globals &&\n typeof globals[objectName as keyof typeof globals] === 'object'\n ) {\n const methods = globals[objectName as keyof typeof globals] as Record<string, boolean>;\n if (!methods[propertyName]) {\n const line = view.state.doc.line(node.property.loc.start.line);\n const from = line.from + node.property.loc.start.column;\n const to = from + propertyName.length;\n\n diagnostics.push({\n from,\n to,\n severity: DIAGNOSTIC_SEVERITY.WARNING,\n message: ERROR_MESSAGES.METHOD_NOT_EXIST(objectName, propertyName),\n });\n }\n }\n }\n },\n });\n\n return diagnostics;\n};\n\n// 检查未使用的变量\nexport const checkUnusedVariables = (\n declaredVars: Map<string, VariableInfo>,\n view: EditorView,\n): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n\n for (const [varName, varInfo] of declaredVars) {\n if (!varInfo.used) {\n const line = view.state.doc.line(varInfo.line);\n const from = line.from + varInfo.column;\n const to = from + varName.length;\n\n diagnostics.push({\n from,\n to,\n severity: DIAGNOSTIC_SEVERITY.WARNING,\n message: ERROR_MESSAGES.UNUSED_VARIABLE(varName),\n });\n }\n }\n\n return diagnostics;\n};\n\n// 处理语法错误\nexport const handleSyntaxError = (error: any, view: EditorView): Diagnostic[] => {\n const { loc, message } = error;\n console.log(`%c ❤️ love ==== js lint error:`, LINT_CONFIG.CONSOLE_STYLES.ERROR, { error });\n console.dir(error);\n const errorMsg = ERROR_MESSAGES.SYNTAX_ERROR(loc.line, loc.column, message);\n\n // 将行列号转换为 CodeMirror 需要的字符位置\n const line = view.state.doc.line(loc.line);\n const from = line.from + loc.column - 1; // loc.column 是基于 1 的,需要减 1\n const to = Math.min(from + 1, line.to); // 确保不超过行尾\n\n return [\n {\n from,\n to,\n severity: DIAGNOSTIC_SEVERITY.ERROR,\n message: errorMsg,\n },\n ];\n};\n\n// JavaScript代码语法检查主函数\nexport const lintJavaScriptCode = (\n code: string,\n environment: 'browser' | 'node',\n view: EditorView,\n): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n\n try {\n const ast = acorn.parse(code, { ecmaVersion: LINT_CONFIG.ECMA_VERSION, locations: true });\n const globals = getGlobalDefinitions(environment);\n\n // 收集变量声明\n const declaredVars = collectVariableDeclarations(ast);\n\n // 检查变量使用和方法调用\n const usageAndMethodDiagnostics = checkVariableUsageAndMethods(\n ast,\n declaredVars,\n globals,\n view,\n );\n diagnostics.push(...usageAndMethodDiagnostics);\n\n // 检查未使用的变量\n const unusedVariableDiagnostics = checkUnusedVariables(declaredVars, view);\n diagnostics.push(...unusedVariableDiagnostics);\n } catch (error: any) {\n const syntaxErrorDiagnostics = handleSyntaxError(error, view);\n diagnostics.push(...syntaxErrorDiagnostics);\n }\n\n return diagnostics;\n};\n"],"names":["walk","acorn.parse"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parser } from "../../../../../@lezer_javascript@1.4.21/node_modules/@lezer/javascript/dist/index.es.js";
|
|
2
|
-
import {
|
|
2
|
+
import { LRLanguage, LanguageSupport, indentNodeProp, foldNodeProp, continuedIndent, delimitedIndent, flatIndent, foldInside, sublanguageProp, defineLanguageFacet, syntaxTree } from "../../../../../@codemirror_language@6.11.0/node_modules/@codemirror/language/dist/index.es.js";
|
|
3
3
|
import { EditorSelection } from "../../../../../@codemirror_state@6.5.2/node_modules/@codemirror/state/dist/index.es.js";
|
|
4
4
|
import { EditorView } from "../../../../../@codemirror_view@6.38.0/node_modules/@codemirror/view/dist/index.es.js";
|
|
5
5
|
import { snippetCompletion, ifNotIn, completeFromList } from "../../../../../@codemirror_autocomplete@6.11.0_@codemirror_language@6.11.0_@codemirror_state@6.5.2_@co_f627118f465fbcaad567121946d7b883/node_modules/@codemirror/autocomplete/dist/index.es.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NodeProp, Tree, IterMode, TreeFragment, Parser, NodeType } from "../../../../../@lezer_common@1.2.3/node_modules/@lezer/common/dist/index.es.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { EditorState, Facet, Prec, StateEffect, StateField, RangeSetBuilder, RangeSet, countColumn, combineConfig } from "../../../../../@codemirror_state@6.5.2/node_modules/@codemirror/state/dist/index.es.js";
|
|
3
|
+
import { ViewPlugin, EditorView, logException, gutter, Decoration, GutterMarker, WidgetType, Direction } from "../../../../../@codemirror_view@6.38.0/node_modules/@codemirror/view/dist/index.es.js";
|
|
4
4
|
import { tagHighlighter, tags, highlightTree, styleTags } from "../../../../../@lezer_highlight@1.2.1/node_modules/@lezer/highlight/dist/index.es.js";
|
|
5
5
|
import { StyleModule } from "../../../../../style-mod@4.1.2/node_modules/style-mod/src/style-mod.es.js";
|
|
6
6
|
var _a;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EditorState, StateEffect, Facet, Transaction, Annotation, EditorSelection, Prec, RangeSet, StateField, MapMode, Text, ChangeSet, findClusterBreak,
|
|
1
|
+
import { EditorState, StateEffect, Facet, Transaction, Annotation, EditorSelection, Prec, RangeSet, StateField, MapMode, RangeValue, Text, ChangeSet, findClusterBreak, findColumn, codePointAt, codePointSize, combineConfig, countColumn, RangeSetBuilder, CharCategory } from "../../../../../@codemirror_state@6.5.2/node_modules/@codemirror/state/dist/index.es.js";
|
|
2
2
|
import { StyleModule } from "../../../../../style-mod@4.1.2/node_modules/style-mod/src/style-mod.es.js";
|
|
3
3
|
import { keyName, base, shift } from "../../../../../w3c-keyname@2.2.8/node_modules/w3c-keyname/index.es.js";
|
|
4
4
|
function getSelection(root) {
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
function simple(node, visitors, baseVisitor, state, override) {
|
|
2
|
+
if (!baseVisitor) {
|
|
3
|
+
baseVisitor = base;
|
|
4
|
+
}
|
|
5
|
+
(function c(node2, st, override2) {
|
|
6
|
+
var type = override2 || node2.type;
|
|
7
|
+
baseVisitor[type](node2, st, c);
|
|
8
|
+
if (visitors[type]) {
|
|
9
|
+
visitors[type](node2, st);
|
|
10
|
+
}
|
|
11
|
+
})(node, state, override);
|
|
12
|
+
}
|
|
13
|
+
function skipThrough(node, st, c) {
|
|
14
|
+
c(node, st);
|
|
15
|
+
}
|
|
16
|
+
function ignore(_node, _st, _c) {
|
|
17
|
+
}
|
|
18
|
+
var base = {};
|
|
19
|
+
base.Program = base.BlockStatement = base.StaticBlock = function(node, st, c) {
|
|
20
|
+
for (var i = 0, list = node.body; i < list.length; i += 1) {
|
|
21
|
+
var stmt = list[i];
|
|
22
|
+
c(stmt, st, "Statement");
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
base.Statement = skipThrough;
|
|
26
|
+
base.EmptyStatement = ignore;
|
|
27
|
+
base.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression = function(node, st, c) {
|
|
28
|
+
return c(node.expression, st, "Expression");
|
|
29
|
+
};
|
|
30
|
+
base.IfStatement = function(node, st, c) {
|
|
31
|
+
c(node.test, st, "Expression");
|
|
32
|
+
c(node.consequent, st, "Statement");
|
|
33
|
+
if (node.alternate) {
|
|
34
|
+
c(node.alternate, st, "Statement");
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
base.LabeledStatement = function(node, st, c) {
|
|
38
|
+
return c(node.body, st, "Statement");
|
|
39
|
+
};
|
|
40
|
+
base.BreakStatement = base.ContinueStatement = ignore;
|
|
41
|
+
base.WithStatement = function(node, st, c) {
|
|
42
|
+
c(node.object, st, "Expression");
|
|
43
|
+
c(node.body, st, "Statement");
|
|
44
|
+
};
|
|
45
|
+
base.SwitchStatement = function(node, st, c) {
|
|
46
|
+
c(node.discriminant, st, "Expression");
|
|
47
|
+
for (var i = 0, list = node.cases; i < list.length; i += 1) {
|
|
48
|
+
var cs = list[i];
|
|
49
|
+
c(cs, st);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
base.SwitchCase = function(node, st, c) {
|
|
53
|
+
if (node.test) {
|
|
54
|
+
c(node.test, st, "Expression");
|
|
55
|
+
}
|
|
56
|
+
for (var i = 0, list = node.consequent; i < list.length; i += 1) {
|
|
57
|
+
var cons = list[i];
|
|
58
|
+
c(cons, st, "Statement");
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
base.ReturnStatement = base.YieldExpression = base.AwaitExpression = function(node, st, c) {
|
|
62
|
+
if (node.argument) {
|
|
63
|
+
c(node.argument, st, "Expression");
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
base.ThrowStatement = base.SpreadElement = function(node, st, c) {
|
|
67
|
+
return c(node.argument, st, "Expression");
|
|
68
|
+
};
|
|
69
|
+
base.TryStatement = function(node, st, c) {
|
|
70
|
+
c(node.block, st, "Statement");
|
|
71
|
+
if (node.handler) {
|
|
72
|
+
c(node.handler, st);
|
|
73
|
+
}
|
|
74
|
+
if (node.finalizer) {
|
|
75
|
+
c(node.finalizer, st, "Statement");
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
base.CatchClause = function(node, st, c) {
|
|
79
|
+
if (node.param) {
|
|
80
|
+
c(node.param, st, "Pattern");
|
|
81
|
+
}
|
|
82
|
+
c(node.body, st, "Statement");
|
|
83
|
+
};
|
|
84
|
+
base.WhileStatement = base.DoWhileStatement = function(node, st, c) {
|
|
85
|
+
c(node.test, st, "Expression");
|
|
86
|
+
c(node.body, st, "Statement");
|
|
87
|
+
};
|
|
88
|
+
base.ForStatement = function(node, st, c) {
|
|
89
|
+
if (node.init) {
|
|
90
|
+
c(node.init, st, "ForInit");
|
|
91
|
+
}
|
|
92
|
+
if (node.test) {
|
|
93
|
+
c(node.test, st, "Expression");
|
|
94
|
+
}
|
|
95
|
+
if (node.update) {
|
|
96
|
+
c(node.update, st, "Expression");
|
|
97
|
+
}
|
|
98
|
+
c(node.body, st, "Statement");
|
|
99
|
+
};
|
|
100
|
+
base.ForInStatement = base.ForOfStatement = function(node, st, c) {
|
|
101
|
+
c(node.left, st, "ForInit");
|
|
102
|
+
c(node.right, st, "Expression");
|
|
103
|
+
c(node.body, st, "Statement");
|
|
104
|
+
};
|
|
105
|
+
base.ForInit = function(node, st, c) {
|
|
106
|
+
if (node.type === "VariableDeclaration") {
|
|
107
|
+
c(node, st);
|
|
108
|
+
} else {
|
|
109
|
+
c(node, st, "Expression");
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
base.DebuggerStatement = ignore;
|
|
113
|
+
base.FunctionDeclaration = function(node, st, c) {
|
|
114
|
+
return c(node, st, "Function");
|
|
115
|
+
};
|
|
116
|
+
base.VariableDeclaration = function(node, st, c) {
|
|
117
|
+
for (var i = 0, list = node.declarations; i < list.length; i += 1) {
|
|
118
|
+
var decl = list[i];
|
|
119
|
+
c(decl, st);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
base.VariableDeclarator = function(node, st, c) {
|
|
123
|
+
c(node.id, st, "Pattern");
|
|
124
|
+
if (node.init) {
|
|
125
|
+
c(node.init, st, "Expression");
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
base.Function = function(node, st, c) {
|
|
129
|
+
if (node.id) {
|
|
130
|
+
c(node.id, st, "Pattern");
|
|
131
|
+
}
|
|
132
|
+
for (var i = 0, list = node.params; i < list.length; i += 1) {
|
|
133
|
+
var param = list[i];
|
|
134
|
+
c(param, st, "Pattern");
|
|
135
|
+
}
|
|
136
|
+
c(node.body, st, node.expression ? "Expression" : "Statement");
|
|
137
|
+
};
|
|
138
|
+
base.Pattern = function(node, st, c) {
|
|
139
|
+
if (node.type === "Identifier") {
|
|
140
|
+
c(node, st, "VariablePattern");
|
|
141
|
+
} else if (node.type === "MemberExpression") {
|
|
142
|
+
c(node, st, "MemberPattern");
|
|
143
|
+
} else {
|
|
144
|
+
c(node, st);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
base.VariablePattern = ignore;
|
|
148
|
+
base.MemberPattern = skipThrough;
|
|
149
|
+
base.RestElement = function(node, st, c) {
|
|
150
|
+
return c(node.argument, st, "Pattern");
|
|
151
|
+
};
|
|
152
|
+
base.ArrayPattern = function(node, st, c) {
|
|
153
|
+
for (var i = 0, list = node.elements; i < list.length; i += 1) {
|
|
154
|
+
var elt = list[i];
|
|
155
|
+
if (elt) {
|
|
156
|
+
c(elt, st, "Pattern");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
base.ObjectPattern = function(node, st, c) {
|
|
161
|
+
for (var i = 0, list = node.properties; i < list.length; i += 1) {
|
|
162
|
+
var prop = list[i];
|
|
163
|
+
if (prop.type === "Property") {
|
|
164
|
+
if (prop.computed) {
|
|
165
|
+
c(prop.key, st, "Expression");
|
|
166
|
+
}
|
|
167
|
+
c(prop.value, st, "Pattern");
|
|
168
|
+
} else if (prop.type === "RestElement") {
|
|
169
|
+
c(prop.argument, st, "Pattern");
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
base.Expression = skipThrough;
|
|
174
|
+
base.ThisExpression = base.Super = base.MetaProperty = ignore;
|
|
175
|
+
base.ArrayExpression = function(node, st, c) {
|
|
176
|
+
for (var i = 0, list = node.elements; i < list.length; i += 1) {
|
|
177
|
+
var elt = list[i];
|
|
178
|
+
if (elt) {
|
|
179
|
+
c(elt, st, "Expression");
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
base.ObjectExpression = function(node, st, c) {
|
|
184
|
+
for (var i = 0, list = node.properties; i < list.length; i += 1) {
|
|
185
|
+
var prop = list[i];
|
|
186
|
+
c(prop, st);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
base.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration;
|
|
190
|
+
base.SequenceExpression = function(node, st, c) {
|
|
191
|
+
for (var i = 0, list = node.expressions; i < list.length; i += 1) {
|
|
192
|
+
var expr = list[i];
|
|
193
|
+
c(expr, st, "Expression");
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
base.TemplateLiteral = function(node, st, c) {
|
|
197
|
+
for (var i = 0, list = node.quasis; i < list.length; i += 1) {
|
|
198
|
+
var quasi = list[i];
|
|
199
|
+
c(quasi, st);
|
|
200
|
+
}
|
|
201
|
+
for (var i$1 = 0, list$1 = node.expressions; i$1 < list$1.length; i$1 += 1) {
|
|
202
|
+
var expr = list$1[i$1];
|
|
203
|
+
c(expr, st, "Expression");
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
base.TemplateElement = ignore;
|
|
207
|
+
base.UnaryExpression = base.UpdateExpression = function(node, st, c) {
|
|
208
|
+
c(node.argument, st, "Expression");
|
|
209
|
+
};
|
|
210
|
+
base.BinaryExpression = base.LogicalExpression = function(node, st, c) {
|
|
211
|
+
c(node.left, st, "Expression");
|
|
212
|
+
c(node.right, st, "Expression");
|
|
213
|
+
};
|
|
214
|
+
base.AssignmentExpression = base.AssignmentPattern = function(node, st, c) {
|
|
215
|
+
c(node.left, st, "Pattern");
|
|
216
|
+
c(node.right, st, "Expression");
|
|
217
|
+
};
|
|
218
|
+
base.ConditionalExpression = function(node, st, c) {
|
|
219
|
+
c(node.test, st, "Expression");
|
|
220
|
+
c(node.consequent, st, "Expression");
|
|
221
|
+
c(node.alternate, st, "Expression");
|
|
222
|
+
};
|
|
223
|
+
base.NewExpression = base.CallExpression = function(node, st, c) {
|
|
224
|
+
c(node.callee, st, "Expression");
|
|
225
|
+
if (node.arguments) {
|
|
226
|
+
for (var i = 0, list = node.arguments; i < list.length; i += 1) {
|
|
227
|
+
var arg = list[i];
|
|
228
|
+
c(arg, st, "Expression");
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
base.MemberExpression = function(node, st, c) {
|
|
233
|
+
c(node.object, st, "Expression");
|
|
234
|
+
if (node.computed) {
|
|
235
|
+
c(node.property, st, "Expression");
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function(node, st, c) {
|
|
239
|
+
if (node.declaration) {
|
|
240
|
+
c(node.declaration, st, node.type === "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression");
|
|
241
|
+
}
|
|
242
|
+
if (node.source) {
|
|
243
|
+
c(node.source, st, "Expression");
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
base.ExportAllDeclaration = function(node, st, c) {
|
|
247
|
+
if (node.exported) {
|
|
248
|
+
c(node.exported, st);
|
|
249
|
+
}
|
|
250
|
+
c(node.source, st, "Expression");
|
|
251
|
+
};
|
|
252
|
+
base.ImportDeclaration = function(node, st, c) {
|
|
253
|
+
for (var i = 0, list = node.specifiers; i < list.length; i += 1) {
|
|
254
|
+
var spec = list[i];
|
|
255
|
+
c(spec, st);
|
|
256
|
+
}
|
|
257
|
+
c(node.source, st, "Expression");
|
|
258
|
+
};
|
|
259
|
+
base.ImportExpression = function(node, st, c) {
|
|
260
|
+
c(node.source, st, "Expression");
|
|
261
|
+
};
|
|
262
|
+
base.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.PrivateIdentifier = base.Literal = ignore;
|
|
263
|
+
base.TaggedTemplateExpression = function(node, st, c) {
|
|
264
|
+
c(node.tag, st, "Expression");
|
|
265
|
+
c(node.quasi, st, "Expression");
|
|
266
|
+
};
|
|
267
|
+
base.ClassDeclaration = base.ClassExpression = function(node, st, c) {
|
|
268
|
+
return c(node, st, "Class");
|
|
269
|
+
};
|
|
270
|
+
base.Class = function(node, st, c) {
|
|
271
|
+
if (node.id) {
|
|
272
|
+
c(node.id, st, "Pattern");
|
|
273
|
+
}
|
|
274
|
+
if (node.superClass) {
|
|
275
|
+
c(node.superClass, st, "Expression");
|
|
276
|
+
}
|
|
277
|
+
c(node.body, st);
|
|
278
|
+
};
|
|
279
|
+
base.ClassBody = function(node, st, c) {
|
|
280
|
+
for (var i = 0, list = node.body; i < list.length; i += 1) {
|
|
281
|
+
var elt = list[i];
|
|
282
|
+
c(elt, st);
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
base.MethodDefinition = base.PropertyDefinition = base.Property = function(node, st, c) {
|
|
286
|
+
if (node.computed) {
|
|
287
|
+
c(node.key, st, "Expression");
|
|
288
|
+
}
|
|
289
|
+
if (node.value) {
|
|
290
|
+
c(node.value, st, "Expression");
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
export {
|
|
294
|
+
base,
|
|
295
|
+
simple
|
|
296
|
+
};
|
|
297
|
+
//# sourceMappingURL=walk.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walk.es.js","sources":["../../../../../../../../../node_modules/.pnpm/acorn-walk@8.3.4/node_modules/acorn-walk/dist/walk.mjs"],"sourcesContent":["// AST walker module for ESTree compatible trees\n\n// A simple walk is one where you simply specify callbacks to be\n// called on specific nodes. The last two arguments are optional. A\n// simple use would be\n//\n// walk.simple(myTree, {\n// Expression: function(node) { ... }\n// });\n//\n// to do something with all expressions. All ESTree node types\n// can be used to identify node types, as well as Expression and\n// Statement, which denote categories of nodes.\n//\n// The base argument can be used to pass a custom (recursive)\n// walker, and state can be used to give this walked an initial\n// state.\n\nfunction simple(node, visitors, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (visitors[type]) { visitors[type](node, st); }\n })(node, state, override);\n}\n\n// An ancestor walk keeps an array of ancestor nodes (including the\n// current node) and passes them to the callback as third parameter\n// (and also as state parameter when no other state is present).\nfunction ancestor(node, visitors, baseVisitor, state, override) {\n var ancestors = [];\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (visitors[type]) { visitors[type](node, st || ancestors, ancestors); }\n if (isNew) { ancestors.pop(); }\n })(node, state, override);\n}\n\n// A recursive walk is one where your functions override the default\n// walkers. They can modify and replace the state parameter that's\n// threaded through the walk, and can opt how and whether to walk\n// their child nodes (by calling their third argument on these\n// nodes).\nfunction recursive(node, state, funcs, baseVisitor, override) {\n var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor\n ;(function c(node, st, override) {\n visitor[override || node.type](node, st, c);\n })(node, state, override);\n}\n\nfunction makeTest(test) {\n if (typeof test === \"string\")\n { return function (type) { return type === test; } }\n else if (!test)\n { return function () { return true; } }\n else\n { return test }\n}\n\nvar Found = function Found(node, state) { this.node = node; this.state = state; };\n\n// A full walk triggers the callback on each node\nfunction full(node, callback, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base; }\n var last\n ;(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st, type);\n last = node;\n }\n })(node, state, override);\n}\n\n// An fullAncestor walk is like an ancestor walk, but triggers\n// the callback on each node\nfunction fullAncestor(node, callback, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n var ancestors = [], last\n ;(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st || ancestors, ancestors, type);\n last = node;\n }\n if (isNew) { ancestors.pop(); }\n })(node, state);\n}\n\n// Find a node with a given start, end, and type (all are optional,\n// null can be used as wildcard). Returns a {node, state} object, or\n// undefined when it doesn't find a matching node.\nfunction findNodeAt(node, start, end, test, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n test = makeTest(test);\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if ((start == null || node.start <= start) &&\n (end == null || node.end >= end))\n { baseVisitor[type](node, st, c); }\n if ((start == null || node.start === start) &&\n (end == null || node.end === end) &&\n test(type, node))\n { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the innermost node of a given type that contains the given\n// position. Interface similar to findNodeAt.\nfunction findNodeAround(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if (node.start > pos || node.end < pos) { return }\n baseVisitor[type](node, st, c);\n if (test(type, node)) { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node after a given position.\nfunction findNodeAfter(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n if (node.end < pos) { return }\n var type = override || node.type;\n if (node.start >= pos && test(type, node)) { throw new Found(node, st) }\n baseVisitor[type](node, st, c);\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node before a given position.\nfunction findNodeBefore(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n var max\n ;(function c(node, st, override) {\n if (node.start > pos) { return }\n var type = override || node.type;\n if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))\n { max = new Found(node, st); }\n baseVisitor[type](node, st, c);\n })(node, state);\n return max\n}\n\n// Used to create a custom walker. Will fill in all missing node\n// type properties with the defaults.\nfunction make(funcs, baseVisitor) {\n var visitor = Object.create(baseVisitor || base);\n for (var type in funcs) { visitor[type] = funcs[type]; }\n return visitor\n}\n\nfunction skipThrough(node, st, c) { c(node, st); }\nfunction ignore(_node, _st, _c) {}\n\n// Node walkers.\n\nvar base = {};\n\nbase.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var stmt = list[i];\n\n c(stmt, st, \"Statement\");\n }\n};\nbase.Statement = skipThrough;\nbase.EmptyStatement = ignore;\nbase.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression =\n function (node, st, c) { return c(node.expression, st, \"Expression\"); };\nbase.IfStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Statement\");\n if (node.alternate) { c(node.alternate, st, \"Statement\"); }\n};\nbase.LabeledStatement = function (node, st, c) { return c(node.body, st, \"Statement\"); };\nbase.BreakStatement = base.ContinueStatement = ignore;\nbase.WithStatement = function (node, st, c) {\n c(node.object, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.SwitchStatement = function (node, st, c) {\n c(node.discriminant, st, \"Expression\");\n for (var i = 0, list = node.cases; i < list.length; i += 1) {\n var cs = list[i];\n\n c(cs, st);\n }\n};\nbase.SwitchCase = function (node, st, c) {\n if (node.test) { c(node.test, st, \"Expression\"); }\n for (var i = 0, list = node.consequent; i < list.length; i += 1)\n {\n var cons = list[i];\n\n c(cons, st, \"Statement\");\n }\n};\nbase.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {\n if (node.argument) { c(node.argument, st, \"Expression\"); }\n};\nbase.ThrowStatement = base.SpreadElement =\n function (node, st, c) { return c(node.argument, st, \"Expression\"); };\nbase.TryStatement = function (node, st, c) {\n c(node.block, st, \"Statement\");\n if (node.handler) { c(node.handler, st); }\n if (node.finalizer) { c(node.finalizer, st, \"Statement\"); }\n};\nbase.CatchClause = function (node, st, c) {\n if (node.param) { c(node.param, st, \"Pattern\"); }\n c(node.body, st, \"Statement\");\n};\nbase.WhileStatement = base.DoWhileStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForStatement = function (node, st, c) {\n if (node.init) { c(node.init, st, \"ForInit\"); }\n if (node.test) { c(node.test, st, \"Expression\"); }\n if (node.update) { c(node.update, st, \"Expression\"); }\n c(node.body, st, \"Statement\");\n};\nbase.ForInStatement = base.ForOfStatement = function (node, st, c) {\n c(node.left, st, \"ForInit\");\n c(node.right, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForInit = function (node, st, c) {\n if (node.type === \"VariableDeclaration\") { c(node, st); }\n else { c(node, st, \"Expression\"); }\n};\nbase.DebuggerStatement = ignore;\n\nbase.FunctionDeclaration = function (node, st, c) { return c(node, st, \"Function\"); };\nbase.VariableDeclaration = function (node, st, c) {\n for (var i = 0, list = node.declarations; i < list.length; i += 1)\n {\n var decl = list[i];\n\n c(decl, st);\n }\n};\nbase.VariableDeclarator = function (node, st, c) {\n c(node.id, st, \"Pattern\");\n if (node.init) { c(node.init, st, \"Expression\"); }\n};\n\nbase.Function = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n c(param, st, \"Pattern\");\n }\n c(node.body, st, node.expression ? \"Expression\" : \"Statement\");\n};\n\nbase.Pattern = function (node, st, c) {\n if (node.type === \"Identifier\")\n { c(node, st, \"VariablePattern\"); }\n else if (node.type === \"MemberExpression\")\n { c(node, st, \"MemberPattern\"); }\n else\n { c(node, st); }\n};\nbase.VariablePattern = ignore;\nbase.MemberPattern = skipThrough;\nbase.RestElement = function (node, st, c) { return c(node.argument, st, \"Pattern\"); };\nbase.ArrayPattern = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Pattern\"); }\n }\n};\nbase.ObjectPattern = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n if (prop.type === \"Property\") {\n if (prop.computed) { c(prop.key, st, \"Expression\"); }\n c(prop.value, st, \"Pattern\");\n } else if (prop.type === \"RestElement\") {\n c(prop.argument, st, \"Pattern\");\n }\n }\n};\n\nbase.Expression = skipThrough;\nbase.ThisExpression = base.Super = base.MetaProperty = ignore;\nbase.ArrayExpression = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Expression\"); }\n }\n};\nbase.ObjectExpression = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n c(prop, st);\n }\n};\nbase.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration;\nbase.SequenceExpression = function (node, st, c) {\n for (var i = 0, list = node.expressions; i < list.length; i += 1)\n {\n var expr = list[i];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateLiteral = function (node, st, c) {\n for (var i = 0, list = node.quasis; i < list.length; i += 1)\n {\n var quasi = list[i];\n\n c(quasi, st);\n }\n\n for (var i$1 = 0, list$1 = node.expressions; i$1 < list$1.length; i$1 += 1)\n {\n var expr = list$1[i$1];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateElement = ignore;\nbase.UnaryExpression = base.UpdateExpression = function (node, st, c) {\n c(node.argument, st, \"Expression\");\n};\nbase.BinaryExpression = base.LogicalExpression = function (node, st, c) {\n c(node.left, st, \"Expression\");\n c(node.right, st, \"Expression\");\n};\nbase.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {\n c(node.left, st, \"Pattern\");\n c(node.right, st, \"Expression\");\n};\nbase.ConditionalExpression = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Expression\");\n c(node.alternate, st, \"Expression\");\n};\nbase.NewExpression = base.CallExpression = function (node, st, c) {\n c(node.callee, st, \"Expression\");\n if (node.arguments)\n { for (var i = 0, list = node.arguments; i < list.length; i += 1)\n {\n var arg = list[i];\n\n c(arg, st, \"Expression\");\n } }\n};\nbase.MemberExpression = function (node, st, c) {\n c(node.object, st, \"Expression\");\n if (node.computed) { c(node.property, st, \"Expression\"); }\n};\nbase.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {\n if (node.declaration)\n { c(node.declaration, st, node.type === \"ExportNamedDeclaration\" || node.declaration.id ? \"Statement\" : \"Expression\"); }\n if (node.source) { c(node.source, st, \"Expression\"); }\n};\nbase.ExportAllDeclaration = function (node, st, c) {\n if (node.exported)\n { c(node.exported, st); }\n c(node.source, st, \"Expression\");\n};\nbase.ImportDeclaration = function (node, st, c) {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1)\n {\n var spec = list[i];\n\n c(spec, st);\n }\n c(node.source, st, \"Expression\");\n};\nbase.ImportExpression = function (node, st, c) {\n c(node.source, st, \"Expression\");\n};\nbase.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.PrivateIdentifier = base.Literal = ignore;\n\nbase.TaggedTemplateExpression = function (node, st, c) {\n c(node.tag, st, \"Expression\");\n c(node.quasi, st, \"Expression\");\n};\nbase.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, \"Class\"); };\nbase.Class = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n if (node.superClass) { c(node.superClass, st, \"Expression\"); }\n c(node.body, st);\n};\nbase.ClassBody = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var elt = list[i];\n\n c(elt, st);\n }\n};\nbase.MethodDefinition = base.PropertyDefinition = base.Property = function (node, st, c) {\n if (node.computed) { c(node.key, st, \"Expression\"); }\n if (node.value) { c(node.value, st, \"Expression\"); }\n};\n\nexport { ancestor, base, findNodeAfter, findNodeAround, findNodeAt, findNodeBefore, full, fullAncestor, make, recursive, simple };\n"],"names":["node","override"],"mappings":"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","x_google_ignoreList":[0]}
|