@babel/traverse 7.18.6 → 7.18.8

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.

Potentially problematic release.


This version of @babel/traverse might be problematic. Click here for more details.

@@ -17,6 +17,7 @@ var _t = require("@babel/types");
17
17
  const {
18
18
  anyTypeAnnotation,
19
19
  isAnyTypeAnnotation,
20
+ isArrayTypeAnnotation,
20
21
  isBooleanTypeAnnotation,
21
22
  isEmptyTypeAnnotation,
22
23
  isFlowBaseAnnotation,
@@ -25,6 +26,10 @@ const {
25
26
  isMixedTypeAnnotation,
26
27
  isNumberTypeAnnotation,
27
28
  isStringTypeAnnotation,
29
+ isTSArrayType,
30
+ isTSTypeAnnotation,
31
+ isTSTypeReference,
32
+ isTupleTypeAnnotation,
28
33
  isTypeAnnotation,
29
34
  isUnionTypeAnnotation,
30
35
  isVoidTypeAnnotation,
@@ -40,7 +45,11 @@ function getTypeAnnotation() {
40
45
  }
41
46
 
42
47
  type = this._getTypeAnnotation() || anyTypeAnnotation();
43
- if (isTypeAnnotation(type)) type = type.typeAnnotation;
48
+
49
+ if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) {
50
+ type = type.typeAnnotation;
51
+ }
52
+
44
53
  this.setData("typeAnnotation", type);
45
54
  return type;
46
55
  }
@@ -156,7 +165,16 @@ function baseTypeStrictlyMatches(rightArg) {
156
165
 
157
166
  function isGenericType(genericName) {
158
167
  const type = this.getTypeAnnotation();
168
+
169
+ if (genericName === "Array") {
170
+ if (isTSArrayType(type) || isArrayTypeAnnotation(type) || isTupleTypeAnnotation(type)) {
171
+ return true;
172
+ }
173
+ }
174
+
159
175
  return isGenericTypeAnnotation(type) && isIdentifier(type.id, {
160
176
  name: genericName
177
+ }) || isTSTypeReference(type) && isIdentifier(type.typeName, {
178
+ name: genericName
161
179
  });
162
180
  }
@@ -7,13 +7,11 @@ exports.default = _default;
7
7
 
8
8
  var _t = require("@babel/types");
9
9
 
10
+ var _util = require("./util");
11
+
10
12
  const {
11
13
  BOOLEAN_NUMBER_BINARY_OPERATORS,
12
- createFlowUnionType,
13
- createTSUnionType,
14
14
  createTypeAnnotationBasedOnTypeof,
15
- createUnionTypeAnnotation,
16
- isTSTypeAnnotation,
17
15
  numberTypeAnnotation,
18
16
  voidTypeAnnotation
19
17
  } = _t;
@@ -61,15 +59,7 @@ function getTypeAnnotationBindingConstantViolations(binding, path, name) {
61
59
  return;
62
60
  }
63
61
 
64
- if (isTSTypeAnnotation(types[0]) && createTSUnionType) {
65
- return createTSUnionType(types);
66
- }
67
-
68
- if (createFlowUnionType) {
69
- return createFlowUnionType(types);
70
- }
71
-
72
- return createUnionTypeAnnotation(types);
62
+ return (0, _util.createUnionType)(types);
73
63
  }
74
64
 
