@babel/traverse 7.1.0 → 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/LICENSE +1 -1
- package/README.md +1 -1
- package/lib/cache.js +27 -7
- package/lib/cache.js.map +1 -0
- package/lib/context.js +22 -59
- package/lib/context.js.map +1 -0
- package/lib/hub.js +2 -6
- package/lib/hub.js.map +1 -0
- package/lib/index.js +42 -77
- package/lib/index.js.map +1 -0
- package/lib/path/ancestry.js +15 -62
- package/lib/path/ancestry.js.map +1 -0
- package/lib/path/comments.js +31 -24
- package/lib/path/comments.js.map +1 -0
- package/lib/path/context.js +68 -91
- package/lib/path/context.js.map +1 -0
- package/lib/path/conversion.js +275 -273
- package/lib/path/conversion.js.map +1 -0
- package/lib/path/evaluation.js +84 -149
- package/lib/path/evaluation.js.map +1 -0
- package/lib/path/family.js +189 -94
- package/lib/path/family.js.map +1 -0
- package/lib/path/index.js +106 -132
- package/lib/path/index.js.map +1 -0
- package/lib/path/inference/index.js +81 -64
- package/lib/path/inference/index.js.map +1 -0
- package/lib/path/inference/inferer-reference.js +22 -52
- package/lib/path/inference/inferer-reference.js.map +1 -0
- package/lib/path/inference/inferers.js +110 -125
- 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 +182 -168
- package/lib/path/introspection.js.map +1 -0
- package/lib/path/lib/hoister.js +37 -54
- 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 +21 -189
- package/lib/path/lib/virtual-types.js.map +1 -0
- package/lib/path/modification.js +103 -98
- package/lib/path/modification.js.map +1 -0
- package/lib/path/removal.js +18 -23
- package/lib/path/removal.js.map +1 -0
- package/lib/path/replacement.js +91 -144
- package/lib/path/replacement.js.map +1 -0
- package/lib/scope/binding.js +28 -16
- package/lib/scope/binding.js.map +1 -0
- package/lib/scope/index.js +407 -414
- package/lib/scope/index.js.map +1 -0
- package/lib/scope/lib/renamer.js +45 -70
- package/lib/scope/lib/renamer.js.map +1 -0
- package/lib/traverse-node.js +29 -0
- package/lib/traverse-node.js.map +1 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/visitors.js +77 -113
- package/lib/visitors.js.map +1 -0
- package/package.json +28 -17
package/lib/visitors.js
CHANGED
@@ -4,70 +4,52 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.explode = explode;
|
7
|
-
exports.
|
7
|
+
exports.isExplodedVisitor = isExplodedVisitor;
|
8
8
|
exports.merge = merge;
|
9
|
-
|
10
|
-
var virtualTypes =
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
9
|
+
exports.verify = verify;
|
10
|
+
var virtualTypes = require("./path/lib/virtual-types.js");
|
11
|
+
var _t = require("@babel/types");
|
12
|
+
const {
|
13
|
+
DEPRECATED_KEYS,
|
14
|
+
DEPRECATED_ALIASES,
|
15
|
+
FLIPPED_ALIAS_KEYS,
|
16
|
+
TYPES,
|
17
|
+
__internal__deprecationWarning: deprecationWarning
|
18
|
+
} = _t;
|
19
|
+
function isVirtualType(type) {
|
20
|
+
return type in virtualTypes;
|
20
21
|
}
|
21
|
-
|
22
|
-
|
23
|
-
const data = _interopRequireDefault(require("lodash/clone"));
|
24
|
-
|
25
|
-
_clone = function () {
|
26
|
-
return data;
|
27
|
-
};
|
28
|
-
|
29
|
-
return data;
|
22
|
+
function isExplodedVisitor(visitor) {
|
23
|
+
return visitor == null ? void 0 : visitor._exploded;
|
30
24
|
}
|
31
|
-
|
32
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
33
|
-
|
34
|
-
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
35
|
-
|
36
25
|
function explode(visitor) {
|
37
|
-
if (visitor
|
26
|
+
if (isExplodedVisitor(visitor)) return visitor;
|
38
27
|
visitor._exploded = true;
|
39
|
-
|
40
|
-
for (const nodeType in visitor) {
|
28
|
+
for (const nodeType of Object.keys(visitor)) {
|
41
29
|
if (shouldIgnoreKey(nodeType)) continue;
|
42
30
|
const parts = nodeType.split("|");
|
43
31
|
if (parts.length === 1) continue;
|
44
32
|
const fns = visitor[nodeType];
|
45
33
|
delete visitor[nodeType];
|
46
|
-
|
47
34
|
for (const part of parts) {
|
48
35
|
visitor[part] = fns;
|
49
36
|
}
|
50
37
|
}
|
51
|
-
|
52
38
|
verify(visitor);
|
53
39
|
delete visitor.__esModule;
|
54
40
|
ensureEntranceObjects(visitor);
|
55
41
|
ensureCallbackArrays(visitor);
|
56
|
-
|
57
42
|
for (const nodeType of Object.keys(visitor)) {
|
58
43
|
if (shouldIgnoreKey(nodeType)) continue;
|
59
|
-
|
60
|
-
if (!wrapper) continue;
|
44
|
+
if (!isVirtualType(nodeType)) continue;
|
61
45
|
const fns = visitor[nodeType];
|
62
|
-
|
63
|
-
|
64
|
-
fns[type] = wrapCheck(wrapper, fns[type]);
|
46
|
+
for (const type of Object.keys(fns)) {
|
47
|
+
fns[type] = wrapCheck(nodeType, fns[type]);
|
65
48
|
}
|
66
|
-
|
67
49
|
delete visitor[nodeType];
|
68
|
-
|
69
|
-
if (
|
70
|
-
for (const type of
|
50
|
+
const types = virtualTypes[nodeType];
|
51
|
+
if (types !== null) {
|
52
|
+
for (const type of types) {
|
71
53
|
if (visitor[type]) {
|
72
54
|
mergePair(visitor[type], fns);
|
73
55
|
} else {
|
@@ -78,62 +60,52 @@ function explode(visitor) {
|
|
78
60
|
mergePair(visitor, fns);
|
79
61
|
}
|
80
62
|
}
|
81
|
-
|
82
|
-
for (const nodeType in visitor) {
|
63
|
+
for (const nodeType of Object.keys(visitor)) {
|
83
64
|
if (shouldIgnoreKey(nodeType)) continue;
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
65
|
+
let aliases = FLIPPED_ALIAS_KEYS[nodeType];
|
66
|
+
if (nodeType in DEPRECATED_KEYS) {
|
67
|
+
const deprecatedKey = DEPRECATED_KEYS[nodeType];
|
68
|
+
deprecationWarning(nodeType, deprecatedKey, "Visitor ");
|
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];
|
91
74
|
}
|
92
|
-
|
93
75
|
if (!aliases) continue;
|
76
|
+
const fns = visitor[nodeType];
|
94
77
|
delete visitor[nodeType];
|
95
|
-
|
96
78
|
for (const alias of aliases) {
|
97
79
|
const existing = visitor[alias];
|
98
|
-
|
99
80
|
if (existing) {
|
100
81
|
mergePair(existing, fns);
|
101
82
|
} else {
|
102
|
-
visitor[alias] = (
|
83
|
+
visitor[alias] = Object.assign({}, fns);
|
103
84
|
}
|
104
85
|
}
|
105
86
|
}
|
106
|
-
|
107
|
-
for (const nodeType in visitor) {
|
87
|
+
for (const nodeType of Object.keys(visitor)) {
|
108
88
|
if (shouldIgnoreKey(nodeType)) continue;
|
109
89
|
ensureCallbackArrays(visitor[nodeType]);
|
110
90
|
}
|
111
|
-
|
112
91
|
return visitor;
|
113
92
|
}
|
114
|
-
|
115
93
|
function verify(visitor) {
|
116
94
|
if (visitor._verified) return;
|
117
|
-
|
118
95
|
if (typeof visitor === "function") {
|
119
96
|
throw new Error("You passed `traverse()` a function when it expected a visitor object, " + "are you sure you didn't mean `{ enter: Function }`?");
|
120
97
|
}
|
121
|
-
|
122
|
-
for (const nodeType in visitor) {
|
98
|
+
for (const nodeType of Object.keys(visitor)) {
|
123
99
|
if (nodeType === "enter" || nodeType === "exit") {
|
124
100
|
validateVisitorMethods(nodeType, visitor[nodeType]);
|
125
101
|
}
|
126
|
-
|
127
102
|
if (shouldIgnoreKey(nodeType)) continue;
|
128
|
-
|
129
|
-
if (t().TYPES.indexOf(nodeType) < 0) {
|
103
|
+
if (TYPES.indexOf(nodeType) < 0) {
|
130
104
|
throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type`);
|
131
105
|
}
|
132
|
-
|
133
106
|
const visitors = visitor[nodeType];
|
134
|
-
|
135
107
|
if (typeof visitors === "object") {
|
136
|
-
for (const visitorKey
|
108
|
+
for (const visitorKey of Object.keys(visitors)) {
|
137
109
|
if (visitorKey === "enter" || visitorKey === "exit") {
|
138
110
|
validateVisitorMethods(`${nodeType}.${visitorKey}`, visitors[visitorKey]);
|
139
111
|
} else {
|
@@ -142,75 +114,67 @@ function verify(visitor) {
|
|
142
114
|
}
|
143
115
|
}
|
144
116
|
}
|
145
|
-
|
146
117
|
visitor._verified = true;
|
147
118
|
}
|
148
|
-
|
149
119
|
function validateVisitorMethods(path, val) {
|
150
120
|
const fns = [].concat(val);
|
151
|
-
|
152
121
|
for (const fn of fns) {
|
153
122
|
if (typeof fn !== "function") {
|
154
123
|
throw new TypeError(`Non-function found defined in ${path} with type ${typeof fn}`);
|
155
124
|
}
|
156
125
|
}
|
157
126
|
}
|
158
|
-
|
159
127
|
function merge(visitors, states = [], wrapper) {
|
160
|
-
const
|
161
|
-
|
128
|
+
const mergedVisitor = {};
|
162
129
|
for (let i = 0; i < visitors.length; i++) {
|
163
|
-
const visitor = visitors[i];
|
130
|
+
const visitor = explode(visitors[i]);
|
164
131
|
const state = states[i];
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
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];
|
170
140
|
if (state || wrapper) {
|
171
|
-
|
141
|
+
typeVisitor = wrapWithStateOrWrapper(typeVisitor, state, wrapper);
|
172
142
|
}
|
173
|
-
|
174
|
-
|
175
|
-
mergePair(nodeVisitor, visitorType);
|
143
|
+
const nodeVisitor = mergedVisitor[key] || (mergedVisitor[key] = {});
|
144
|
+
mergePair(nodeVisitor, typeVisitor);
|
176
145
|
}
|
177
146
|
}
|
178
|
-
|
179
|
-
return
|
147
|
+
;
|
148
|
+
return mergedVisitor;
|
180
149
|
}
|
181
|
-
|
182
150
|
function wrapWithStateOrWrapper(oldVisitor, state, wrapper) {
|
183
151
|
const newVisitor = {};
|
184
|
-
|
185
|
-
|
186
|
-
let fns = oldVisitor[key];
|
152
|
+
for (const phase of ["enter", "exit"]) {
|
153
|
+
let fns = oldVisitor[phase];
|
187
154
|
if (!Array.isArray(fns)) continue;
|
188
155
|
fns = fns.map(function (fn) {
|
189
156
|
let newFn = fn;
|
190
|
-
|
191
157
|
if (state) {
|
192
158
|
newFn = function (path) {
|
193
|
-
|
159
|
+
fn.call(state, path, state);
|
194
160
|
};
|
195
161
|
}
|
196
|
-
|
197
162
|
if (wrapper) {
|
198
|
-
newFn = wrapper(state.key,
|
163
|
+
newFn = wrapper(state == null ? void 0 : state.key, phase, newFn);
|
164
|
+
}
|
165
|
+
if (newFn !== fn) {
|
166
|
+
newFn.toString = () => fn.toString();
|
199
167
|
}
|
200
|
-
|
201
168
|
return newFn;
|
202
169
|
});
|
203
|
-
newVisitor[
|
170
|
+
newVisitor[phase] = fns;
|
204
171
|
}
|
205
|
-
|
206
172
|
return newVisitor;
|
207
173
|
}
|
208
|
-
|
209
174
|
function ensureEntranceObjects(obj) {
|
210
|
-
for (const key
|
175
|
+
for (const key of Object.keys(obj)) {
|
211
176
|
if (shouldIgnoreKey(key)) continue;
|
212
177
|
const fns = obj[key];
|
213
|
-
|
214
178
|
if (typeof fns === "function") {
|
215
179
|
obj[key] = {
|
216
180
|
enter: fns
|
@@ -218,37 +182,37 @@ function ensureEntranceObjects(obj) {
|
|
218
182
|
}
|
219
183
|
}
|
220
184
|
}
|
221
|
-
|
222
185
|
function ensureCallbackArrays(obj) {
|
223
186
|
if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];
|
224
187
|
if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];
|
225
188
|
}
|
226
|
-
|
227
|
-
function wrapCheck(wrapper, fn) {
|
189
|
+
function wrapCheck(nodeType, fn) {
|
228
190
|
const newFn = function (path) {
|
229
|
-
if (
|
191
|
+
if (path[`is${nodeType}`]()) {
|
230
192
|
return fn.apply(this, arguments);
|
231
193
|
}
|
232
194
|
};
|
233
|
-
|
234
195
|
newFn.toString = () => fn.toString();
|
235
|
-
|
236
196
|
return newFn;
|
237
197
|
}
|
238
|
-
|
239
198
|
function shouldIgnoreKey(key) {
|
240
199
|
if (key[0] === "_") return true;
|
241
200
|
if (key === "enter" || key === "exit" || key === "shouldSkip") return true;
|
242
|
-
|
243
|
-
if (key === "blacklist" || key === "noScope" || key === "skipKeys") {
|
201
|
+
if (key === "denylist" || key === "noScope" || key === "skipKeys") {
|
244
202
|
return true;
|
245
203
|
}
|
246
|
-
|
204
|
+
{
|
205
|
+
if (key === "blacklist") {
|
206
|
+
return true;
|
207
|
+
}
|
208
|
+
}
|
247
209
|
return false;
|
248
210
|
}
|
249
|
-
|
250
211
|
function mergePair(dest, src) {
|
251
|
-
for (const
|
252
|
-
|
212
|
+
for (const phase of ["enter", "exit"]) {
|
213
|
+
if (!src[phase]) continue;
|
214
|
+
dest[phase] = [].concat(dest[phase] || [], src[phase]);
|
253
215
|
}
|
254
|
-
}
|
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,27 +1,38 @@
|
|
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
|
-
"author": "
|
6
|
-
"homepage": "https://
|
5
|
+
"author": "The Babel Team (https://babel.dev/team)",
|
6
|
+
"homepage": "https://babel.dev/docs/en/next/babel-traverse",
|
7
|
+
"bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20traverse%22+is%3Aopen",
|
7
8
|
"license": "MIT",
|
8
9
|
"publishConfig": {
|
9
10
|
"access": "public"
|
10
11
|
},
|
11
|
-
"repository":
|
12
|
-
|
12
|
+
"repository": {
|
13
|
+
"type": "git",
|
14
|
+
"url": "https://github.com/babel/babel.git",
|
15
|
+
"directory": "packages/babel-traverse"
|
16
|
+
},
|
17
|
+
"main": "./lib/index.js",
|
13
18
|
"dependencies": {
|
14
|
-
"@babel/code-frame": "^7.
|
15
|
-
"@babel/generator": "^7.
|
16
|
-
"@babel/helper-
|
17
|
-
"@babel/helper-
|
18
|
-
"@babel/
|
19
|
-
"@babel/
|
20
|
-
"
|
21
|
-
"
|
22
|
-
"
|
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
|
+
"debug": "^4.1.0",
|
28
|
+
"globals": "^11.1.0"
|
23
29
|
},
|
24
30
|
"devDependencies": {
|
25
|
-
"@babel/
|
26
|
-
|
27
|
-
}
|
31
|
+
"@babel/core": "^7.23.0",
|
32
|
+
"@babel/helper-plugin-test-runner": "^7.22.5"
|
33
|
+
},
|
34
|
+
"engines": {
|
35
|
+
"node": ">=6.9.0"
|
36
|
+
},
|
37
|
+
"type": "commonjs"
|
38
|
+
}
|