babel-schmooze-sprockets 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/console +14 -0
- data/bin/export-external-helpers +3 -0
- data/bin/setup +6 -0
- data/bin/update-npm-deps +8 -0
- data/examples/myapp/Gemfile +4 -5
- data/examples/myapp/Gemfile.lock +69 -93
- data/examples/myapp/app/assets/javascripts/code/hello.es6 +5 -1
- data/examples/myapp/app/views/layouts/application.html.erb +1 -0
- data/examples/myapp/app/views/site/home.html.erb +0 -1
- data/lib/babel-schmooze-sprockets/babel_processor.rb +6 -4
- data/lib/babel-schmooze-sprockets/engine.rb +1 -4
- data/lib/babel-schmooze-sprockets/version.rb +1 -1
- data/node_modules/amdefine/package.json +8 -1
- data/node_modules/babel-core/node_modules/babel-runtime/package.json +9 -5
- data/node_modules/babel-core/node_modules/babel-traverse/.npmignore +3 -0
- data/node_modules/babel-core/node_modules/babel-traverse/README.md +1 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/cache.js +20 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/context.js +219 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/hub.js +19 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/index.js +250 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/ancestry.js +317 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/comments.js +55 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/context.js +297 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/conversion.js +48 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/evaluation.js +406 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/family.js +168 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/index.js +245 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/index.js +151 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/inferer-reference.js +225 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/inferers.js +198 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/introspection.js +518 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/hoister.js +166 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/removal-hooks.js +64 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/virtual-types.js +141 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/modification.js +293 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/removal.js +72 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/path/replacement.js +302 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/binding.js +105 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/index.js +1222 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/lib/renamer.js +154 -0
- data/node_modules/babel-core/node_modules/babel-traverse/lib/visitors.js +360 -0
- data/node_modules/babel-core/node_modules/babel-traverse/package.json +107 -0
- data/node_modules/babel-core/node_modules/core-js/package.json +20 -2
- data/node_modules/babel-core/package.json +31 -24
- data/node_modules/babel-generator/lib/buffer.js +69 -70
- data/node_modules/babel-generator/lib/generators/base.js +16 -12
- data/node_modules/babel-generator/lib/generators/classes.js +28 -19
- data/node_modules/babel-generator/lib/generators/expressions.js +76 -99
- data/node_modules/babel-generator/lib/generators/flow.js +178 -119
- data/node_modules/babel-generator/lib/generators/jsx.js +38 -29
- data/node_modules/babel-generator/lib/generators/methods.js +34 -25
- data/node_modules/babel-generator/lib/generators/modules.js +67 -40
- data/node_modules/babel-generator/lib/generators/statements.js +93 -76
- data/node_modules/babel-generator/lib/generators/template-literals.js +12 -11
- data/node_modules/babel-generator/lib/generators/types.js +56 -49
- data/node_modules/babel-generator/lib/index.js +52 -39
- data/node_modules/babel-generator/lib/node/index.js +12 -18
- data/node_modules/babel-generator/lib/node/parentheses.js +23 -27
- data/node_modules/babel-generator/lib/node/whitespace.js +20 -26
- data/node_modules/babel-generator/lib/position.js +5 -5
- data/node_modules/babel-generator/lib/printer.js +52 -81
- data/node_modules/babel-generator/lib/source-map.js +9 -11
- data/node_modules/babel-generator/lib/whitespace.js +13 -13
- data/node_modules/babel-generator/node_modules/babel-runtime/package.json +19 -6
- data/node_modules/babel-generator/node_modules/babel-types/.npmignore +3 -0
- data/node_modules/babel-generator/node_modules/babel-types/README.md +1141 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/constants.js +40 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/converters.js +378 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/core.js +704 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/es2015.js +354 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/experimental.js +85 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/flow.js +319 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/index.js +247 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/init.js +15 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/jsx.js +137 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/misc.js +21 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/flow.js +129 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/index.js +848 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/react.js +83 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/retrievers.js +123 -0
- data/node_modules/babel-generator/node_modules/babel-types/lib/validators.js +276 -0
- data/node_modules/babel-generator/node_modules/babel-types/package.json +103 -0
- data/node_modules/babel-generator/node_modules/core-js/package.json +10 -5
- data/node_modules/babel-generator/package.json +19 -16
- data/node_modules/babel-helpers/node_modules/babel-runtime/package.json +19 -3
- data/node_modules/babel-helpers/node_modules/core-js/package.json +20 -4
- data/node_modules/babel-helpers/package.json +8 -1
- data/node_modules/babel-register/node_modules/babel-runtime/package.json +19 -3
- data/node_modules/babel-register/node_modules/core-js/package.json +20 -4
- data/node_modules/babel-register/package.json +8 -1
- data/node_modules/balanced-match/package.json +8 -1
- data/node_modules/brace-expansion/package.json +19 -12
- data/node_modules/concat-map/package.json +9 -2
- data/node_modules/convert-source-map/package.json +8 -1
- data/node_modules/detect-indent/package.json +8 -1
- data/node_modules/get-stdin/package.json +8 -1
- data/node_modules/home-or-tmp/package.json +9 -2
- data/node_modules/is-finite/package.json +8 -2
- data/node_modules/json5/package.json +8 -1
- data/node_modules/minimatch/README.md +2 -9
- data/node_modules/minimatch/minimatch.js +15 -3
- data/node_modules/minimatch/package.json +29 -21
- data/node_modules/minimist/package.json +8 -1
- data/node_modules/mkdirp/node_modules/minimist/package.json +8 -1
- data/node_modules/mkdirp/package.json +8 -1
- data/node_modules/number-is-nan/package.json +8 -1
- data/node_modules/os-tmpdir/package.json +8 -1
- data/node_modules/path-exists/package.json +8 -1
- data/node_modules/path-is-absolute/package.json +8 -1
- data/node_modules/repeating/package.json +15 -11
- data/node_modules/shebang-regex/package.json +8 -1
- data/node_modules/slash/package.json +8 -1
- data/node_modules/source-map-support/node_modules/source-map/package.json +8 -1
- data/node_modules/source-map-support/package.json +8 -1
- data/node_modules/source-map/package.json +8 -1
- data/node_modules/user-home/package.json +8 -1
- data/package.json +1 -1
- metadata +54 -6
- data/node_modules/brace-expansion/.npmignore +0 -3
- data/node_modules/brace-expansion/example.js +0 -8
- data/node_modules/minimatch/browser.js +0 -1159
@@ -0,0 +1,168 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
|
5
|
+
var _getIterator2 = require("babel-runtime/core-js/get-iterator");
|
6
|
+
|
7
|
+
var _getIterator3 = _interopRequireDefault(_getIterator2);
|
8
|
+
|
9
|
+
exports.getStatementParent = getStatementParent;
|
10
|
+
exports.getOpposite = getOpposite;
|
11
|
+
exports.getCompletionRecords = getCompletionRecords;
|
12
|
+
exports.getSibling = getSibling;
|
13
|
+
exports.get = get;
|
14
|
+
exports._getKey = _getKey;
|
15
|
+
exports._getPattern = _getPattern;
|
16
|
+
exports.getBindingIdentifiers = getBindingIdentifiers;
|
17
|
+
exports.getOuterBindingIdentifiers = getOuterBindingIdentifiers;
|
18
|
+
|
19
|
+
var _index = require("./index");
|
20
|
+
|
21
|
+
var _index2 = _interopRequireDefault(_index);
|
22
|
+
|
23
|
+
var _babelTypes = require("babel-types");
|
24
|
+
|
25
|
+
var t = _interopRequireWildcard(_babelTypes);
|
26
|
+
|
27
|
+
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)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
28
|
+
|
29
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
30
|
+
|
31
|
+
function getStatementParent() {
|
32
|
+
var path = this;
|
33
|
+
|
34
|
+
do {
|
35
|
+
if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) {
|
36
|
+
break;
|
37
|
+
} else {
|
38
|
+
path = path.parentPath;
|
39
|
+
}
|
40
|
+
} while (path);
|
41
|
+
|
42
|
+
if (path && (path.isProgram() || path.isFile())) {
|
43
|
+
throw new Error("File/Program node, we can't possibly find a statement parent to this");
|
44
|
+
}
|
45
|
+
|
46
|
+
return path;
|
47
|
+
} // This file contains methods responsible for dealing with/retrieving children or siblings.
|
48
|
+
|
49
|
+
function getOpposite() {
|
50
|
+
if (this.key === "left") {
|
51
|
+
return this.getSibling("right");
|
52
|
+
} else if (this.key === "right") {
|
53
|
+
return this.getSibling("left");
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
function getCompletionRecords() {
|
58
|
+
var paths = [];
|
59
|
+
|
60
|
+
var add = function add(path) {
|
61
|
+
if (path) paths = paths.concat(path.getCompletionRecords());
|
62
|
+
};
|
63
|
+
|
64
|
+
if (this.isIfStatement()) {
|
65
|
+
add(this.get("consequent"));
|
66
|
+
add(this.get("alternate"));
|
67
|
+
} else if (this.isDoExpression() || this.isFor() || this.isWhile()) {
|
68
|
+
add(this.get("body"));
|
69
|
+
} else if (this.isProgram() || this.isBlockStatement()) {
|
70
|
+
add(this.get("body").pop());
|
71
|
+
} else if (this.isFunction()) {
|
72
|
+
return this.get("body").getCompletionRecords();
|
73
|
+
} else if (this.isTryStatement()) {
|
74
|
+
add(this.get("block"));
|
75
|
+
add(this.get("handler"));
|
76
|
+
add(this.get("finalizer"));
|
77
|
+
} else {
|
78
|
+
paths.push(this);
|
79
|
+
}
|
80
|
+
|
81
|
+
return paths;
|
82
|
+
}
|
83
|
+
|
84
|
+
function getSibling(key) {
|
85
|
+
return _index2.default.get({
|
86
|
+
parentPath: this.parentPath,
|
87
|
+
parent: this.parent,
|
88
|
+
container: this.container,
|
89
|
+
listKey: this.listKey,
|
90
|
+
key: key
|
91
|
+
});
|
92
|
+
}
|
93
|
+
|
94
|
+
function get(key, context) {
|
95
|
+
if (context === true) context = this.context;
|
96
|
+
var parts = key.split(".");
|
97
|
+
if (parts.length === 1) {
|
98
|
+
// "foo"
|
99
|
+
return this._getKey(key, context);
|
100
|
+
} else {
|
101
|
+
// "foo.bar"
|
102
|
+
return this._getPattern(parts, context);
|
103
|
+
}
|
104
|
+
}
|
105
|
+
|
106
|
+
function _getKey(key, context) {
|
107
|
+
var _this = this;
|
108
|
+
|
109
|
+
var node = this.node;
|
110
|
+
var container = node[key];
|
111
|
+
|
112
|
+
if (Array.isArray(container)) {
|
113
|
+
// requested a container so give them all the paths
|
114
|
+
return container.map(function (_, i) {
|
115
|
+
return _index2.default.get({
|
116
|
+
listKey: key,
|
117
|
+
parentPath: _this,
|
118
|
+
parent: node,
|
119
|
+
container: container,
|
120
|
+
key: i
|
121
|
+
}).setContext(context);
|
122
|
+
});
|
123
|
+
} else {
|
124
|
+
return _index2.default.get({
|
125
|
+
parentPath: this,
|
126
|
+
parent: node,
|
127
|
+
container: node,
|
128
|
+
key: key
|
129
|
+
}).setContext(context);
|
130
|
+
}
|
131
|
+
}
|
132
|
+
|
133
|
+
function _getPattern(parts, context) {
|
134
|
+
var path = this;
|
135
|
+
for (var _iterator = parts, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
|
136
|
+
var _ref;
|
137
|
+
|
138
|
+
if (_isArray) {
|
139
|
+
if (_i >= _iterator.length) break;
|
140
|
+
_ref = _iterator[_i++];
|
141
|
+
} else {
|
142
|
+
_i = _iterator.next();
|
143
|
+
if (_i.done) break;
|
144
|
+
_ref = _i.value;
|
145
|
+
}
|
146
|
+
|
147
|
+
var part = _ref;
|
148
|
+
|
149
|
+
if (part === ".") {
|
150
|
+
path = path.parentPath;
|
151
|
+
} else {
|
152
|
+
if (Array.isArray(path)) {
|
153
|
+
path = path[part];
|
154
|
+
} else {
|
155
|
+
path = path.get(part, context);
|
156
|
+
}
|
157
|
+
}
|
158
|
+
}
|
159
|
+
return path;
|
160
|
+
}
|
161
|
+
|
162
|
+
function getBindingIdentifiers(duplicates) {
|
163
|
+
return t.getBindingIdentifiers(this.node, duplicates);
|
164
|
+
}
|
165
|
+
|
166
|
+
function getOuterBindingIdentifiers(duplicates) {
|
167
|
+
return t.getOuterBindingIdentifiers(this.node, duplicates);
|
168
|
+
}
|
@@ -0,0 +1,245 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
|
5
|
+
var _getIterator2 = require("babel-runtime/core-js/get-iterator");
|
6
|
+
|
7
|
+
var _getIterator3 = _interopRequireDefault(_getIterator2);
|
8
|
+
|
9
|
+
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
|
10
|
+
|
11
|
+
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
12
|
+
|
13
|
+
var _virtualTypes = require("./lib/virtual-types");
|
14
|
+
|
15
|
+
var virtualTypes = _interopRequireWildcard(_virtualTypes);
|
16
|
+
|
17
|
+
var _debug2 = require("debug");
|
18
|
+
|
19
|
+
var _debug3 = _interopRequireDefault(_debug2);
|
20
|
+
|
21
|
+
var _invariant = require("invariant");
|
22
|
+
|
23
|
+
var _invariant2 = _interopRequireDefault(_invariant);
|
24
|
+
|
25
|
+
var _index = require("../index");
|
26
|
+
|
27
|
+
var _index2 = _interopRequireDefault(_index);
|
28
|
+
|
29
|
+
var _assign = require("lodash/assign");
|
30
|
+
|
31
|
+
var _assign2 = _interopRequireDefault(_assign);
|
32
|
+
|
33
|
+
var _scope = require("../scope");
|
34
|
+
|
35
|
+
var _scope2 = _interopRequireDefault(_scope);
|
36
|
+
|
37
|
+
var _babelTypes = require("babel-types");
|
38
|
+
|
39
|
+
var t = _interopRequireWildcard(_babelTypes);
|
40
|
+
|
41
|
+
var _cache = require("../cache");
|
42
|
+
|
43
|
+
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)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
44
|
+
|
45
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
46
|
+
|
47
|
+
/* eslint max-len: 0 */
|
48
|
+
|
49
|
+
var _debug = (0, _debug3.default)("babel");
|
50
|
+
|
51
|
+
var NodePath = function () {
|
52
|
+
function NodePath(hub, parent) {
|
53
|
+
(0, _classCallCheck3.default)(this, NodePath);
|
54
|
+
|
55
|
+
this.parent = parent;
|
56
|
+
this.hub = hub;
|
57
|
+
this.contexts = [];
|
58
|
+
this.data = {};
|
59
|
+
this.shouldSkip = false;
|
60
|
+
this.shouldStop = false;
|
61
|
+
this.removed = false;
|
62
|
+
this.state = null;
|
63
|
+
this.opts = null;
|
64
|
+
this.skipKeys = null;
|
65
|
+
this.parentPath = null;
|
66
|
+
this.context = null;
|
67
|
+
this.container = null;
|
68
|
+
this.listKey = null;
|
69
|
+
this.inList = false;
|
70
|
+
this.parentKey = null;
|
71
|
+
this.key = null;
|
72
|
+
this.node = null;
|
73
|
+
this.scope = null;
|
74
|
+
this.type = null;
|
75
|
+
this.typeAnnotation = null;
|
76
|
+
}
|
77
|
+
|
78
|
+
NodePath.get = function get(_ref) {
|
79
|
+
var hub = _ref.hub;
|
80
|
+
var parentPath = _ref.parentPath;
|
81
|
+
var parent = _ref.parent;
|
82
|
+
var container = _ref.container;
|
83
|
+
var listKey = _ref.listKey;
|
84
|
+
var key = _ref.key;
|
85
|
+
|
86
|
+
if (!hub && parentPath) {
|
87
|
+
hub = parentPath.hub;
|
88
|
+
}
|
89
|
+
|
90
|
+
(0, _invariant2.default)(parent, "To get a node path the parent needs to exist");
|
91
|
+
|
92
|
+
var targetNode = container[key];
|
93
|
+
|
94
|
+
var paths = _cache.path.get(parent) || [];
|
95
|
+
if (!_cache.path.has(parent)) {
|
96
|
+
_cache.path.set(parent, paths);
|
97
|
+
}
|
98
|
+
|
99
|
+
var path = void 0;
|
100
|
+
|
101
|
+
for (var i = 0; i < paths.length; i++) {
|
102
|
+
var pathCheck = paths[i];
|
103
|
+
if (pathCheck.node === targetNode) {
|
104
|
+
path = pathCheck;
|
105
|
+
break;
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
if (!path) {
|
110
|
+
path = new NodePath(hub, parent);
|
111
|
+
paths.push(path);
|
112
|
+
}
|
113
|
+
|
114
|
+
path.setup(parentPath, container, listKey, key);
|
115
|
+
|
116
|
+
return path;
|
117
|
+
};
|
118
|
+
|
119
|
+
NodePath.prototype.getScope = function getScope(scope) {
|
120
|
+
var ourScope = scope;
|
121
|
+
|
122
|
+
// we're entering a new scope so let's construct it!
|
123
|
+
if (this.isScope()) {
|
124
|
+
ourScope = new _scope2.default(this, scope);
|
125
|
+
}
|
126
|
+
|
127
|
+
return ourScope;
|
128
|
+
};
|
129
|
+
|
130
|
+
NodePath.prototype.setData = function setData(key, val) {
|
131
|
+
return this.data[key] = val;
|
132
|
+
};
|
133
|
+
|
134
|
+
NodePath.prototype.getData = function getData(key, def) {
|
135
|
+
var val = this.data[key];
|
136
|
+
if (!val && def) val = this.data[key] = def;
|
137
|
+
return val;
|
138
|
+
};
|
139
|
+
|
140
|
+
NodePath.prototype.buildCodeFrameError = function buildCodeFrameError(msg) {
|
141
|
+
var Error = arguments.length <= 1 || arguments[1] === undefined ? SyntaxError : arguments[1];
|
142
|
+
|
143
|
+
return this.hub.file.buildCodeFrameError(this.node, msg, Error);
|
144
|
+
};
|
145
|
+
|
146
|
+
NodePath.prototype.traverse = function traverse(visitor, state) {
|
147
|
+
(0, _index2.default)(this.node, visitor, this.scope, state, this);
|
148
|
+
};
|
149
|
+
|
150
|
+
NodePath.prototype.mark = function mark(type, message) {
|
151
|
+
this.hub.file.metadata.marked.push({
|
152
|
+
type: type,
|
153
|
+
message: message,
|
154
|
+
loc: this.node.loc
|
155
|
+
});
|
156
|
+
};
|
157
|
+
|
158
|
+
NodePath.prototype.set = function set(key, node) {
|
159
|
+
t.validate(this.node, key, node);
|
160
|
+
this.node[key] = node;
|
161
|
+
};
|
162
|
+
|
163
|
+
NodePath.prototype.getPathLocation = function getPathLocation() {
|
164
|
+
var parts = [];
|
165
|
+
var path = this;
|
166
|
+
do {
|
167
|
+
var key = path.key;
|
168
|
+
if (path.inList) key = path.listKey + "[" + key + "]";
|
169
|
+
parts.unshift(key);
|
170
|
+
} while (path = path.parentPath);
|
171
|
+
return parts.join(".");
|
172
|
+
};
|
173
|
+
|
174
|
+
NodePath.prototype.debug = function debug(buildMessage) {
|
175
|
+
if (!_debug.enabled) return;
|
176
|
+
_debug(this.getPathLocation() + " " + this.type + ": " + buildMessage());
|
177
|
+
};
|
178
|
+
|
179
|
+
return NodePath;
|
180
|
+
}();
|
181
|
+
|
182
|
+
exports.default = NodePath;
|
183
|
+
|
184
|
+
|
185
|
+
(0, _assign2.default)(NodePath.prototype, require("./ancestry"));
|
186
|
+
(0, _assign2.default)(NodePath.prototype, require("./inference"));
|
187
|
+
(0, _assign2.default)(NodePath.prototype, require("./replacement"));
|
188
|
+
(0, _assign2.default)(NodePath.prototype, require("./evaluation"));
|
189
|
+
(0, _assign2.default)(NodePath.prototype, require("./conversion"));
|
190
|
+
(0, _assign2.default)(NodePath.prototype, require("./introspection"));
|
191
|
+
(0, _assign2.default)(NodePath.prototype, require("./context"));
|
192
|
+
(0, _assign2.default)(NodePath.prototype, require("./removal"));
|
193
|
+
(0, _assign2.default)(NodePath.prototype, require("./modification"));
|
194
|
+
(0, _assign2.default)(NodePath.prototype, require("./family"));
|
195
|
+
(0, _assign2.default)(NodePath.prototype, require("./comments"));
|
196
|
+
|
197
|
+
var _loop2 = function _loop2() {
|
198
|
+
if (_isArray) {
|
199
|
+
if (_i >= _iterator.length) return "break";
|
200
|
+
_ref2 = _iterator[_i++];
|
201
|
+
} else {
|
202
|
+
_i = _iterator.next();
|
203
|
+
if (_i.done) return "break";
|
204
|
+
_ref2 = _i.value;
|
205
|
+
}
|
206
|
+
|
207
|
+
var type = _ref2;
|
208
|
+
|
209
|
+
var typeKey = "is" + type;
|
210
|
+
NodePath.prototype[typeKey] = function (opts) {
|
211
|
+
return t[typeKey](this.node, opts);
|
212
|
+
};
|
213
|
+
|
214
|
+
NodePath.prototype["assert" + type] = function (opts) {
|
215
|
+
if (!this[typeKey](opts)) {
|
216
|
+
throw new TypeError("Expected node path of type " + type);
|
217
|
+
}
|
218
|
+
};
|
219
|
+
};
|
220
|
+
|
221
|
+
for (var _iterator = t.TYPES, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
|
222
|
+
var _ref2;
|
223
|
+
|
224
|
+
var _ret2 = _loop2();
|
225
|
+
|
226
|
+
if (_ret2 === "break") break;
|
227
|
+
}
|
228
|
+
|
229
|
+
var _loop = function _loop(type) {
|
230
|
+
if (type[0] === "_") return "continue";
|
231
|
+
if (t.TYPES.indexOf(type) < 0) t.TYPES.push(type);
|
232
|
+
|
233
|
+
var virtualType = virtualTypes[type];
|
234
|
+
|
235
|
+
NodePath.prototype["is" + type] = function (opts) {
|
236
|
+
return virtualType.checkPath(this, opts);
|
237
|
+
};
|
238
|
+
};
|
239
|
+
|
240
|
+
for (var type in virtualTypes) {
|
241
|
+
var _ret = _loop(type);
|
242
|
+
|
243
|
+
if (_ret === "continue") continue;
|
244
|
+
}
|
245
|
+
module.exports = exports["default"];
|
@@ -0,0 +1,151 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
|
5
|
+
var _getIterator2 = require("babel-runtime/core-js/get-iterator");
|
6
|
+
|
7
|
+
var _getIterator3 = _interopRequireDefault(_getIterator2);
|
8
|
+
|
9
|
+
exports.getTypeAnnotation = getTypeAnnotation;
|
10
|
+
exports._getTypeAnnotation = _getTypeAnnotation;
|
11
|
+
exports.isBaseType = isBaseType;
|
12
|
+
exports.couldBeBaseType = couldBeBaseType;
|
13
|
+
exports.baseTypeStrictlyMatches = baseTypeStrictlyMatches;
|
14
|
+
exports.isGenericType = isGenericType;
|
15
|
+
|
16
|
+
var _inferers = require("./inferers");
|
17
|
+
|
18
|
+
var inferers = _interopRequireWildcard(_inferers);
|
19
|
+
|
20
|
+
var _babelTypes = require("babel-types");
|
21
|
+
|
22
|
+
var t = _interopRequireWildcard(_babelTypes);
|
23
|
+
|
24
|
+
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)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
25
|
+
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Infer the type of the current `NodePath`.
|
30
|
+
*/
|
31
|
+
|
32
|
+
function getTypeAnnotation() {
|
33
|
+
if (this.typeAnnotation) return this.typeAnnotation;
|
34
|
+
|
35
|
+
var type = this._getTypeAnnotation() || t.anyTypeAnnotation();
|
36
|
+
if (t.isTypeAnnotation(type)) type = type.typeAnnotation;
|
37
|
+
return this.typeAnnotation = type;
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* todo: split up this method
|
42
|
+
*/
|
43
|
+
|
44
|
+
function _getTypeAnnotation() {
|
45
|
+
var node = this.node;
|
46
|
+
|
47
|
+
if (!node) {
|
48
|
+
// handle initializerless variables, add in checks for loop initializers too
|
49
|
+
if (this.key === "init" && this.parentPath.isVariableDeclarator()) {
|
50
|
+
var declar = this.parentPath.parentPath;
|
51
|
+
var declarParent = declar.parentPath;
|
52
|
+
|
53
|
+
// for (let NODE in bar) {}
|
54
|
+
if (declar.key === "left" && declarParent.isForInStatement()) {
|
55
|
+
return t.stringTypeAnnotation();
|
56
|
+
}
|
57
|
+
|
58
|
+
// for (let NODE of bar) {}
|
59
|
+
if (declar.key === "left" && declarParent.isForOfStatement()) {
|
60
|
+
return t.anyTypeAnnotation();
|
61
|
+
}
|
62
|
+
|
63
|
+
return t.voidTypeAnnotation();
|
64
|
+
} else {
|
65
|
+
return;
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
if (node.typeAnnotation) {
|
70
|
+
return node.typeAnnotation;
|
71
|
+
}
|
72
|
+
|
73
|
+
var inferer = inferers[node.type];
|
74
|
+
if (inferer) {
|
75
|
+
return inferer.call(this, node);
|
76
|
+
}
|
77
|
+
|
78
|
+
inferer = inferers[this.parentPath.type];
|
79
|
+
if (inferer && inferer.validParent) {
|
80
|
+
return this.parentPath.getTypeAnnotation();
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
function isBaseType(baseName, soft) {
|
85
|
+
return _isBaseType(baseName, this.getTypeAnnotation(), soft);
|
86
|
+
}
|
87
|
+
|
88
|
+
function _isBaseType(baseName, type, soft) {
|
89
|
+
if (baseName === "string") {
|
90
|
+
return t.isStringTypeAnnotation(type);
|
91
|
+
} else if (baseName === "number") {
|
92
|
+
return t.isNumberTypeAnnotation(type);
|
93
|
+
} else if (baseName === "boolean") {
|
94
|
+
return t.isBooleanTypeAnnotation(type);
|
95
|
+
} else if (baseName === "any") {
|
96
|
+
return t.isAnyTypeAnnotation(type);
|
97
|
+
} else if (baseName === "mixed") {
|
98
|
+
return t.isMixedTypeAnnotation(type);
|
99
|
+
} else if (baseName === "void") {
|
100
|
+
return t.isVoidTypeAnnotation(type);
|
101
|
+
} else {
|
102
|
+
if (soft) {
|
103
|
+
return false;
|
104
|
+
} else {
|
105
|
+
throw new Error("Unknown base type " + baseName);
|
106
|
+
}
|
107
|
+
}
|
108
|
+
}
|
109
|
+
|
110
|
+
function couldBeBaseType(name) {
|
111
|
+
var type = this.getTypeAnnotation();
|
112
|
+
if (t.isAnyTypeAnnotation(type)) return true;
|
113
|
+
|
114
|
+
if (t.isUnionTypeAnnotation(type)) {
|
115
|
+
for (var _iterator = type.types, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
|
116
|
+
var _ref;
|
117
|
+
|
118
|
+
if (_isArray) {
|
119
|
+
if (_i >= _iterator.length) break;
|
120
|
+
_ref = _iterator[_i++];
|
121
|
+
} else {
|
122
|
+
_i = _iterator.next();
|
123
|
+
if (_i.done) break;
|
124
|
+
_ref = _i.value;
|
125
|
+
}
|
126
|
+
|
127
|
+
var type2 = _ref;
|
128
|
+
|
129
|
+
if (t.isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {
|
130
|
+
return true;
|
131
|
+
}
|
132
|
+
}
|
133
|
+
return false;
|
134
|
+
} else {
|
135
|
+
return _isBaseType(name, type, true);
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
function baseTypeStrictlyMatches(right) {
|
140
|
+
var left = this.getTypeAnnotation();
|
141
|
+
right = right.getTypeAnnotation();
|
142
|
+
|
143
|
+
if (!t.isAnyTypeAnnotation(left) && t.isFlowBaseAnnotation(left)) {
|
144
|
+
return right.type === left.type;
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
function isGenericType(genericName) {
|
149
|
+
var type = this.getTypeAnnotation();
|
150
|
+
return t.isGenericTypeAnnotation(type) && t.isIdentifier(type.id, { name: genericName });
|
151
|
+
}
|