@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.
Files changed (67) hide show
  1. package/README.md +1 -1
  2. package/lib/cache.js +27 -7
  3. package/lib/cache.js.map +1 -0
  4. package/lib/context.js +9 -31
  5. package/lib/context.js.map +1 -0
  6. package/lib/hub.js +2 -6
  7. package/lib/hub.js.map +1 -0
  8. package/lib/index.js +17 -33
  9. package/lib/index.js.map +1 -0
  10. package/lib/path/ancestry.js +3 -42
  11. package/lib/path/ancestry.js.map +1 -0
  12. package/lib/path/comments.js +23 -11
  13. package/lib/path/comments.js.map +1 -0
  14. package/lib/path/context.js +24 -65
  15. package/lib/path/context.js.map +1 -0
  16. package/lib/path/conversion.js +37 -100
  17. package/lib/path/conversion.js.map +1 -0
  18. package/lib/path/evaluation.js +69 -123
  19. package/lib/path/evaluation.js.map +1 -0
  20. package/lib/path/family.js +5 -76
  21. package/lib/path/family.js.map +1 -0
  22. package/lib/path/index.js +26 -90
  23. package/lib/path/index.js.map +1 -0
  24. package/lib/path/inference/index.js +26 -33
  25. package/lib/path/inference/index.js.map +1 -0
  26. package/lib/path/inference/inferer-reference.js +6 -61
  27. package/lib/path/inference/inferer-reference.js.map +1 -0
  28. package/lib/path/inference/inferers.js +32 -86
  29. package/lib/path/inference/inferers.js.map +1 -0
  30. package/lib/path/inference/util.js +30 -0
  31. package/lib/path/inference/util.js.map +1 -0
  32. package/lib/path/introspection.js +54 -105
  33. package/lib/path/introspection.js.map +1 -0
  34. package/lib/path/lib/hoister.js +2 -37
  35. package/lib/path/lib/hoister.js.map +1 -0
  36. package/lib/path/lib/removal-hooks.js +4 -4
  37. package/lib/path/lib/removal-hooks.js.map +1 -0
  38. package/lib/path/lib/virtual-types-validator.js +161 -0
  39. package/lib/path/lib/virtual-types-validator.js.map +1 -0
  40. package/lib/path/lib/virtual-types.js +20 -206
  41. package/lib/path/lib/virtual-types.js.map +1 -0
  42. package/lib/path/modification.js +17 -61
  43. package/lib/path/modification.js.map +1 -0
  44. package/lib/path/removal.js +9 -22
  45. package/lib/path/removal.js.map +1 -0
  46. package/lib/path/replacement.js +17 -72
  47. package/lib/path/replacement.js.map +1 -0
  48. package/lib/scope/binding.js +20 -12
  49. package/lib/scope/binding.js.map +1 -0
  50. package/lib/scope/index.js +115 -245
  51. package/lib/scope/index.js.map +1 -0
  52. package/lib/scope/lib/renamer.js +41 -74
  53. package/lib/scope/lib/renamer.js.map +1 -0
  54. package/lib/traverse-node.js +10 -11
  55. package/lib/traverse-node.js.map +1 -0
  56. package/lib/types.js +1 -3
  57. package/lib/types.js.map +1 -0
  58. package/lib/visitors.js +59 -83
  59. package/lib/visitors.js.map +1 -0
  60. package/package.json +13 -11
  61. package/lib/path/generated/asserts.js +0 -5
  62. package/lib/path/generated/validators.js +0 -5
  63. package/lib/path/generated/virtual-types.js +0 -3
  64. package/scripts/generators/asserts.js +0 -25
  65. package/scripts/generators/validators.js +0 -42
  66. package/scripts/generators/virtual-types.js +0 -24
  67. 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._exploded) return 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
- const wrapper = virtualTypes[nodeType];
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(wrapper, fns[type]);
47
+ fns[type] = wrapCheck(nodeType, fns[type]);
49
48
  }
50
-
51
49
  delete visitor[nodeType];
52
-
53
- if (wrapper.types) {
54
- for (const type of wrapper.types) {
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
- const deprecatedKey = DEPRECATED_KEYS[nodeType];
71
-
72
- if (deprecatedKey) {
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 rootVisitor = {};
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
- explode(visitor);
150
-
151
- for (const type of Object.keys(visitor)) {
152
- let visitorType = visitor[type];
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
- visitorType = wrapWithStateOrWrapper(visitorType, state, wrapper);
141
+ typeVisitor = wrapWithStateOrWrapper(typeVisitor, state, wrapper);
156
142
  }
157
-
158
- const nodeVisitor = rootVisitor[type] = rootVisitor[type] || {};
159
- mergePair(nodeVisitor, visitorType);
143
+ const nodeVisitor = mergedVisitor[key] || (mergedVisitor[key] = {});
144
+ mergePair(nodeVisitor, typeVisitor);
160
145
  }
161
146
  }
162
-
163
- return rootVisitor;
147
+ ;
148
+ return mergedVisitor;
164
149
  }
165
-
166
150
  function wrapWithStateOrWrapper(oldVisitor, state, wrapper) {
167
151
  const newVisitor = {};
168
-
169
- for (const key of Object.keys(oldVisitor)) {
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
- return fn.call(state, path, state);
159
+ fn.call(state, path, state);
178
160
  };
179
161
  }
180
-
181
162
  if (wrapper) {
182
- newFn = wrapper(state.key, key, newFn);
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[key] = fns;
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 (wrapper.checkPath(path)) {
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 key of Object.keys(src)) {
240
- dest[key] = [].concat(dest[key] || [], src[key]);
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.17.9",
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.16.7",
20
- "@babel/generator": "^7.17.9",
21
- "@babel/helper-environment-visitor": "^7.16.7",
22
- "@babel/helper-function-name": "^7.17.9",
23
- "@babel/helper-hoist-variables": "^7.16.7",
24
- "@babel/helper-split-export-declaration": "^7.16.7",
25
- "@babel/parser": "^7.17.9",
26
- "@babel/types": "^7.17.0",
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/helper-plugin-test-runner": "^7.16.7"
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,5 +0,0 @@
1
- "use strict";
2
-
3
- var t = require("@babel/types");
4
-
5
- var _index = require("../index");
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- var t = require("@babel/types");
4
-
5
- var _index = require("../index");
@@ -1,3 +0,0 @@
1
- "use strict";
2
-
3
- var t = require("@babel/types");
@@ -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
- }
@@ -1 +0,0 @@
1
- { "type": "module" }