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,83 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
exports.isReactComponent = undefined;
|
5
|
+
exports.isCompatTag = isCompatTag;
|
6
|
+
exports.buildChildren = buildChildren;
|
7
|
+
|
8
|
+
var _index = require("./index");
|
9
|
+
|
10
|
+
var t = _interopRequireWildcard(_index);
|
11
|
+
|
12
|
+
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; } }
|
13
|
+
|
14
|
+
var isReactComponent = exports.isReactComponent = t.buildMatchMemberExpression("React.Component");
|
15
|
+
|
16
|
+
function isCompatTag(tagName) {
|
17
|
+
return !!tagName && /^[a-z]|\-/.test(tagName);
|
18
|
+
}
|
19
|
+
|
20
|
+
function cleanJSXElementLiteralChild(child, args) {
|
21
|
+
var lines = child.value.split(/\r\n|\n|\r/);
|
22
|
+
|
23
|
+
var lastNonEmptyLine = 0;
|
24
|
+
|
25
|
+
for (var i = 0; i < lines.length; i++) {
|
26
|
+
if (lines[i].match(/[^ \t]/)) {
|
27
|
+
lastNonEmptyLine = i;
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
var str = "";
|
32
|
+
|
33
|
+
for (var _i = 0; _i < lines.length; _i++) {
|
34
|
+
var line = lines[_i];
|
35
|
+
|
36
|
+
var isFirstLine = _i === 0;
|
37
|
+
var isLastLine = _i === lines.length - 1;
|
38
|
+
var isLastNonEmptyLine = _i === lastNonEmptyLine;
|
39
|
+
|
40
|
+
// replace rendered whitespace tabs with spaces
|
41
|
+
var trimmedLine = line.replace(/\t/g, " ");
|
42
|
+
|
43
|
+
// trim whitespace touching a newline
|
44
|
+
if (!isFirstLine) {
|
45
|
+
trimmedLine = trimmedLine.replace(/^[ ]+/, "");
|
46
|
+
}
|
47
|
+
|
48
|
+
// trim whitespace touching an endline
|
49
|
+
if (!isLastLine) {
|
50
|
+
trimmedLine = trimmedLine.replace(/[ ]+$/, "");
|
51
|
+
}
|
52
|
+
|
53
|
+
if (trimmedLine) {
|
54
|
+
if (!isLastNonEmptyLine) {
|
55
|
+
trimmedLine += " ";
|
56
|
+
}
|
57
|
+
|
58
|
+
str += trimmedLine;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
if (str) args.push(t.stringLiteral(str));
|
63
|
+
}
|
64
|
+
|
65
|
+
function buildChildren(node) {
|
66
|
+
var elems = [];
|
67
|
+
|
68
|
+
for (var i = 0; i < node.children.length; i++) {
|
69
|
+
var child = node.children[i];
|
70
|
+
|
71
|
+
if (t.isJSXText(child)) {
|
72
|
+
cleanJSXElementLiteralChild(child, elems);
|
73
|
+
continue;
|
74
|
+
}
|
75
|
+
|
76
|
+
if (t.isJSXExpressionContainer(child)) child = child.expression;
|
77
|
+
if (t.isJSXEmptyExpression(child)) continue;
|
78
|
+
|
79
|
+
elems.push(child);
|
80
|
+
}
|
81
|
+
|
82
|
+
return elems;
|
83
|
+
}
|
@@ -0,0 +1,123 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
|
5
|
+
var _create = require("babel-runtime/core-js/object/create");
|
6
|
+
|
7
|
+
var _create2 = _interopRequireDefault(_create);
|
8
|
+
|
9
|
+
exports.getBindingIdentifiers = getBindingIdentifiers;
|
10
|
+
exports.getOuterBindingIdentifiers = getOuterBindingIdentifiers;
|
11
|
+
|
12
|
+
var _index = require("./index");
|
13
|
+
|
14
|
+
var t = _interopRequireWildcard(_index);
|
15
|
+
|
16
|
+
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; } }
|
17
|
+
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
19
|
+
|
20
|
+
/**
|
21
|
+
* Return a list of binding identifiers associated with the input `node`.
|
22
|
+
*/
|
23
|
+
|
24
|
+
function getBindingIdentifiers(node, duplicates, outerOnly) {
|
25
|
+
var search = [].concat(node);
|
26
|
+
var ids = (0, _create2.default)(null);
|
27
|
+
|
28
|
+
while (search.length) {
|
29
|
+
var id = search.shift();
|
30
|
+
if (!id) continue;
|
31
|
+
|
32
|
+
var keys = t.getBindingIdentifiers.keys[id.type];
|
33
|
+
|
34
|
+
if (t.isIdentifier(id)) {
|
35
|
+
if (duplicates) {
|
36
|
+
var _ids = ids[id.name] = ids[id.name] || [];
|
37
|
+
_ids.push(id);
|
38
|
+
} else {
|
39
|
+
ids[id.name] = id;
|
40
|
+
}
|
41
|
+
continue;
|
42
|
+
}
|
43
|
+
|
44
|
+
if (t.isExportDeclaration(id)) {
|
45
|
+
if (t.isDeclaration(node.declaration)) {
|
46
|
+
search.push(node.declaration);
|
47
|
+
}
|
48
|
+
continue;
|
49
|
+
}
|
50
|
+
|
51
|
+
if (outerOnly) {
|
52
|
+
if (t.isFunctionDeclaration(id)) {
|
53
|
+
search.push(id.id);
|
54
|
+
continue;
|
55
|
+
}
|
56
|
+
|
57
|
+
if (t.isFunctionExpression(id)) {
|
58
|
+
continue;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
if (keys) {
|
63
|
+
for (var i = 0; i < keys.length; i++) {
|
64
|
+
var key = keys[i];
|
65
|
+
if (id[key]) {
|
66
|
+
search = search.concat(id[key]);
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
return ids;
|
73
|
+
}
|
74
|
+
|
75
|
+
/**
|
76
|
+
* Mapping of types to their identifier keys.
|
77
|
+
*/
|
78
|
+
|
79
|
+
getBindingIdentifiers.keys = {
|
80
|
+
DeclareClass: ["id"],
|
81
|
+
DeclareFunction: ["id"],
|
82
|
+
DeclareModule: ["id"],
|
83
|
+
DeclareVariable: ["id"],
|
84
|
+
InterfaceDeclaration: ["id"],
|
85
|
+
TypeAlias: ["id"],
|
86
|
+
|
87
|
+
CatchClause: ["param"],
|
88
|
+
LabeledStatement: ["label"],
|
89
|
+
UnaryExpression: ["argument"],
|
90
|
+
AssignmentExpression: ["left"],
|
91
|
+
|
92
|
+
ImportSpecifier: ["local"],
|
93
|
+
ImportNamespaceSpecifier: ["local"],
|
94
|
+
ImportDefaultSpecifier: ["local"],
|
95
|
+
ImportDeclaration: ["specifiers"],
|
96
|
+
|
97
|
+
ExportSpecifier: ["exported"],
|
98
|
+
ExportNamespaceSpecifier: ["exported"],
|
99
|
+
ExportDefaultSpecifier: ["exported"],
|
100
|
+
|
101
|
+
FunctionDeclaration: ["id", "params"],
|
102
|
+
FunctionExpression: ["id", "params"],
|
103
|
+
|
104
|
+
ClassDeclaration: ["id"],
|
105
|
+
ClassExpression: ["id"],
|
106
|
+
|
107
|
+
RestElement: ["argument"],
|
108
|
+
UpdateExpression: ["argument"],
|
109
|
+
|
110
|
+
RestProperty: ["argument"],
|
111
|
+
ObjectProperty: ["value"],
|
112
|
+
|
113
|
+
AssignmentPattern: ["left"],
|
114
|
+
ArrayPattern: ["elements"],
|
115
|
+
ObjectPattern: ["properties"],
|
116
|
+
|
117
|
+
VariableDeclaration: ["declarations"],
|
118
|
+
VariableDeclarator: ["id"]
|
119
|
+
};
|
120
|
+
|
121
|
+
function getOuterBindingIdentifiers(node, duplicates) {
|
122
|
+
return getBindingIdentifiers(node, duplicates, true);
|
123
|
+
}
|
@@ -0,0 +1,276 @@
|
|
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.isBinding = isBinding;
|
10
|
+
exports.isReferenced = isReferenced;
|
11
|
+
exports.isValidIdentifier = isValidIdentifier;
|
12
|
+
exports.isLet = isLet;
|
13
|
+
exports.isBlockScoped = isBlockScoped;
|
14
|
+
exports.isVar = isVar;
|
15
|
+
exports.isSpecifierDefault = isSpecifierDefault;
|
16
|
+
exports.isScope = isScope;
|
17
|
+
exports.isImmutable = isImmutable;
|
18
|
+
|
19
|
+
var _retrievers = require("./retrievers");
|
20
|
+
|
21
|
+
var _esutils = require("esutils");
|
22
|
+
|
23
|
+
var _esutils2 = _interopRequireDefault(_esutils);
|
24
|
+
|
25
|
+
var _index = require("./index");
|
26
|
+
|
27
|
+
var t = _interopRequireWildcard(_index);
|
28
|
+
|
29
|
+
var _constants = require("./constants");
|
30
|
+
|
31
|
+
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; } }
|
32
|
+
|
33
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Check if the input `node` is a binding identifier.
|
37
|
+
*/
|
38
|
+
|
39
|
+
/* eslint indent: 0 */
|
40
|
+
|
41
|
+
function isBinding(node, parent) {
|
42
|
+
var keys = _retrievers.getBindingIdentifiers.keys[parent.type];
|
43
|
+
if (keys) {
|
44
|
+
for (var i = 0; i < keys.length; i++) {
|
45
|
+
var key = keys[i];
|
46
|
+
var val = parent[key];
|
47
|
+
if (Array.isArray(val)) {
|
48
|
+
if (val.indexOf(node) >= 0) return true;
|
49
|
+
} else {
|
50
|
+
if (val === node) return true;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
return false;
|
56
|
+
}
|
57
|
+
|
58
|
+
/**
|
59
|
+
* Check if the input `node` is a reference to a bound variable.
|
60
|
+
*/
|
61
|
+
|
62
|
+
function isReferenced(node, parent) {
|
63
|
+
switch (parent.type) {
|
64
|
+
// yes: object::NODE
|
65
|
+
// yes: NODE::callee
|
66
|
+
case "BindExpression":
|
67
|
+
return parent.object === node || parent.callee === node;
|
68
|
+
|
69
|
+
// yes: PARENT[NODE]
|
70
|
+
// yes: NODE.child
|
71
|
+
// no: parent.NODE
|
72
|
+
case "MemberExpression":
|
73
|
+
case "JSXMemberExpression":
|
74
|
+
if (parent.property === node && parent.computed) {
|
75
|
+
return true;
|
76
|
+
} else if (parent.object === node) {
|
77
|
+
return true;
|
78
|
+
} else {
|
79
|
+
return false;
|
80
|
+
}
|
81
|
+
|
82
|
+
// no: new.NODE
|
83
|
+
// no: NODE.target
|
84
|
+
case "MetaProperty":
|
85
|
+
return false;
|
86
|
+
|
87
|
+
// yes: { [NODE]: "" }
|
88
|
+
// yes: { NODE }
|
89
|
+
// no: { NODE: "" }
|
90
|
+
case "ObjectProperty":
|
91
|
+
if (parent.key === node) {
|
92
|
+
return parent.computed;
|
93
|
+
}
|
94
|
+
|
95
|
+
// no: let NODE = init;
|
96
|
+
// yes: let id = NODE;
|
97
|
+
case "VariableDeclarator":
|
98
|
+
return parent.id !== node;
|
99
|
+
|
100
|
+
// no: function NODE() {}
|
101
|
+
// no: function foo(NODE) {}
|
102
|
+
case "ArrowFunctionExpression":
|
103
|
+
case "FunctionDeclaration":
|
104
|
+
case "FunctionExpression":
|
105
|
+
for (var _iterator = parent.params, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
|
106
|
+
var _ref;
|
107
|
+
|
108
|
+
if (_isArray) {
|
109
|
+
if (_i >= _iterator.length) break;
|
110
|
+
_ref = _iterator[_i++];
|
111
|
+
} else {
|
112
|
+
_i = _iterator.next();
|
113
|
+
if (_i.done) break;
|
114
|
+
_ref = _i.value;
|
115
|
+
}
|
116
|
+
|
117
|
+
var param = _ref;
|
118
|
+
|
119
|
+
if (param === node) return false;
|
120
|
+
}
|
121
|
+
|
122
|
+
return parent.id !== node;
|
123
|
+
|
124
|
+
// no: export { foo as NODE };
|
125
|
+
// yes: export { NODE as foo };
|
126
|
+
// no: export { NODE as foo } from "foo";
|
127
|
+
case "ExportSpecifier":
|
128
|
+
if (parent.source) {
|
129
|
+
return false;
|
130
|
+
} else {
|
131
|
+
return parent.local === node;
|
132
|
+
}
|
133
|
+
|
134
|
+
// no: export NODE from "foo";
|
135
|
+
// no: export * as NODE from "foo";
|
136
|
+
case "ExportNamespaceSpecifier":
|
137
|
+
case "ExportDefaultSpecifier":
|
138
|
+
return false;
|
139
|
+
|
140
|
+
// no: <div NODE="foo" />
|
141
|
+
case "JSXAttribute":
|
142
|
+
return parent.name !== node;
|
143
|
+
|
144
|
+
// no: class { NODE = value; }
|
145
|
+
// yes: class { key = NODE; }
|
146
|
+
case "ClassProperty":
|
147
|
+
return parent.value === node;
|
148
|
+
|
149
|
+
// no: import NODE from "foo";
|
150
|
+
// no: import * as NODE from "foo";
|
151
|
+
// no: import { NODE as foo } from "foo";
|
152
|
+
// no: import { foo as NODE } from "foo";
|
153
|
+
// no: import NODE from "bar";
|
154
|
+
case "ImportDefaultSpecifier":
|
155
|
+
case "ImportNamespaceSpecifier":
|
156
|
+
case "ImportSpecifier":
|
157
|
+
return false;
|
158
|
+
|
159
|
+
// no: class NODE {}
|
160
|
+
case "ClassDeclaration":
|
161
|
+
case "ClassExpression":
|
162
|
+
return parent.id !== node;
|
163
|
+
|
164
|
+
// yes: class { [NODE]() {} }
|
165
|
+
case "ClassMethod":
|
166
|
+
case "ObjectMethod":
|
167
|
+
return parent.key === node && parent.computed;
|
168
|
+
|
169
|
+
// no: NODE: for (;;) {}
|
170
|
+
case "LabeledStatement":
|
171
|
+
return false;
|
172
|
+
|
173
|
+
// no: try {} catch (NODE) {}
|
174
|
+
case "CatchClause":
|
175
|
+
return parent.param !== node;
|
176
|
+
|
177
|
+
// no: function foo(...NODE) {}
|
178
|
+
case "RestElement":
|
179
|
+
return false;
|
180
|
+
|
181
|
+
// yes: left = NODE;
|
182
|
+
// no: NODE = right;
|
183
|
+
case "AssignmentExpression":
|
184
|
+
return parent.right === node;
|
185
|
+
|
186
|
+
// no: [NODE = foo] = [];
|
187
|
+
// yes: [foo = NODE] = [];
|
188
|
+
case "AssignmentPattern":
|
189
|
+
return parent.right === node;
|
190
|
+
|
191
|
+
// no: [NODE] = [];
|
192
|
+
// no: ({ NODE }) = [];
|
193
|
+
case "ObjectPattern":
|
194
|
+
case "ArrayPattern":
|
195
|
+
return false;
|
196
|
+
}
|
197
|
+
|
198
|
+
return true;
|
199
|
+
}
|
200
|
+
|
201
|
+
/**
|
202
|
+
* Check if the input `name` is a valid identifier name
|
203
|
+
* and isn't a reserved word.
|
204
|
+
*/
|
205
|
+
|
206
|
+
function isValidIdentifier(name) {
|
207
|
+
if (typeof name !== "string" || _esutils2.default.keyword.isReservedWordES6(name, true)) {
|
208
|
+
return false;
|
209
|
+
} else {
|
210
|
+
return _esutils2.default.keyword.isIdentifierNameES6(name);
|
211
|
+
}
|
212
|
+
}
|
213
|
+
|
214
|
+
/**
|
215
|
+
* Check if the input `node` is a `let` variable declaration.
|
216
|
+
*/
|
217
|
+
|
218
|
+
function isLet(node) {
|
219
|
+
return t.isVariableDeclaration(node) && (node.kind !== "var" || node[_constants.BLOCK_SCOPED_SYMBOL]);
|
220
|
+
}
|
221
|
+
|
222
|
+
/**
|
223
|
+
* Check if the input `node` is block scoped.
|
224
|
+
*/
|
225
|
+
|
226
|
+
function isBlockScoped(node) {
|
227
|
+
return t.isFunctionDeclaration(node) || t.isClassDeclaration(node) || t.isLet(node);
|
228
|
+
}
|
229
|
+
|
230
|
+
/**
|
231
|
+
* Check if the input `node` is a variable declaration.
|
232
|
+
*/
|
233
|
+
|
234
|
+
function isVar(node) {
|
235
|
+
return t.isVariableDeclaration(node, { kind: "var" }) && !node[_constants.BLOCK_SCOPED_SYMBOL];
|
236
|
+
}
|
237
|
+
|
238
|
+
/**
|
239
|
+
* Check if the input `specifier` is a `default` import or export.
|
240
|
+
*/
|
241
|
+
|
242
|
+
function isSpecifierDefault(specifier) {
|
243
|
+
return t.isImportDefaultSpecifier(specifier) || t.isIdentifier(specifier.imported || specifier.exported, { name: "default" });
|
244
|
+
}
|
245
|
+
|
246
|
+
/**
|
247
|
+
* Check if the input `node` is a scope.
|
248
|
+
*/
|
249
|
+
|
250
|
+
function isScope(node, parent) {
|
251
|
+
if (t.isBlockStatement(node) && t.isFunction(parent, { body: node })) {
|
252
|
+
return false;
|
253
|
+
}
|
254
|
+
|
255
|
+
return t.isScopable(node);
|
256
|
+
}
|
257
|
+
|
258
|
+
/**
|
259
|
+
* Check if the input `node` is definitely immutable.
|
260
|
+
*/
|
261
|
+
|
262
|
+
function isImmutable(node) {
|
263
|
+
if (t.isType(node.type, "Immutable")) return true;
|
264
|
+
|
265
|
+
if (t.isIdentifier(node)) {
|
266
|
+
if (node.name === "undefined") {
|
267
|
+
// immutable!
|
268
|
+
return true;
|
269
|
+
} else {
|
270
|
+
// no idea...
|
271
|
+
return false;
|
272
|
+
}
|
273
|
+
}
|
274
|
+
|
275
|
+
return false;
|
276
|
+
}
|