@babel/traverse 7.17.9 → 7.23.2
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/README.md +1 -1
- package/lib/cache.js +27 -7
- package/lib/cache.js.map +1 -0
- package/lib/context.js +9 -31
- package/lib/context.js.map +1 -0
- package/lib/hub.js +2 -6
- package/lib/hub.js.map +1 -0
- package/lib/index.js +17 -33
- package/lib/index.js.map +1 -0
- package/lib/path/ancestry.js +3 -42
- package/lib/path/ancestry.js.map +1 -0
- package/lib/path/comments.js +23 -11
- package/lib/path/comments.js.map +1 -0
- package/lib/path/context.js +24 -65
- package/lib/path/context.js.map +1 -0
- package/lib/path/conversion.js +37 -100
- package/lib/path/conversion.js.map +1 -0
- package/lib/path/evaluation.js +69 -123
- package/lib/path/evaluation.js.map +1 -0
- package/lib/path/family.js +5 -76
- package/lib/path/family.js.map +1 -0
- package/lib/path/index.js +26 -90
- package/lib/path/index.js.map +1 -0
- package/lib/path/inference/index.js +26 -33
- package/lib/path/inference/index.js.map +1 -0
- package/lib/path/inference/inferer-reference.js +6 -61
- package/lib/path/inference/inferer-reference.js.map +1 -0
- package/lib/path/inference/inferers.js +32 -86
- package/lib/path/inference/inferers.js.map +1 -0
- package/lib/path/inference/util.js +30 -0
- package/lib/path/inference/util.js.map +1 -0
- package/lib/path/introspection.js +54 -105
- package/lib/path/introspection.js.map +1 -0
- package/lib/path/lib/hoister.js +2 -37
- package/lib/path/lib/hoister.js.map +1 -0
- package/lib/path/lib/removal-hooks.js +4 -4
- package/lib/path/lib/removal-hooks.js.map +1 -0
- package/lib/path/lib/virtual-types-validator.js +161 -0
- package/lib/path/lib/virtual-types-validator.js.map +1 -0
- package/lib/path/lib/virtual-types.js +20 -206
- package/lib/path/lib/virtual-types.js.map +1 -0
- package/lib/path/modification.js +17 -61
- package/lib/path/modification.js.map +1 -0
- package/lib/path/removal.js +9 -22
- package/lib/path/removal.js.map +1 -0
- package/lib/path/replacement.js +17 -72
- package/lib/path/replacement.js.map +1 -0
- package/lib/scope/binding.js +20 -12
- package/lib/scope/binding.js.map +1 -0
- package/lib/scope/index.js +115 -245
- package/lib/scope/index.js.map +1 -0
- package/lib/scope/lib/renamer.js +41 -74
- package/lib/scope/lib/renamer.js.map +1 -0
- package/lib/traverse-node.js +10 -11
- package/lib/traverse-node.js.map +1 -0
- package/lib/types.js +1 -3
- package/lib/types.js.map +1 -0
- package/lib/visitors.js +59 -83
- package/lib/visitors.js.map +1 -0
- package/package.json +13 -11
- package/lib/path/generated/asserts.js +0 -5
- package/lib/path/generated/validators.js +0 -5
- package/lib/path/generated/virtual-types.js +0 -3
- package/scripts/generators/asserts.js +0 -25
- package/scripts/generators/validators.js +0 -42
- package/scripts/generators/virtual-types.js +0 -24
- package/scripts/package.json +0 -1
package/lib/visitors.js
CHANGED
@@ -4,54 +4,52 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.explode = explode;
|
7
|
+
exports.isExplodedVisitor = isExplodedVisitor;
|
7
8
|
exports.merge = merge;
|
8
9
|
exports.verify = verify;
|
9
|
-
|
10
|
-
var virtualTypes = require("./path/lib/virtual-types");
|
11
|
-
|
10
|
+
var virtualTypes = require("./path/lib/virtual-types.js");
|
12
11
|
var _t = require("@babel/types");
|
13
|
-
|
14
12
|
const {
|
15
13
|
DEPRECATED_KEYS,
|
14
|
+
DEPRECATED_ALIASES,
|
16
15
|
FLIPPED_ALIAS_KEYS,
|
17
|
-
TYPES
|
16
|
+
TYPES,
|
17
|
+
__internal__deprecationWarning: deprecationWarning
|
18
18
|
} = _t;
|
19
|
-
|
19
|
+
function isVirtualType(type) {
|
20
|
+
return type in virtualTypes;
|
21
|
+
}
|
22
|
+
function isExplodedVisitor(visitor) {
|
23
|
+
return visitor == null ? void 0 : visitor._exploded;
|
24
|
+
}
|
20
25
|
function explode(visitor) {
|
21
|
-
if (visitor
|
26
|
+
if (isExplodedVisitor(visitor)) return visitor;
|
22
27
|
visitor._exploded = true;
|
23
|
-
|
24
28
|
for (const nodeType of Object.keys(visitor)) {
|
25
29
|
if (shouldIgnoreKey(nodeType)) continue;
|
26
30
|
const parts = nodeType.split("|");
|
27
31
|
if (parts.length === 1) continue;
|
28
32
|
const fns = visitor[nodeType];
|
29
33
|
delete visitor[nodeType];
|
30
|
-
|
31
34
|
for (const part of parts) {
|
32
35
|
visitor[part] = fns;
|
33
36
|
}
|
34
37
|
}
|
35
|
-
|
36
38
|
verify(visitor);
|
37
39
|
delete visitor.__esModule;
|
38
40
|
ensureEntranceObjects(visitor);
|
39
41
|
ensureCallbackArrays(visitor);
|
40
|
-
|
41
42
|
for (const nodeType of Object.keys(visitor)) {
|
42
43
|
if (shouldIgnoreKey(nodeType)) continue;
|
43
|
-
|
44
|
-
if (!wrapper) continue;
|
44
|
+
if (!isVirtualType(nodeType)) continue;
|
45
45
|
const fns = visitor[nodeType];
|
46
|
-
|
47
46
|
for (const type of Object.keys(fns)) {
|
48
|
-
fns[type] = wrapCheck(
|
47
|
+
fns[type] = wrapCheck(nodeType, fns[type]);
|
49
48
|
}
|
50
|
-
|
51
49
|
delete visitor[nodeType];
|
52
|
-
|
53
|
-
if (
|
54
|
-
for (const type of
|
50
|
+
const types = virtualTypes[nodeType];
|
51
|
+
if (types !== null) {
|
52
|
+
for (const type of types) {
|
55
53
|
if (visitor[type]) {
|
56
54
|
mergePair(visitor[type], fns);
|
57
55
|
} else {
|
@@ -62,24 +60,23 @@ function explode(visitor) {
|
|
62
60
|
mergePair(visitor, fns);
|
63
61
|
}
|
64
62
|
}
|
65
|
-
|
66
63
|
for (const nodeType of Object.keys(visitor)) {
|
67
64
|
if (shouldIgnoreKey(nodeType)) continue;
|
68
|
-
const fns = visitor[nodeType];
|
69
65
|
let aliases = FLIPPED_ALIAS_KEYS[nodeType];
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
console.trace(`Visitor defined for ${nodeType} but it has been renamed to ${deprecatedKey}`);
|
66
|
+
if (nodeType in DEPRECATED_KEYS) {
|
67
|
+
const deprecatedKey = DEPRECATED_KEYS[nodeType];
|
68
|
+
deprecationWarning(nodeType, deprecatedKey, "Visitor ");
|
74
69
|
aliases = [deprecatedKey];
|
70
|
+
} else if (nodeType in DEPRECATED_ALIASES) {
|
71
|
+
const deprecatedAlias = DEPRECATED_ALIASES[nodeType];
|
72
|
+
deprecationWarning(nodeType, deprecatedAlias, "Visitor ");
|
73
|
+
aliases = FLIPPED_ALIAS_KEYS[deprecatedAlias];
|
75
74
|
}
|
76
|
-
|
77
75
|
if (!aliases) continue;
|
76
|
+
const fns = visitor[nodeType];
|
78
77
|
delete visitor[nodeType];
|
79
|
-
|
80
78
|
for (const alias of aliases) {
|
81
79
|
const existing = visitor[alias];
|
82
|
-
|
83
80
|
if (existing) {
|
84
81
|
mergePair(existing, fns);
|
85
82
|
} else {
|
@@ -87,35 +84,26 @@ function explode(visitor) {
|
|
87
84
|
}
|
88
85
|
}
|
89
86
|
}
|
90
|
-
|
91
87
|
for (const nodeType of Object.keys(visitor)) {
|
92
88
|
if (shouldIgnoreKey(nodeType)) continue;
|
93
89
|
ensureCallbackArrays(visitor[nodeType]);
|
94
90
|
}
|
95
|
-
|
96
91
|
return visitor;
|
97
92
|
}
|
98
|
-
|
99
93
|
function verify(visitor) {
|
100
94
|
if (visitor._verified) return;
|
101
|
-
|
102
95
|
if (typeof visitor === "function") {
|
103
96
|
throw new Error("You passed `traverse()` a function when it expected a visitor object, " + "are you sure you didn't mean `{ enter: Function }`?");
|
104
97
|
}
|
105
|
-
|
106
98
|
for (const nodeType of Object.keys(visitor)) {
|
107
99
|
if (nodeType === "enter" || nodeType === "exit") {
|
108
100
|
validateVisitorMethods(nodeType, visitor[nodeType]);
|
109
101
|
}
|
110
|
-
|
111
102
|
if (shouldIgnoreKey(nodeType)) continue;
|
112
|
-
|
113
103
|
if (TYPES.indexOf(nodeType) < 0) {
|
114
104
|
throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type`);
|
115
105
|
}
|
116
|
-
|
117
106
|
const visitors = visitor[nodeType];
|
118
|
-
|
119
107
|
if (typeof visitors === "object") {
|
120
108
|
for (const visitorKey of Object.keys(visitors)) {
|
121
109
|
if (visitorKey === "enter" || visitorKey === "exit") {
|
@@ -126,79 +114,67 @@ function verify(visitor) {
|
|
126
114
|
}
|
127
115
|
}
|
128
116
|
}
|
129
|
-
|
130
117
|
visitor._verified = true;
|
131
118
|
}
|
132
|
-
|
133
119
|
function validateVisitorMethods(path, val) {
|
134
120
|
const fns = [].concat(val);
|
135
|
-
|
136
121
|
for (const fn of fns) {
|
137
122
|
if (typeof fn !== "function") {
|
138
123
|
throw new TypeError(`Non-function found defined in ${path} with type ${typeof fn}`);
|
139
124
|
}
|
140
125
|
}
|
141
126
|
}
|
142
|
-
|
143
127
|
function merge(visitors, states = [], wrapper) {
|
144
|
-
const
|
145
|
-
|
128
|
+
const mergedVisitor = {};
|
146
129
|
for (let i = 0; i < visitors.length; i++) {
|
147
|
-
const visitor = visitors[i];
|
130
|
+
const visitor = explode(visitors[i]);
|
148
131
|
const state = states[i];
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
132
|
+
let topVisitor = visitor;
|
133
|
+
if (state || wrapper) {
|
134
|
+
topVisitor = wrapWithStateOrWrapper(topVisitor, state, wrapper);
|
135
|
+
}
|
136
|
+
mergePair(mergedVisitor, topVisitor);
|
137
|
+
for (const key of Object.keys(visitor)) {
|
138
|
+
if (shouldIgnoreKey(key)) continue;
|
139
|
+
let typeVisitor = visitor[key];
|
154
140
|
if (state || wrapper) {
|
155
|
-
|
141
|
+
typeVisitor = wrapWithStateOrWrapper(typeVisitor, state, wrapper);
|
156
142
|
}
|
157
|
-
|
158
|
-
|
159
|
-
mergePair(nodeVisitor, visitorType);
|
143
|
+
const nodeVisitor = mergedVisitor[key] || (mergedVisitor[key] = {});
|
144
|
+
mergePair(nodeVisitor, typeVisitor);
|
160
145
|
}
|
161
146
|
}
|
162
|
-
|
163
|
-
return
|
147
|
+
;
|
148
|
+
return mergedVisitor;
|
164
149
|
}
|
165
|
-
|
166
150
|
function wrapWithStateOrWrapper(oldVisitor, state, wrapper) {
|
167
151
|
const newVisitor = {};
|
168
|
-
|
169
|
-
|
170
|
-
let fns = oldVisitor[key];
|
152
|
+
for (const phase of ["enter", "exit"]) {
|
153
|
+
let fns = oldVisitor[phase];
|
171
154
|
if (!Array.isArray(fns)) continue;
|
172
155
|
fns = fns.map(function (fn) {
|
173
156
|
let newFn = fn;
|
174
|
-
|
175
157
|
if (state) {
|
176
158
|
newFn = function (path) {
|
177
|
-
|
159
|
+
fn.call(state, path, state);
|
178
160
|
};
|
179
161
|
}
|
180
|
-
|
181
162
|
if (wrapper) {
|
182
|
-
newFn = wrapper(state.key,
|
163
|
+
newFn = wrapper(state == null ? void 0 : state.key, phase, newFn);
|
183
164
|
}
|
184
|
-
|
185
165
|
if (newFn !== fn) {
|
186
166
|
newFn.toString = () => fn.toString();
|
187
167
|
}
|
188
|
-
|
189
168
|
return newFn;
|
190
169
|
});
|
191
|
-
newVisitor[
|
170
|
+
newVisitor[phase] = fns;
|
192
171
|
}
|
193
|
-
|
194
172
|
return newVisitor;
|
195
173
|
}
|
196
|
-
|
197
174
|
function ensureEntranceObjects(obj) {
|
198
175
|
for (const key of Object.keys(obj)) {
|
199
176
|
if (shouldIgnoreKey(key)) continue;
|
200
177
|
const fns = obj[key];
|
201
|
-
|
202
178
|
if (typeof fns === "function") {
|
203
179
|
obj[key] = {
|
204
180
|
enter: fns
|
@@ -206,37 +182,37 @@ function ensureEntranceObjects(obj) {
|
|
206
182
|
}
|
207
183
|
}
|
208
184
|
}
|
209
|
-
|
210
185
|
function ensureCallbackArrays(obj) {
|
211
186
|
if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];
|
212
187
|
if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];
|
213
188
|
}
|
214
|
-
|
215
|
-
function wrapCheck(wrapper, fn) {
|
189
|
+
function wrapCheck(nodeType, fn) {
|
216
190
|
const newFn = function (path) {
|
217
|
-
if (
|
191
|
+
if (path[`is${nodeType}`]()) {
|
218
192
|
return fn.apply(this, arguments);
|
219
193
|
}
|
220
194
|
};
|
221
|
-
|
222
195
|
newFn.toString = () => fn.toString();
|
223
|
-
|
224
196
|
return newFn;
|
225
197
|
}
|
226
|
-
|
227
198
|
function shouldIgnoreKey(key) {
|
228
199
|
if (key[0] === "_") return true;
|
229
200
|
if (key === "enter" || key === "exit" || key === "shouldSkip") return true;
|
230
|
-
|
231
|
-
if (key === "denylist" || key === "noScope" || key === "skipKeys" || key === "blacklist") {
|
201
|
+
if (key === "denylist" || key === "noScope" || key === "skipKeys") {
|
232
202
|
return true;
|
233
203
|
}
|
234
|
-
|
204
|
+
{
|
205
|
+
if (key === "blacklist") {
|
206
|
+
return true;
|
207
|
+
}
|
208
|
+
}
|
235
209
|
return false;
|
236
210
|
}
|
237
|
-
|
238
211
|
function mergePair(dest, src) {
|
239
|
-
for (const
|
240
|
-
|
212
|
+
for (const phase of ["enter", "exit"]) {
|
213
|
+
if (!src[phase]) continue;
|
214
|
+
dest[phase] = [].concat(dest[phase] || [], src[phase]);
|
241
215
|
}
|
242
|
-
}
|
216
|
+
}
|
217
|
+
|
218
|
+
//# sourceMappingURL=visitors.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["virtualTypes","require","_t","DEPRECATED_KEYS","DEPRECATED_ALIASES","FLIPPED_ALIAS_KEYS","TYPES","__internal__deprecationWarning","deprecationWarning","isVirtualType","type","isExplodedVisitor","visitor","_exploded","explode","nodeType","Object","keys","shouldIgnoreKey","parts","split","length","fns","part","verify","__esModule","ensureEntranceObjects","ensureCallbackArrays","wrapCheck","types","mergePair","aliases","deprecatedKey","deprecatedAlias","alias","existing","assign","_verified","Error","validateVisitorMethods","indexOf","visitors","visitorKey","path","val","concat","fn","TypeError","merge","states","wrapper","mergedVisitor","i","state","topVisitor","wrapWithStateOrWrapper","key","typeVisitor","nodeVisitor","oldVisitor","newVisitor","phase","Array","isArray","map","newFn","call","toString","obj","enter","exit","apply","arguments","dest","src"],"sources":["../src/visitors.ts"],"sourcesContent":["import * as virtualTypes from \"./path/lib/virtual-types.ts\";\nimport type { Node } from \"@babel/types\";\nimport {\n DEPRECATED_KEYS,\n DEPRECATED_ALIASES,\n FLIPPED_ALIAS_KEYS,\n TYPES,\n __internal__deprecationWarning as deprecationWarning,\n} from \"@babel/types\";\nimport type { ExplodedVisitor, NodePath, Visitor } from \"./index.ts\";\nimport type { ExplVisitNode, VisitNodeFunction, VisitPhase } from \"./types.ts\";\n\ntype VIRTUAL_TYPES = keyof typeof virtualTypes;\nfunction isVirtualType(type: string): type is VIRTUAL_TYPES {\n return type in virtualTypes;\n}\nexport type VisitWrapper<S = any> = (\n stateName: string | undefined,\n visitorType: VisitPhase,\n callback: VisitNodeFunction<S, Node>,\n) => VisitNodeFunction<S, Node>;\n\nexport function isExplodedVisitor(\n visitor: Visitor,\n): visitor is ExplodedVisitor {\n // @ts-expect-error _exploded is not defined on non-exploded Visitor\n return visitor?._exploded;\n}\n\n/**\n * explode() will take a visitor object with all of the various shorthands\n * that we support, and validates & normalizes it into a common format, ready\n * to be used in traversal\n *\n * The various shorthands are:\n * * `Identifier() { ... }` -> `Identifier: { enter() { ... } }`\n * * `\"Identifier|NumericLiteral\": { ... }` -> `Identifier: { ... }, NumericLiteral: { ... }`\n * * Aliases in `@babel/types`: e.g. `Property: { ... }` -> `ObjectProperty: { ... }, ClassProperty: { ... }`\n * Other normalizations are:\n * * Visitors of virtual types are wrapped, so that they are only visited when\n * their dynamic check passes\n * * `enter` and `exit` functions are wrapped in arrays, to ease merging of\n * visitors\n */\nexport function explode<S>(visitor: Visitor<S>): ExplodedVisitor<S> {\n if (isExplodedVisitor(visitor)) return visitor;\n // @ts-expect-error `visitor` will be cast to ExplodedVisitor by this function\n visitor._exploded = true;\n\n // normalise pipes\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n const parts: Array<string> = nodeType.split(\"|\");\n if (parts.length === 1) continue;\n\n const fns = visitor[nodeType];\n delete visitor[nodeType];\n\n for (const part of parts) {\n // @ts-expect-error part will be verified by `verify` later\n visitor[part] = fns;\n }\n }\n\n // verify data structure\n verify(visitor);\n\n // make sure there's no __esModule type since this is because we're using loose mode\n // and it sets __esModule to be enumerable on all modules :(\n // @ts-expect-error ESModule interop\n delete visitor.__esModule;\n\n // ensure visitors are objects\n ensureEntranceObjects(visitor);\n\n // ensure enter/exit callbacks are arrays\n ensureCallbackArrays(visitor);\n\n // add type wrappers\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n if (!isVirtualType(nodeType)) continue;\n\n // wrap all the functions\n const fns = visitor[nodeType];\n for (const type of Object.keys(fns)) {\n // @ts-expect-error normalised as VisitNodeObject\n fns[type] = wrapCheck(nodeType, fns[type]);\n }\n\n // clear it from the visitor\n delete visitor[nodeType];\n\n const types = virtualTypes[nodeType];\n if (types !== null) {\n for (const type of types) {\n // merge the visitor if necessary or just put it back in\n if (visitor[type]) {\n mergePair(visitor[type], fns);\n } else {\n // @ts-expect-error Expression produces too complex union\n visitor[type] = fns;\n }\n }\n } else {\n mergePair(visitor, fns);\n }\n }\n\n // add aliases\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n let aliases = FLIPPED_ALIAS_KEYS[nodeType];\n\n if (nodeType in DEPRECATED_KEYS) {\n const deprecatedKey = DEPRECATED_KEYS[nodeType];\n deprecationWarning(nodeType, deprecatedKey, \"Visitor \");\n aliases = [deprecatedKey];\n } else if (nodeType in DEPRECATED_ALIASES) {\n const deprecatedAlias =\n DEPRECATED_ALIASES[nodeType as keyof typeof DEPRECATED_ALIASES];\n deprecationWarning(nodeType, deprecatedAlias, \"Visitor \");\n aliases = FLIPPED_ALIAS_KEYS[deprecatedAlias];\n }\n\n if (!aliases) continue;\n\n const fns = visitor[nodeType];\n // clear it from the visitor\n delete visitor[nodeType];\n\n for (const alias of aliases) {\n const existing = visitor[alias];\n if (existing) {\n mergePair(existing, fns);\n } else {\n // @ts-expect-error Expression produces a union type that is too complex to represent.\n visitor[alias] = { ...fns };\n }\n }\n }\n\n for (const nodeType of Object.keys(visitor)) {\n if (shouldIgnoreKey(nodeType)) continue;\n\n ensureCallbackArrays(\n // @ts-expect-error nodeType must present in visitor after previous validations\n visitor[nodeType],\n );\n }\n\n // @ts-expect-error explosion has been performed\n return visitor as ExplodedVisitor;\n}\n\nexport function verify(visitor: Visitor) {\n // @ts-expect-error _verified is not defined on non-verified Visitor.\n // TODO: unify _verified and _exploded.\n if (visitor._verified) return;\n\n if (typeof visitor === \"function\") {\n throw new Error(\n \"You passed `traverse()` a function when it expected a visitor object, \" +\n \"are you sure you didn't mean `{ enter: Function }`?\",\n );\n }\n\n for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n if (nodeType === \"enter\" || nodeType === \"exit\") {\n validateVisitorMethods(nodeType, visitor[nodeType]);\n }\n\n if (shouldIgnoreKey(nodeType)) continue;\n\n if (TYPES.indexOf(nodeType) < 0) {\n throw new Error(\n `You gave us a visitor for the node type ${nodeType} but it's not a valid type`,\n );\n }\n\n const visitors = visitor[nodeType];\n if (typeof visitors === \"object\") {\n for (const visitorKey of Object.keys(visitors)) {\n if (visitorKey === \"enter\" || visitorKey === \"exit\") {\n // verify that it just contains functions\n validateVisitorMethods(\n `${nodeType}.${visitorKey}`,\n visitors[visitorKey],\n );\n } else {\n throw new Error(\n \"You passed `traverse()` a visitor object with the property \" +\n `${nodeType} that has the invalid property ${visitorKey}`,\n );\n }\n }\n }\n }\n\n // @ts-expect-error _verified is not defined on non-verified Visitor.\n // TODO: unify _verified and _exploded.\n visitor._verified = true;\n}\n\nfunction validateVisitorMethods(\n path: string,\n val: any,\n): asserts val is Function | Function[] {\n const fns = [].concat(val);\n for (const fn of fns) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\n `Non-function found defined in ${path} with type ${typeof fn}`,\n );\n }\n }\n}\n\nexport function merge<State>(\n visitors: Visitor<State>[],\n): ExplodedVisitor<State>;\nexport function merge(\n visitors: Visitor<unknown>[],\n states?: any[],\n wrapper?: Function | null,\n): ExplodedVisitor<unknown>;\nexport function merge(\n visitors: any[],\n states: any[] = [],\n wrapper?: VisitWrapper | null,\n): ExplodedVisitor {\n // @ts-expect-error don't bother with internal flags so it can work with earlier @babel/core validations\n const mergedVisitor: ExplodedVisitor = {};\n\n for (let i = 0; i < visitors.length; i++) {\n const visitor = explode(visitors[i]);\n const state = states[i];\n\n let topVisitor: ExplVisitNode<unknown, Node> = visitor;\n if (state || wrapper) {\n topVisitor = wrapWithStateOrWrapper(topVisitor, state, wrapper);\n }\n mergePair(mergedVisitor, topVisitor);\n\n for (const key of Object.keys(visitor) as (keyof ExplodedVisitor)[]) {\n if (shouldIgnoreKey(key)) continue;\n\n let typeVisitor = visitor[key];\n\n // if we have state or wrapper then overload the callbacks to take it\n if (state || wrapper) {\n typeVisitor = wrapWithStateOrWrapper(typeVisitor, state, wrapper);\n }\n\n const nodeVisitor = (mergedVisitor[key] ||= {});\n mergePair(nodeVisitor, typeVisitor);\n }\n }\n\n if (process.env.BABEL_8_BREAKING) {\n return {\n ...mergedVisitor,\n _exploded: true,\n _verified: true,\n };\n }\n\n return mergedVisitor;\n}\n\nfunction wrapWithStateOrWrapper<State>(\n oldVisitor: ExplVisitNode<State, Node>,\n state: State | null,\n wrapper?: VisitWrapper<State> | null,\n): ExplVisitNode<State, Node> {\n const newVisitor: ExplVisitNode<State, Node> = {};\n\n for (const phase of [\"enter\", \"exit\"] as VisitPhase[]) {\n let fns = oldVisitor[phase];\n\n // not an enter/exit array of callbacks\n if (!Array.isArray(fns)) continue;\n\n fns = fns.map(function (fn) {\n let newFn = fn;\n\n if (state) {\n newFn = function (path: NodePath) {\n fn.call(state, path, state);\n };\n }\n\n if (wrapper) {\n // @ts-expect-error Fixme: actually PluginPass.key (aka pluginAlias)?\n newFn = wrapper(state?.key, phase, newFn);\n }\n\n // Override toString in case this function is printed, we want to print the wrapped function, same as we do in `wrapCheck`\n if (newFn !== fn) {\n newFn.toString = () => fn.toString();\n }\n\n return newFn;\n });\n\n newVisitor[phase] = fns;\n }\n\n return newVisitor;\n}\n\nfunction ensureEntranceObjects(obj: Visitor) {\n for (const key of Object.keys(obj) as (keyof Visitor)[]) {\n if (shouldIgnoreKey(key)) continue;\n\n const fns = obj[key];\n if (typeof fns === \"function\") {\n // @ts-expect-error: Expression produces a union type that is too complex to represent.\n obj[key] = { enter: fns };\n }\n }\n}\n\nfunction ensureCallbackArrays(obj: Visitor) {\n if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];\n if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];\n}\n\nfunction wrapCheck(nodeType: VIRTUAL_TYPES, fn: Function) {\n const newFn = function (this: unknown, path: NodePath) {\n // @ts-expect-error: Expression produces a union type that is too complex to represent.\n if (path[`is${nodeType}`]()) {\n return fn.apply(this, arguments);\n }\n };\n newFn.toString = () => fn.toString();\n return newFn;\n}\n\nfunction shouldIgnoreKey(\n key: string,\n): key is\n | `_${string}`\n | \"enter\"\n | \"exit\"\n | \"shouldSkip\"\n | \"denylist\"\n | \"noScope\"\n | \"skipKeys\"\n | \"blacklist\" {\n // internal/hidden key\n if (key[0] === \"_\") return true;\n\n // ignore function keys\n if (key === \"enter\" || key === \"exit\" || key === \"shouldSkip\") return true;\n\n // ignore other options\n if (key === \"denylist\" || key === \"noScope\" || key === \"skipKeys\") {\n return true;\n }\n\n if (!process.env.BABEL_8_BREAKING) {\n if (key === \"blacklist\") {\n return true;\n }\n }\n\n return false;\n}\n\n/*\nfunction mergePair(\n dest: ExplVisitNode<unknown, Node>,\n src: ExplVisitNode<unknown, Node>,\n);\n*/\nfunction mergePair(dest: any, src: any) {\n for (const phase of [\"enter\", \"exit\"] as VisitPhase[]) {\n if (!src[phase]) continue;\n dest[phase] = [].concat(dest[phase] || [], src[phase]);\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@babel/traverse",
|
3
|
-
"version": "7.
|
3
|
+
"version": "7.23.2",
|
4
4
|
"description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes",
|
5
5
|
"author": "The Babel Team (https://babel.dev/team)",
|
6
6
|
"homepage": "https://babel.dev/docs/en/next/babel-traverse",
|
@@ -16,21 +16,23 @@
|
|
16
16
|
},
|
17
17
|
"main": "./lib/index.js",
|
18
18
|
"dependencies": {
|
19
|
-
"@babel/code-frame": "^7.
|
20
|
-
"@babel/generator": "^7.
|
21
|
-
"@babel/helper-environment-visitor": "^7.
|
22
|
-
"@babel/helper-function-name": "^7.
|
23
|
-
"@babel/helper-hoist-variables": "^7.
|
24
|
-
"@babel/helper-split-export-declaration": "^7.
|
25
|
-
"@babel/parser": "^7.
|
26
|
-
"@babel/types": "^7.
|
19
|
+
"@babel/code-frame": "^7.22.13",
|
20
|
+
"@babel/generator": "^7.23.0",
|
21
|
+
"@babel/helper-environment-visitor": "^7.22.20",
|
22
|
+
"@babel/helper-function-name": "^7.23.0",
|
23
|
+
"@babel/helper-hoist-variables": "^7.22.5",
|
24
|
+
"@babel/helper-split-export-declaration": "^7.22.6",
|
25
|
+
"@babel/parser": "^7.23.0",
|
26
|
+
"@babel/types": "^7.23.0",
|
27
27
|
"debug": "^4.1.0",
|
28
28
|
"globals": "^11.1.0"
|
29
29
|
},
|
30
30
|
"devDependencies": {
|
31
|
-
"@babel/
|
31
|
+
"@babel/core": "^7.23.0",
|
32
|
+
"@babel/helper-plugin-test-runner": "^7.22.5"
|
32
33
|
},
|
33
34
|
"engines": {
|
34
35
|
"node": ">=6.9.0"
|
35
|
-
}
|
36
|
+
},
|
37
|
+
"type": "commonjs"
|
36
38
|
}
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import t from "@babel/types";
|
2
|
-
|
3
|
-
export default function generateAsserts() {
|
4
|
-
let output = `/*
|
5
|
-
* This file is auto-generated! Do not modify it directly.
|
6
|
-
* To re-generate run 'make build'
|
7
|
-
*/
|
8
|
-
import * as t from "@babel/types";
|
9
|
-
import NodePath from "../index";
|
10
|
-
|
11
|
-
|
12
|
-
export interface NodePathAssetions {`;
|
13
|
-
|
14
|
-
for (const type of [...t.TYPES].sort()) {
|
15
|
-
output += `
|
16
|
-
assert${type}(
|
17
|
-
opts?: object,
|
18
|
-
): asserts this is NodePath<t.${type}>;`;
|
19
|
-
}
|
20
|
-
|
21
|
-
output += `
|
22
|
-
}`;
|
23
|
-
|
24
|
-
return output;
|
25
|
-
}
|
@@ -1,42 +0,0 @@
|
|
1
|
-
import t from "@babel/types";
|
2
|
-
import virtualTypes from "../../lib/path/lib/virtual-types.js";
|
3
|
-
|
4
|
-
export default function generateValidators() {
|
5
|
-
let output = `/*
|
6
|
-
* This file is auto-generated! Do not modify it directly.
|
7
|
-
* To re-generate run 'make build'
|
8
|
-
*/
|
9
|
-
import * as t from "@babel/types";
|
10
|
-
import NodePath from "../index";
|
11
|
-
import type { VirtualTypeAliases } from "./virtual-types";
|
12
|
-
|
13
|
-
export interface NodePathValidators {
|
14
|
-
`;
|
15
|
-
|
16
|
-
for (const type of [...t.TYPES].sort()) {
|
17
|
-
output += `is${type}(opts?: object): this is NodePath<t.${type}>;`;
|
18
|
-
}
|
19
|
-
|
20
|
-
for (const type of Object.keys(virtualTypes)) {
|
21
|
-
const { types } = virtualTypes[type];
|
22
|
-
if (type[0] === "_") continue;
|
23
|
-
if (t.NODE_FIELDS[type] || t.FLIPPED_ALIAS_KEYS[type]) {
|
24
|
-
output += `is${type}(opts?: object): this is NodePath<t.${type}>;`;
|
25
|
-
} else if (types /* in VirtualTypeAliases */) {
|
26
|
-
output += `is${type}(opts?: object): this is NodePath<VirtualTypeAliases["${type}"]>;`;
|
27
|
-
} else {
|
28
|
-
// if it don't have types, then VirtualTypeAliases[type] is t.Node
|
29
|
-
// which TS marked as always true
|
30
|
-
// eg. if (path.isBlockScope()) return;
|
31
|
-
// path resolved to `never` here
|
32
|
-
// so we have to return boolean instead of this is NodePath<t.Node> here
|
33
|
-
output += `is${type}(opts?: object): boolean;`;
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
output += `
|
38
|
-
}
|
39
|
-
`;
|
40
|
-
|
41
|
-
return output;
|
42
|
-
}
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import virtualTypes from "../../lib/path/lib/virtual-types.js";
|
2
|
-
|
3
|
-
export default function generateValidators() {
|
4
|
-
let output = `/*
|
5
|
-
* This file is auto-generated! Do not modify it directly.
|
6
|
-
* To re-generate run 'make build'
|
7
|
-
*/
|
8
|
-
import * as t from "@babel/types";
|
9
|
-
|
10
|
-
export interface VirtualTypeAliases {
|
11
|
-
`;
|
12
|
-
|
13
|
-
for (const type of Object.keys(virtualTypes)) {
|
14
|
-
output += ` ${type}: ${(virtualTypes[type].types || ["Node"])
|
15
|
-
.map(t => `t.${t}`)
|
16
|
-
.join(" | ")};`;
|
17
|
-
}
|
18
|
-
|
19
|
-
output += `
|
20
|
-
}
|
21
|
-
`;
|
22
|
-
|
23
|
-
return output;
|
24
|
-
}
|
package/scripts/package.json
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{ "type": "module" }
|