75
65
  function getConstantViolationsBefore(binding, path, functions) {
@@ -182,22 +172,8 @@ function getConditionalAnnotation(binding, path, name) {
182
172
  }
183
173
 
184
174
  if (types.length) {
185
- if (isTSTypeAnnotation(types[0]) && createTSUnionType) {
186
- return {
187
- typeAnnotation: createTSUnionType(types),
188
- ifStatement
189
- };
190
- }
191
-
192
- if (createFlowUnionType) {
193
- return {
194
- typeAnnotation: createFlowUnionType(types),
195
- ifStatement
196
- };
197
- }
198
-
199
175
  return {
200
- typeAnnotation: createUnionTypeAnnotation(types),
176
+ typeAnnotation: (0, _util.createUnionType)(types),
201
177
  ifStatement
202
178
  };
203
179
  }
@@ -26,6 +26,8 @@ exports.RegExpLiteral = RegExpLiteral;
26
26
  exports.RestElement = RestElement;
27
27
  exports.SequenceExpression = SequenceExpression;
28
28
  exports.StringLiteral = StringLiteral;
29
+ exports.TSAsExpression = TSAsExpression;
30
+ exports.TSNonNullExpression = TSNonNullExpression;
29
31
  exports.TaggedTemplateExpression = TaggedTemplateExpression;
30
32
  exports.TemplateLiteral = TemplateLiteral;
31
33
  exports.TypeCastExpression = TypeCastExpression;
@@ -37,6 +39,8 @@ var _t = require("@babel/types");
37
39
 
38
40
  var _infererReference = require("./inferer-reference");
39
41
 
42
+ var _util = require("./util");
43
+
40
44
  const {
41
45
  BOOLEAN_BINARY_OPERATORS,
42
46
  BOOLEAN_UNARY_OPERATORS,
@@ -47,37 +51,20 @@ const {
47
51
  arrayTypeAnnotation,
48
52
  booleanTypeAnnotation,
49
53
  buildMatchMemberExpression,
50
- createFlowUnionType,
51
- createTSUnionType,
52
- createUnionTypeAnnotation,
53
54
  genericTypeAnnotation,
54
55
  identifier,
55
- isTSTypeAnnotation,
56
56
  nullLiteralTypeAnnotation,
57
57
  numberTypeAnnotation,
58
58
  stringTypeAnnotation,
59
59
  tupleTypeAnnotation,
60
60
  unionTypeAnnotation,
61
- voidTypeAnnotation
61
+ voidTypeAnnotation,
62
+ isIdentifier
62
63
  } = _t;
63
64
 
64
65
  function VariableDeclarator() {
65
- var _type;
66
-
67
- const id = this.get("id");
68
- if (!id.isIdentifier()) return;
69
- const init = this.get("init");
70
- let type = init.getTypeAnnotation();
71
-
72
- if (((_type = type) == null ? void 0 : _type.type) === "AnyTypeAnnotation") {
73
- if (init.isCallExpression() && init.get("callee").isIdentifier({
74
- name: "Array"
75
- }) && !init.scope.hasBinding("Array", true)) {
76
- type = ArrayExpression();
77
- }
78
- }
79
-
80
- return type;
66
+ if (!this.get("id").isIdentifier()) return;
67
+ return this.get("init").getTypeAnnotation();
81
68
  }
82
69
 
83
70
  function TypeCastExpression(node) {
@@ -86,6 +73,16 @@ function TypeCastExpression(node) {
86
73
 
87
74
  TypeCastExpression.validParent = true;
88
75
 
76
+ function TSAsExpression(node) {
77
+ return node.typeAnnotation;
78
+ }
79
+
80
+ TSAsExpression.validParent = true;
81
+
82
+ function TSNonNullExpression() {
83
+ return this.get("expression").getTypeAnnotation();
84
+ }
85
+
89
86
  function NewExpression(node) {
90
87
  if (node.callee.type === "Identifier") {
91
88
  return genericTypeAnnotation(node.callee);
@@ -133,30 +130,12 @@ function BinaryExpression(node) {
133
130
 
134
131
  function LogicalExpression() {
135
132
  const argumentTypes = [this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation()];
136
-
137
- if (isTSTypeAnnotation(argumentTypes[0]) && createTSUnionType) {
138
- return createTSUnionType(argumentTypes);
139
- }
140
-
141
- if (createFlowUnionType) {
142
- return createFlowUnionType(argumentTypes);
143
- }
144
-
145
- return createUnionTypeAnnotation(argumentTypes);
133
+ return (0, _util.createUnionType)(argumentTypes);
146
134
  }
147
135
 
148
136
  function ConditionalExpression() {
149
137
  const argumentTypes = [this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation()];
150
-
151
- if (isTSTypeAnnotation(argumentTypes[0]) && createTSUnionType) {
152
- return createTSUnionType(argumentTypes);
153
- }
154
-
155
- if (createFlowUnionType) {
156
- return createFlowUnionType(argumentTypes);
157
- }
158
-
159
- return createUnionTypeAnnotation(argumentTypes);
138
+ return (0, _util.createUnionType)(argumentTypes);
160
139
  }
161
140
 
162
141
  function SequenceExpression() {
@@ -229,7 +208,9 @@ function CallExpression() {
229
208
 
230
209
  if (isObjectKeys(callee)) {
231
210
  return arrayTypeAnnotation(stringTypeAnnotation());
232
- } else if (isArrayFrom(callee) || isObjectValues(callee)) {
211
+ } else if (isArrayFrom(callee) || isObjectValues(callee) || isIdentifier(callee, {
212
+ name: "Array"
213
+ })) {
233
214
  return arrayTypeAnnotation(anyTypeAnnotation());
234
215
  } else if (isObjectEntries(callee)) {
235
216
  return arrayTypeAnnotation(tupleTypeAnnotation([stringTypeAnnotation(), anyTypeAnnotation()]));
@@ -246,14 +227,20 @@ function resolveCall(callee) {
246
227
  callee = callee.resolve();
247
228
 
248
229
  if (callee.isFunction()) {
249
- if (callee.is("async")) {
250
- if (callee.is("generator")) {
230
+ const {
231
+ node
232
+ } = callee;
233
+
234
+ if (node.async) {
235
+ if (node.generator) {
251
236
  return genericTypeAnnotation(identifier("AsyncIterator"));
252
237
  } else {
253
238
  return genericTypeAnnotation(identifier("Promise"));
254
239
  }
255
240
  } else {
256
- if (callee.node.returnType) {
241
+ if (node.generator) {
242
+ return genericTypeAnnotation(identifier("Iterator"));
243
+ } else if (callee.node.returnType) {
257
244
  return callee.node.returnType;
258
245
  } else {}
259
246
  }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createUnionType = createUnionType;
7
+
8
+ var _t = require("@babel/types");
9
+
10
+ const {
11
+ createFlowUnionType,
12
+ createTSUnionType,
13
+ createUnionTypeAnnotation,
14
+ isFlowType,
15
+ isTSType
16
+ } = _t;
17
+
18
+ function createUnionType(types) {
19
+ {
20
+ if (isFlowType(types[0])) {
21
+ if (createFlowUnionType) {
22
+ return createFlowUnionType(types);
23
+ }
24
+
25
+ return createUnionTypeAnnotation(types);
26
+ } else {
27
+ if (createTSUnionType) {
28
+ return createTSUnionType(types);
29
+ }
30
+ }
31
+ }
32
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babel/traverse",
3
- "version": "7.18.6",
3
+ "version": "7.18.8",
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",
@@ -17,13 +17,13 @@
17
17
  "main": "./lib/index.js",
18
18
  "dependencies": {
19
19
  "@babel/code-frame": "^7.18.6",
20
- "@babel/generator": "^7.18.6",
20
+ "@babel/generator": "^7.18.7",
21
21
  "@babel/helper-environment-visitor": "^7.18.6",
22
22
  "@babel/helper-function-name": "^7.18.6",
23
23
  "@babel/helper-hoist-variables": "^7.18.6",
24
24
  "@babel/helper-split-export-declaration": "^7.18.6",
25
- "@babel/parser": "^7.18.6",
26
- "@babel/types": "^7.18.6",
25
+ "@babel/parser": "^7.18.8",
26
+ "@babel/types": "^7.18.8",
27
27
  "debug": "^4.1.0",
28
28
  "globals": "^11.1.0"
29
29
  },