@babel/traverse 7.10.4 → 7.12.0
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.
- package/lib/context.js +4 -0
- package/lib/index.js +5 -7
- package/lib/path/context.js +7 -5
- package/lib/path/evaluation.js +3 -3
- package/lib/path/family.js +31 -15
- package/lib/path/index.js +19 -0
- package/lib/path/introspection.js +1 -5
- package/lib/scope/binding.js +8 -0
- package/lib/scope/index.js +13 -12
- package/lib/scope/lib/renamer.js +3 -0
- package/lib/visitors.js +2 -6
- package/package.json +8 -9
package/lib/context.js
CHANGED
@@ -19,6 +19,10 @@ const testing = process.env.NODE_ENV === "test";
|
|
19
19
|
|
20
20
|
class TraversalContext {
|
21
21
|
constructor(scope, opts, state, parentPath) {
|
22
|
+
this.parentPath = void 0;
|
23
|
+
this.scope = void 0;
|
24
|
+
this.state = void 0;
|
25
|
+
this.opts = void 0;
|
22
26
|
this.queue = null;
|
23
27
|
this.parentPath = parentPath;
|
24
28
|
this.scope = scope;
|
package/lib/index.js
CHANGED
@@ -30,8 +30,6 @@ var visitors = _interopRequireWildcard(require("./visitors"));
|
|
30
30
|
|
31
31
|
exports.visitors = visitors;
|
32
32
|
|
33
|
-
var _includes = _interopRequireDefault(require("lodash/includes"));
|
34
|
-
|
35
33
|
var t = _interopRequireWildcard(require("@babel/types"));
|
36
34
|
|
37
35
|
var cache = _interopRequireWildcard(require("./cache"));
|
@@ -95,15 +93,15 @@ traverse.removeProperties = function (tree, opts) {
|
|
95
93
|
return tree;
|
96
94
|
};
|
97
95
|
|
98
|
-
function
|
96
|
+
function hasDenylistedType(path, state) {
|
99
97
|
if (path.node.type === state.type) {
|
100
98
|
state.has = true;
|
101
99
|
path.stop();
|
102
100
|
}
|
103
101
|
}
|
104
102
|
|
105
|
-
traverse.hasType = function (tree, type,
|
106
|
-
if (
|
103
|
+
traverse.hasType = function (tree, type, denylistTypes) {
|
104
|
+
if (denylistTypes == null ? void 0 : denylistTypes.includes(tree.type)) return false;
|
107
105
|
if (tree.type === type) return true;
|
108
106
|
const state = {
|
109
107
|
has: false,
|
@@ -111,8 +109,8 @@ traverse.hasType = function (tree, type, blacklistTypes) {
|
|
111
109
|
};
|
112
110
|
traverse(tree, {
|
113
111
|
noScope: true,
|
114
|
-
|
115
|
-
enter:
|
112
|
+
denylist: denylistTypes,
|
113
|
+
enter: hasDenylistedType
|
116
114
|
}, null, state);
|
117
115
|
return state.has;
|
118
116
|
};
|
package/lib/path/context.js
CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.call = call;
|
7
7
|
exports._call = _call;
|
8
|
-
exports.isBlacklisted =
|
8
|
+
exports.isBlacklisted = exports.isDenylisted = isDenylisted;
|
9
9
|
exports.visit = visit;
|
10
10
|
exports.skip = skip;
|
11
11
|
exports.skipKey = skipKey;
|
@@ -69,9 +69,11 @@ function _call(fns) {
|
|
69
69
|
return false;
|
70
70
|
}
|
71
71
|
|
72
|
-
function
|
73
|
-
|
74
|
-
|
72
|
+
function isDenylisted() {
|
73
|
+
var _this$opts$denylist;
|
74
|
+
|
75
|
+
const denylist = (_this$opts$denylist = this.opts.denylist) != null ? _this$opts$denylist : this.opts.blacklist;
|
76
|
+
return denylist && denylist.indexOf(this.node.type) > -1;
|
75
77
|
}
|
76
78
|
|
77
79
|
function visit() {
|
@@ -79,7 +81,7 @@ function visit() {
|
|
79
81
|
return false;
|
80
82
|
}
|
81
83
|
|
82
|
-
if (this.
|
84
|
+
if (this.isDenylisted()) {
|
83
85
|
return false;
|
84
86
|
}
|
85
87
|
|
package/lib/path/evaluation.js
CHANGED
@@ -197,7 +197,7 @@ function _evaluate(path, state) {
|
|
197
197
|
if (elemValue.confident) {
|
198
198
|
arr.push(elemValue.value);
|
199
199
|
} else {
|
200
|
-
return deopt(
|
200
|
+
return deopt(elemValue.deopt, state);
|
201
201
|
}
|
202
202
|
}
|
203
203
|
|
@@ -220,7 +220,7 @@ function _evaluate(path, state) {
|
|
220
220
|
key = key.evaluate();
|
221
221
|
|
222
222
|
if (!key.confident) {
|
223
|
-
return deopt(
|
223
|
+
return deopt(key.deopt, state);
|
224
224
|
}
|
225
225
|
|
226
226
|
key = key.value;
|
@@ -234,7 +234,7 @@ function _evaluate(path, state) {
|
|
234
234
|
let value = valuePath.evaluate();
|
235
235
|
|
236
236
|
if (!value.confident) {
|
237
|
-
return deopt(
|
237
|
+
return deopt(value.deopt, state);
|
238
238
|
}
|
239
239
|
|
240
240
|
value = value.value;
|
package/lib/path/family.js
CHANGED
@@ -41,27 +41,43 @@ function addCompletionRecords(path, paths) {
|
|
41
41
|
return paths;
|
42
42
|
}
|
43
43
|
|
44
|
+
function findBreak(statements) {
|
45
|
+
let breakStatement;
|
46
|
+
|
47
|
+
if (!Array.isArray(statements)) {
|
48
|
+
statements = [statements];
|
49
|
+
}
|
50
|
+
|
51
|
+
for (const statement of statements) {
|
52
|
+
if (statement.isDoExpression() || statement.isProgram() || statement.isBlockStatement() || statement.isCatchClause() || statement.isLabeledStatement()) {
|
53
|
+
breakStatement = findBreak(statement.get("body"));
|
54
|
+
} else if (statement.isIfStatement()) {
|
55
|
+
var _findBreak;
|
56
|
+
|
57
|
+
breakStatement = (_findBreak = findBreak(statement.get("consequent"))) != null ? _findBreak : findBreak(statement.get("alternate"));
|
58
|
+
} else if (statement.isTryStatement()) {
|
59
|
+
var _findBreak2;
|
60
|
+
|
61
|
+
breakStatement = (_findBreak2 = findBreak(statement.get("block"))) != null ? _findBreak2 : findBreak(statement.get("handler"));
|
62
|
+
} else if (statement.isBreakStatement()) {
|
63
|
+
breakStatement = statement;
|
64
|
+
}
|
65
|
+
|
66
|
+
if (breakStatement) {
|
67
|
+
return breakStatement;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
return null;
|
72
|
+
}
|
73
|
+
|
44
74
|
function completionRecordForSwitch(cases, paths) {
|
45
75
|
let isLastCaseWithConsequent = true;
|
46
76
|
|
47
77
|
for (let i = cases.length - 1; i >= 0; i--) {
|
48
78
|
const switchCase = cases[i];
|
49
79
|
const consequent = switchCase.get("consequent");
|
50
|
-
let breakStatement;
|
51
|
-
|
52
|
-
findBreak: for (const statement of consequent) {
|
53
|
-
if (statement.isBlockStatement()) {
|
54
|
-
for (const statementInBlock of statement.get("body")) {
|
55
|
-
if (statementInBlock.isBreakStatement()) {
|
56
|
-
breakStatement = statementInBlock;
|
57
|
-
break findBreak;
|
58
|
-
}
|
59
|
-
}
|
60
|
-
} else if (statement.isBreakStatement()) {
|
61
|
-
breakStatement = statement;
|
62
|
-
break;
|
63
|
-
}
|
64
|
-
}
|
80
|
+
let breakStatement = findBreak(consequent);
|
65
81
|
|
66
82
|
if (breakStatement) {
|
67
83
|
while (breakStatement.key === 0 && breakStatement.parentPath.isBlockStatement()) {
|
package/lib/path/index.js
CHANGED
@@ -57,6 +57,25 @@ exports.SHOULD_SKIP = SHOULD_SKIP;
|
|
57
57
|
|
58
58
|
class NodePath {
|
59
59
|
constructor(hub, parent) {
|
60
|
+
this.parent = void 0;
|
61
|
+
this.hub = void 0;
|
62
|
+
this.contexts = void 0;
|
63
|
+
this.data = void 0;
|
64
|
+
this.shouldSkip = void 0;
|
65
|
+
this.shouldStop = void 0;
|
66
|
+
this.removed = void 0;
|
67
|
+
this.state = void 0;
|
68
|
+
this.opts = void 0;
|
69
|
+
this._traverseFlags = void 0;
|
70
|
+
this.skipKeys = void 0;
|
71
|
+
this.parentPath = void 0;
|
72
|
+
this.context = void 0;
|
73
|
+
this.container = void 0;
|
74
|
+
this.listKey = void 0;
|
75
|
+
this.key = void 0;
|
76
|
+
this.node = void 0;
|
77
|
+
this.scope = void 0;
|
78
|
+
this.type = void 0;
|
60
79
|
this.parent = parent;
|
61
80
|
this.hub = hub;
|
62
81
|
this.contexts = [];
|
@@ -24,16 +24,12 @@ exports.isConstantExpression = isConstantExpression;
|
|
24
24
|
exports.isInStrictMode = isInStrictMode;
|
25
25
|
exports.is = void 0;
|
26
26
|
|
27
|
-
var _includes = _interopRequireDefault(require("lodash/includes"));
|
28
|
-
|
29
27
|
var t = _interopRequireWildcard(require("@babel/types"));
|
30
28
|
|
31
29
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
32
30
|
|
33
31
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
34
32
|
|
35
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
36
|
-
|
37
33
|
function matchesPattern(pattern, allowPartial) {
|
38
34
|
return t.matchesPattern(this.node, pattern, allowPartial);
|
39
35
|
}
|
@@ -110,7 +106,7 @@ function isStatementOrBlock() {
|
|
110
106
|
if (this.parentPath.isLabeledStatement() || t.isBlockStatement(this.container)) {
|
111
107
|
return false;
|
112
108
|
} else {
|
113
|
-
return
|
109
|
+
return t.STATEMENT_OR_BLOCK_KEYS.includes(this.key);
|
114
110
|
}
|
115
111
|
}
|
116
112
|
|
package/lib/scope/binding.js
CHANGED
@@ -12,6 +12,14 @@ class Binding {
|
|
12
12
|
path,
|
13
13
|
kind
|
14
14
|
}) {
|
15
|
+
this.constantViolations = void 0;
|
16
|
+
this.constant = void 0;
|
17
|
+
this.referencePaths = void 0;
|
18
|
+
this.referenced = void 0;
|
19
|
+
this.references = void 0;
|
20
|
+
this.hasDeoptedValue = void 0;
|
21
|
+
this.hasValue = void 0;
|
22
|
+
this.value = void 0;
|
15
23
|
this.identifier = identifier;
|
16
24
|
this.scope = scope;
|
17
25
|
this.path = path;
|
package/lib/scope/index.js
CHANGED
@@ -5,16 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.default = void 0;
|
7
7
|
|
8
|
-
var _includes = _interopRequireDefault(require("lodash/includes"));
|
9
|
-
|
10
|
-
var _repeat = _interopRequireDefault(require("lodash/repeat"));
|
11
|
-
|
12
8
|
var _renamer = _interopRequireDefault(require("./lib/renamer"));
|
13
9
|
|
14
10
|
var _index = _interopRequireDefault(require("../index"));
|
15
11
|
|
16
|
-
var _defaults = _interopRequireDefault(require("lodash/defaults"));
|
17
|
-
|
18
12
|
var _binding = _interopRequireDefault(require("./binding"));
|
19
13
|
|
20
14
|
var _globals = _interopRequireDefault(require("globals"));
|
@@ -350,7 +344,7 @@ class Scope {
|
|
350
344
|
generateUid(name = "temp") {
|
351
345
|
name = t.toIdentifier(name).replace(/^_+/, "").replace(/[0-9]+$/g, "");
|
352
346
|
let uid;
|
353
|
-
let i =
|
347
|
+
let i = 1;
|
354
348
|
|
355
349
|
do {
|
356
350
|
uid = this._generateUid(name, i);
|
@@ -443,7 +437,7 @@ class Scope {
|
|
443
437
|
}
|
444
438
|
|
445
439
|
dump() {
|
446
|
-
const sep =
|
440
|
+
const sep = "-".repeat(60);
|
447
441
|
console.log(sep);
|
448
442
|
let scope = this;
|
449
443
|
|
@@ -842,7 +836,12 @@ class Scope {
|
|
842
836
|
let scope = this;
|
843
837
|
|
844
838
|
do {
|
845
|
-
(
|
839
|
+
for (const key of Object.keys(scope.bindings)) {
|
840
|
+
if (key in ids === false) {
|
841
|
+
ids[key] = scope.bindings[key];
|
842
|
+
}
|
843
|
+
}
|
844
|
+
|
846
845
|
scope = scope.parent;
|
847
846
|
} while (scope);
|
848
847
|
|
@@ -880,7 +879,9 @@ class Scope {
|
|
880
879
|
const binding = scope.getOwnBinding(name);
|
881
880
|
|
882
881
|
if (binding) {
|
883
|
-
|
882
|
+
var _previousPath;
|
883
|
+
|
884
|
+
if (((_previousPath = previousPath) == null ? void 0 : _previousPath.isPattern()) && binding.kind !== "param") {} else {
|
884
885
|
return binding;
|
885
886
|
}
|
886
887
|
}
|
@@ -913,8 +914,8 @@ class Scope {
|
|
913
914
|
if (this.hasOwnBinding(name)) return true;
|
914
915
|
if (this.parentHasBinding(name, noGlobals)) return true;
|
915
916
|
if (this.hasUid(name)) return true;
|
916
|
-
if (!noGlobals &&
|
917
|
-
if (!noGlobals &&
|
917
|
+
if (!noGlobals && Scope.globals.includes(name)) return true;
|
918
|
+
if (!noGlobals && Scope.contextVariables.includes(name)) return true;
|
918
919
|
return false;
|
919
920
|
}
|
920
921
|
|
package/lib/scope/lib/renamer.js
CHANGED
package/lib/visitors.js
CHANGED
@@ -11,10 +11,6 @@ var virtualTypes = _interopRequireWildcard(require("./path/lib/virtual-types"));
|
|
11
11
|
|
12
12
|
var t = _interopRequireWildcard(require("@babel/types"));
|
13
13
|
|
14
|
-
var _clone = _interopRequireDefault(require("lodash/clone"));
|
15
|
-
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
|
-
|
18
14
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
19
15
|
|
20
16
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
@@ -85,7 +81,7 @@ function explode(visitor) {
|
|
85
81
|
if (existing) {
|
86
82
|
mergePair(existing, fns);
|
87
83
|
} else {
|
88
|
-
visitor[alias] = (
|
84
|
+
visitor[alias] = Object.assign({}, fns);
|
89
85
|
}
|
90
86
|
}
|
91
87
|
}
|
@@ -230,7 +226,7 @@ function shouldIgnoreKey(key) {
|
|
230
226
|
if (key[0] === "_") return true;
|
231
227
|
if (key === "enter" || key === "exit" || key === "shouldSkip") return true;
|
232
228
|
|
233
|
-
if (key === "
|
229
|
+
if (key === "denylist" || key === "noScope" || key === "skipKeys" || key === "blacklist") {
|
234
230
|
return true;
|
235
231
|
}
|
236
232
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@babel/traverse",
|
3
|
-
"version": "7.
|
3
|
+
"version": "7.12.0",
|
4
4
|
"description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes",
|
5
5
|
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
6
6
|
"homepage": "https://babeljs.io/",
|
@@ -16,17 +16,16 @@
|
|
16
16
|
"main": "lib/index.js",
|
17
17
|
"dependencies": {
|
18
18
|
"@babel/code-frame": "^7.10.4",
|
19
|
-
"@babel/generator": "^7.
|
19
|
+
"@babel/generator": "^7.12.0",
|
20
20
|
"@babel/helper-function-name": "^7.10.4",
|
21
|
-
"@babel/helper-split-export-declaration": "^7.
|
22
|
-
"@babel/parser": "^7.
|
23
|
-
"@babel/types": "^7.
|
21
|
+
"@babel/helper-split-export-declaration": "^7.11.0",
|
22
|
+
"@babel/parser": "^7.12.0",
|
23
|
+
"@babel/types": "^7.12.0",
|
24
24
|
"debug": "^4.1.0",
|
25
25
|
"globals": "^11.1.0",
|
26
|
-
"lodash": "^4.17.
|
26
|
+
"lodash": "^4.17.19"
|
27
27
|
},
|
28
28
|
"devDependencies": {
|
29
29
|
"@babel/helper-plugin-test-runner": "^7.10.4"
|
30
|
-
}
|
31
|
-
|
32
|
-
}
|
30
|
+
}
|
31
|
+
}
|