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.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/bin/console +14 -0
  3. data/bin/export-external-helpers +3 -0
  4. data/bin/setup +6 -0
  5. data/bin/update-npm-deps +8 -0
  6. data/examples/myapp/Gemfile +4 -5
  7. data/examples/myapp/Gemfile.lock +69 -93
  8. data/examples/myapp/app/assets/javascripts/code/hello.es6 +5 -1
  9. data/examples/myapp/app/views/layouts/application.html.erb +1 -0
  10. data/examples/myapp/app/views/site/home.html.erb +0 -1
  11. data/lib/babel-schmooze-sprockets/babel_processor.rb +6 -4
  12. data/lib/babel-schmooze-sprockets/engine.rb +1 -4
  13. data/lib/babel-schmooze-sprockets/version.rb +1 -1
  14. data/node_modules/amdefine/package.json +8 -1
  15. data/node_modules/babel-core/node_modules/babel-runtime/package.json +9 -5
  16. data/node_modules/babel-core/node_modules/babel-traverse/.npmignore +3 -0
  17. data/node_modules/babel-core/node_modules/babel-traverse/README.md +1 -0
  18. data/node_modules/babel-core/node_modules/babel-traverse/lib/cache.js +20 -0
  19. data/node_modules/babel-core/node_modules/babel-traverse/lib/context.js +219 -0
  20. data/node_modules/babel-core/node_modules/babel-traverse/lib/hub.js +19 -0
  21. data/node_modules/babel-core/node_modules/babel-traverse/lib/index.js +250 -0
  22. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/ancestry.js +317 -0
  23. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/comments.js +55 -0
  24. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/context.js +297 -0
  25. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/conversion.js +48 -0
  26. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/evaluation.js +406 -0
  27. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/family.js +168 -0
  28. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/index.js +245 -0
  29. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/index.js +151 -0
  30. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/inferer-reference.js +225 -0
  31. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/inference/inferers.js +198 -0
  32. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/introspection.js +518 -0
  33. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/hoister.js +166 -0
  34. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/removal-hooks.js +64 -0
  35. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/lib/virtual-types.js +141 -0
  36. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/modification.js +293 -0
  37. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/removal.js +72 -0
  38. data/node_modules/babel-core/node_modules/babel-traverse/lib/path/replacement.js +302 -0
  39. data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/binding.js +105 -0
  40. data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/index.js +1222 -0
  41. data/node_modules/babel-core/node_modules/babel-traverse/lib/scope/lib/renamer.js +154 -0
  42. data/node_modules/babel-core/node_modules/babel-traverse/lib/visitors.js +360 -0
  43. data/node_modules/babel-core/node_modules/babel-traverse/package.json +107 -0
  44. data/node_modules/babel-core/node_modules/core-js/package.json +20 -2
  45. data/node_modules/babel-core/package.json +31 -24
  46. data/node_modules/babel-generator/lib/buffer.js +69 -70
  47. data/node_modules/babel-generator/lib/generators/base.js +16 -12
  48. data/node_modules/babel-generator/lib/generators/classes.js +28 -19
  49. data/node_modules/babel-generator/lib/generators/expressions.js +76 -99
  50. data/node_modules/babel-generator/lib/generators/flow.js +178 -119
  51. data/node_modules/babel-generator/lib/generators/jsx.js +38 -29
  52. data/node_modules/babel-generator/lib/generators/methods.js +34 -25
  53. data/node_modules/babel-generator/lib/generators/modules.js +67 -40
  54. data/node_modules/babel-generator/lib/generators/statements.js +93 -76
  55. data/node_modules/babel-generator/lib/generators/template-literals.js +12 -11
  56. data/node_modules/babel-generator/lib/generators/types.js +56 -49
  57. data/node_modules/babel-generator/lib/index.js +52 -39
  58. data/node_modules/babel-generator/lib/node/index.js +12 -18
  59. data/node_modules/babel-generator/lib/node/parentheses.js +23 -27
  60. data/node_modules/babel-generator/lib/node/whitespace.js +20 -26
  61. data/node_modules/babel-generator/lib/position.js +5 -5
  62. data/node_modules/babel-generator/lib/printer.js +52 -81
  63. data/node_modules/babel-generator/lib/source-map.js +9 -11
  64. data/node_modules/babel-generator/lib/whitespace.js +13 -13
  65. data/node_modules/babel-generator/node_modules/babel-runtime/package.json +19 -6
  66. data/node_modules/babel-generator/node_modules/babel-types/.npmignore +3 -0
  67. data/node_modules/babel-generator/node_modules/babel-types/README.md +1141 -0
  68. data/node_modules/babel-generator/node_modules/babel-types/lib/constants.js +40 -0
  69. data/node_modules/babel-generator/node_modules/babel-types/lib/converters.js +378 -0
  70. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/core.js +704 -0
  71. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/es2015.js +354 -0
  72. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/experimental.js +85 -0
  73. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/flow.js +319 -0
  74. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/index.js +247 -0
  75. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/init.js +15 -0
  76. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/jsx.js +137 -0
  77. data/node_modules/babel-generator/node_modules/babel-types/lib/definitions/misc.js +21 -0
  78. data/node_modules/babel-generator/node_modules/babel-types/lib/flow.js +129 -0
  79. data/node_modules/babel-generator/node_modules/babel-types/lib/index.js +848 -0
  80. data/node_modules/babel-generator/node_modules/babel-types/lib/react.js +83 -0
  81. data/node_modules/babel-generator/node_modules/babel-types/lib/retrievers.js +123 -0
  82. data/node_modules/babel-generator/node_modules/babel-types/lib/validators.js +276 -0
  83. data/node_modules/babel-generator/node_modules/babel-types/package.json +103 -0
  84. data/node_modules/babel-generator/node_modules/core-js/package.json +10 -5
  85. data/node_modules/babel-generator/package.json +19 -16
  86. data/node_modules/babel-helpers/node_modules/babel-runtime/package.json +19 -3
  87. data/node_modules/babel-helpers/node_modules/core-js/package.json +20 -4
  88. data/node_modules/babel-helpers/package.json +8 -1
  89. data/node_modules/babel-register/node_modules/babel-runtime/package.json +19 -3
  90. data/node_modules/babel-register/node_modules/core-js/package.json +20 -4
  91. data/node_modules/babel-register/package.json +8 -1
  92. data/node_modules/balanced-match/package.json +8 -1
  93. data/node_modules/brace-expansion/package.json +19 -12
  94. data/node_modules/concat-map/package.json +9 -2
  95. data/node_modules/convert-source-map/package.json +8 -1
  96. data/node_modules/detect-indent/package.json +8 -1
  97. data/node_modules/get-stdin/package.json +8 -1
  98. data/node_modules/home-or-tmp/package.json +9 -2
  99. data/node_modules/is-finite/package.json +8 -2
  100. data/node_modules/json5/package.json +8 -1
  101. data/node_modules/minimatch/README.md +2 -9
  102. data/node_modules/minimatch/minimatch.js +15 -3
  103. data/node_modules/minimatch/package.json +29 -21
  104. data/node_modules/minimist/package.json +8 -1
  105. data/node_modules/mkdirp/node_modules/minimist/package.json +8 -1
  106. data/node_modules/mkdirp/package.json +8 -1
  107. data/node_modules/number-is-nan/package.json +8 -1
  108. data/node_modules/os-tmpdir/package.json +8 -1
  109. data/node_modules/path-exists/package.json +8 -1
  110. data/node_modules/path-is-absolute/package.json +8 -1
  111. data/node_modules/repeating/package.json +15 -11
  112. data/node_modules/shebang-regex/package.json +8 -1
  113. data/node_modules/slash/package.json +8 -1
  114. data/node_modules/source-map-support/node_modules/source-map/package.json +8 -1
  115. data/node_modules/source-map-support/package.json +8 -1
  116. data/node_modules/source-map/package.json +8 -1
  117. data/node_modules/user-home/package.json +8 -1
  118. data/package.json +1 -1
  119. metadata +54 -6
  120. data/node_modules/brace-expansion/.npmignore +0 -3
  121. data/node_modules/brace-expansion/example.js +0 -8
  122. data/node_modules/minimatch/browser.js +0 -1159
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.NODE_FIELDS = exports.ALIAS_KEYS = exports.VISITOR_KEYS = undefined;
5
+
6
+ var _getIterator2 = require("babel-runtime/core-js/get-iterator");
7
+
8
+ var _getIterator3 = _interopRequireDefault(_getIterator2);
9
+
10
+ var _stringify = require("babel-runtime/core-js/json/stringify");
11
+
12
+ var _stringify2 = _interopRequireDefault(_stringify);
13
+
14
+ var _typeof2 = require("babel-runtime/helpers/typeof");
15
+
16
+ var _typeof3 = _interopRequireDefault(_typeof2);
17
+
18
+ exports.assertEach = assertEach;
19
+ exports.assertOneOf = assertOneOf;
20
+ exports.assertNodeType = assertNodeType;
21
+ exports.assertNodeOrValueType = assertNodeOrValueType;
22
+ exports.assertValueType = assertValueType;
23
+ exports.chain = chain;
24
+ exports.default = defineType;
25
+
26
+ var _index = require("../index");
27
+
28
+ var t = _interopRequireWildcard(_index);
29
+
30
+ 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; } }
31
+
32
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
+
34
+ var VISITOR_KEYS = exports.VISITOR_KEYS = {};
35
+ var ALIAS_KEYS = exports.ALIAS_KEYS = {};
36
+ var NODE_FIELDS = exports.NODE_FIELDS = {};
37
+ var BUILDER_KEYS = exports.BUILDER_KEYS = {};
38
+ var DEPRECATED_KEYS = exports.DEPRECATED_KEYS = {};
39
+
40
+ function getType(val) {
41
+ if (Array.isArray(val)) {
42
+ return "array";
43
+ } else if (val === null) {
44
+ return "null";
45
+ } else if (val === undefined) {
46
+ return "undefined";
47
+ } else {
48
+ return typeof val === "undefined" ? "undefined" : (0, _typeof3.default)(val);
49
+ }
50
+ }
51
+
52
+ function assertEach(callback) {
53
+ function validator(node, key, val) {
54
+ if (!Array.isArray(val)) return;
55
+
56
+ for (var i = 0; i < val.length; i++) {
57
+ callback(node, key + "[" + i + "]", val[i]);
58
+ }
59
+ }
60
+ validator.each = callback;
61
+ return validator;
62
+ }
63
+
64
+ function assertOneOf() {
65
+ for (var _len = arguments.length, vals = Array(_len), _key = 0; _key < _len; _key++) {
66
+ vals[_key] = arguments[_key];
67
+ }
68
+
69
+ function validate(node, key, val) {
70
+ if (vals.indexOf(val) < 0) {
71
+ throw new TypeError("Property " + key + " expected value to be one of " + (0, _stringify2.default)(vals) + " but got " + (0, _stringify2.default)(val));
72
+ }
73
+ }
74
+
75
+ validate.oneOf = vals;
76
+
77
+ return validate;
78
+ }
79
+
80
+ function assertNodeType() {
81
+ for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
82
+ types[_key2] = arguments[_key2];
83
+ }
84
+
85
+ function validate(node, key, val) {
86
+ var valid = false;
87
+
88
+ for (var _iterator = types, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
89
+ var _ref;
90
+
91
+ if (_isArray) {
92
+ if (_i >= _iterator.length) break;
93
+ _ref = _iterator[_i++];
94
+ } else {
95
+ _i = _iterator.next();
96
+ if (_i.done) break;
97
+ _ref = _i.value;
98
+ }
99
+
100
+ var type = _ref;
101
+
102
+ if (t.is(type, val)) {
103
+ valid = true;
104
+ break;
105
+ }
106
+ }
107
+
108
+ if (!valid) {
109
+ throw new TypeError("Property " + key + " of " + node.type + " expected node to be of a type " + (0, _stringify2.default)(types) + " " + ("but instead got " + (0, _stringify2.default)(val && val.type)));
110
+ }
111
+ }
112
+
113
+ validate.oneOfNodeTypes = types;
114
+
115
+ return validate;
116
+ }
117
+
118
+ function assertNodeOrValueType() {
119
+ for (var _len3 = arguments.length, types = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
120
+ types[_key3] = arguments[_key3];
121
+ }
122
+
123
+ function validate(node, key, val) {
124
+ var valid = false;
125
+
126
+ for (var _iterator2 = types, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
127
+ var _ref2;
128
+
129
+ if (_isArray2) {
130
+ if (_i2 >= _iterator2.length) break;
131
+ _ref2 = _iterator2[_i2++];
132
+ } else {
133
+ _i2 = _iterator2.next();
134
+ if (_i2.done) break;
135
+ _ref2 = _i2.value;
136
+ }
137
+
138
+ var type = _ref2;
139
+
140
+ if (getType(val) === type || t.is(type, val)) {
141
+ valid = true;
142
+ break;
143
+ }
144
+ }
145
+
146
+ if (!valid) {
147
+ throw new TypeError("Property " + key + " of " + node.type + " expected node to be of a type " + (0, _stringify2.default)(types) + " " + ("but instead got " + (0, _stringify2.default)(val && val.type)));
148
+ }
149
+ }
150
+
151
+ validate.oneOfNodeOrValueTypes = types;
152
+
153
+ return validate;
154
+ }
155
+
156
+ function assertValueType(type) {
157
+ function validate(node, key, val) {
158
+ var valid = getType(val) === type;
159
+
160
+ if (!valid) {
161
+ throw new TypeError("Property " + key + " expected type of " + type + " but got " + getType(val));
162
+ }
163
+ }
164
+
165
+ validate.type = type;
166
+
167
+ return validate;
168
+ }
169
+
170
+ function chain() {
171
+ for (var _len4 = arguments.length, fns = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
172
+ fns[_key4] = arguments[_key4];
173
+ }
174
+
175
+ function validate() {
176
+ for (var _iterator3 = fns, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) {
177
+ var _ref3;
178
+
179
+ if (_isArray3) {
180
+ if (_i3 >= _iterator3.length) break;
181
+ _ref3 = _iterator3[_i3++];
182
+ } else {
183
+ _i3 = _iterator3.next();
184
+ if (_i3.done) break;
185
+ _ref3 = _i3.value;
186
+ }
187
+
188
+ var fn = _ref3;
189
+
190
+ fn.apply(undefined, arguments);
191
+ }
192
+ }
193
+ validate.chainOf = fns;
194
+ return validate;
195
+ }
196
+
197
+ function defineType(type) {
198
+ var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
199
+
200
+ var inherits = opts.inherits && store[opts.inherits] || {};
201
+
202
+ opts.fields = opts.fields || inherits.fields || {};
203
+ opts.visitor = opts.visitor || inherits.visitor || [];
204
+ opts.aliases = opts.aliases || inherits.aliases || [];
205
+ opts.builder = opts.builder || inherits.builder || opts.visitor || [];
206
+
207
+ if (opts.deprecatedAlias) {
208
+ DEPRECATED_KEYS[opts.deprecatedAlias] = type;
209
+ }
210
+
211
+ // ensure all field keys are represented in `fields`
212
+ for (var _iterator4 = opts.visitor.concat(opts.builder), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, _getIterator3.default)(_iterator4);;) {
213
+ var _ref4;
214
+
215
+ if (_isArray4) {
216
+ if (_i4 >= _iterator4.length) break;
217
+ _ref4 = _iterator4[_i4++];
218
+ } else {
219
+ _i4 = _iterator4.next();
220
+ if (_i4.done) break;
221
+ _ref4 = _i4.value;
222
+ }
223
+
224
+ var _key5 = _ref4;
225
+
226
+ opts.fields[_key5] = opts.fields[_key5] || {};
227
+ }
228
+
229
+ for (var key in opts.fields) {
230
+ var field = opts.fields[key];
231
+
232
+ if (field.default === undefined) {
233
+ field.default = null;
234
+ } else if (!field.validate) {
235
+ field.validate = assertValueType(getType(field.default));
236
+ }
237
+ }
238
+
239
+ VISITOR_KEYS[type] = opts.visitor;
240
+ BUILDER_KEYS[type] = opts.builder;
241
+ NODE_FIELDS[type] = opts.fields;
242
+ ALIAS_KEYS[type] = opts.aliases;
243
+
244
+ store[type] = opts;
245
+ }
246
+
247
+ var store = {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ require("./index");
4
+
5
+ require("./core");
6
+
7
+ require("./es2015");
8
+
9
+ require("./flow");
10
+
11
+ require("./jsx");
12
+
13
+ require("./misc");
14
+
15
+ require("./experimental");
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+
3
+ var _index = require("./index");
4
+
5
+ var _index2 = _interopRequireDefault(_index);
6
+
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+
9
+ (0, _index2.default)("JSXAttribute", {
10
+ visitor: ["name", "value"],
11
+ aliases: ["JSX", "Immutable"],
12
+ fields: {
13
+ name: {
14
+ validate: (0, _index.assertNodeType)("JSXIdentifier", "JSXNamespacedName")
15
+ },
16
+ value: {
17
+ optional: true,
18
+ validate: (0, _index.assertNodeType)("JSXElement", "StringLiteral", "JSXExpressionContainer")
19
+ }
20
+ }
21
+ });
22
+
23
+ (0, _index2.default)("JSXClosingElement", {
24
+ visitor: ["name"],
25
+ aliases: ["JSX", "Immutable"],
26
+ fields: {
27
+ name: {
28
+ validate: (0, _index.assertNodeType)("JSXIdentifier", "JSXMemberExpression")
29
+ }
30
+ }
31
+ });
32
+
33
+ (0, _index2.default)("JSXElement", {
34
+ builder: ["openingElement", "closingElement", "children", "selfClosing"],
35
+ visitor: ["openingElement", "children", "closingElement"],
36
+ aliases: ["JSX", "Immutable", "Expression"],
37
+ fields: {
38
+ openingElement: {
39
+ validate: (0, _index.assertNodeType)("JSXOpeningElement")
40
+ },
41
+ closingElement: {
42
+ optional: true,
43
+ validate: (0, _index.assertNodeType)("JSXClosingElement")
44
+ },
45
+ children: {
46
+ validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXElement")))
47
+ }
48
+ }
49
+ });
50
+
51
+ (0, _index2.default)("JSXEmptyExpression", {
52
+ aliases: ["JSX", "Expression"]
53
+ });
54
+
55
+ (0, _index2.default)("JSXExpressionContainer", {
56
+ visitor: ["expression"],
57
+ aliases: ["JSX", "Immutable"],
58
+ fields: {
59
+ expression: {
60
+ validate: (0, _index.assertNodeType)("Expression")
61
+ }
62
+ }
63
+ });
64
+
65
+ (0, _index2.default)("JSXIdentifier", {
66
+ builder: ["name"],
67
+ aliases: ["JSX", "Expression"],
68
+ fields: {
69
+ name: {
70
+ validate: (0, _index.assertValueType)("string")
71
+ }
72
+ }
73
+ });
74
+
75
+ (0, _index2.default)("JSXMemberExpression", {
76
+ visitor: ["object", "property"],
77
+ aliases: ["JSX", "Expression"],
78
+ fields: {
79
+ object: {
80
+ validate: (0, _index.assertNodeType)("JSXMemberExpression", "JSXIdentifier")
81
+ },
82
+ property: {
83
+ validate: (0, _index.assertNodeType)("JSXIdentifier")
84
+ }
85
+ }
86
+ });
87
+
88
+ (0, _index2.default)("JSXNamespacedName", {
89
+ visitor: ["namespace", "name"],
90
+ aliases: ["JSX"],
91
+ fields: {
92
+ namespace: {
93
+ validate: (0, _index.assertNodeType)("JSXIdentifier")
94
+ },
95
+ name: {
96
+ validate: (0, _index.assertNodeType)("JSXIdentifier")
97
+ }
98
+ }
99
+ });
100
+
101
+ (0, _index2.default)("JSXOpeningElement", {
102
+ builder: ["name", "attributes", "selfClosing"],
103
+ visitor: ["name", "attributes"],
104
+ aliases: ["JSX", "Immutable"],
105
+ fields: {
106
+ name: {
107
+ validate: (0, _index.assertNodeType)("JSXIdentifier", "JSXMemberExpression")
108
+ },
109
+ selfClosing: {
110
+ default: false,
111
+ validate: (0, _index.assertValueType)("boolean")
112
+ },
113
+ attributes: {
114
+ validate: (0, _index.chain)((0, _index.assertValueType)("array"), (0, _index.assertEach)((0, _index.assertNodeType)("JSXAttribute", "JSXSpreadAttribute")))
115
+ }
116
+ }
117
+ });
118
+
119
+ (0, _index2.default)("JSXSpreadAttribute", {
120
+ visitor: ["argument"],
121
+ aliases: ["JSX"],
122
+ fields: {
123
+ argument: {
124
+ validate: (0, _index.assertNodeType)("Expression")
125
+ }
126
+ }
127
+ });
128
+
129
+ (0, _index2.default)("JSXText", {
130
+ aliases: ["JSX", "Immutable"],
131
+ builder: ["value"],
132
+ fields: {
133
+ value: {
134
+ validate: (0, _index.assertValueType)("string")
135
+ }
136
+ }
137
+ });
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _index = require("./index");
4
+
5
+ var _index2 = _interopRequireDefault(_index);
6
+
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+
9
+ (0, _index2.default)("Noop", {
10
+ visitor: []
11
+ });
12
+
13
+ (0, _index2.default)("ParenthesizedExpression", {
14
+ visitor: ["expression"],
15
+ aliases: ["Expression", "ExpressionWrapper"],
16
+ fields: {
17
+ expression: {
18
+ validate: (0, _index.assertNodeType)("Expression")
19
+ }
20
+ }
21
+ });
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.createUnionTypeAnnotation = createUnionTypeAnnotation;
5
+ exports.removeTypeDuplicates = removeTypeDuplicates;
6
+ exports.createTypeAnnotationBasedOnTypeof = createTypeAnnotationBasedOnTypeof;
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
+ /**
15
+ * Takes an array of `types` and flattens them, removing duplicates and
16
+ * returns a `UnionTypeAnnotation` node containg them.
17
+ */
18
+
19
+ function createUnionTypeAnnotation(types) {
20
+ var flattened = removeTypeDuplicates(types);
21
+
22
+ if (flattened.length === 1) {
23
+ return flattened[0];
24
+ } else {
25
+ return t.unionTypeAnnotation(flattened);
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Dedupe type annotations.
31
+ */
32
+
33
+ function removeTypeDuplicates(nodes) {
34
+ var generics = {};
35
+ var bases = {};
36
+
37
+ // store union type groups to circular references
38
+ var typeGroups = [];
39
+
40
+ var types = [];
41
+
42
+ for (var i = 0; i < nodes.length; i++) {
43
+ var node = nodes[i];
44
+ if (!node) continue;
45
+
46
+ // detect duplicates
47
+ if (types.indexOf(node) >= 0) {
48
+ continue;
49
+ }
50
+
51
+ // this type matches anything
52
+ if (t.isAnyTypeAnnotation(node)) {
53
+ return [node];
54
+ }
55
+
56
+ //
57
+ if (t.isFlowBaseAnnotation(node)) {
58
+ bases[node.type] = node;
59
+ continue;
60
+ }
61
+
62
+ //
63
+ if (t.isUnionTypeAnnotation(node)) {
64
+ if (typeGroups.indexOf(node.types) < 0) {
65
+ nodes = nodes.concat(node.types);
66
+ typeGroups.push(node.types);
67
+ }
68
+ continue;
69
+ }
70
+
71
+ // find a matching generic type and merge and deduplicate the type parameters
72
+ if (t.isGenericTypeAnnotation(node)) {
73
+ var name = node.id.name;
74
+
75
+ if (generics[name]) {
76
+ var existing = generics[name];
77
+ if (existing.typeParameters) {
78
+ if (node.typeParameters) {
79
+ existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params.concat(node.typeParameters.params));
80
+ }
81
+ } else {
82
+ existing = node.typeParameters;
83
+ }
84
+ } else {
85
+ generics[name] = node;
86
+ }
87
+
88
+ continue;
89
+ }
90
+
91
+ types.push(node);
92
+ }
93
+
94
+ // add back in bases
95
+ for (var type in bases) {
96
+ types.push(bases[type]);
97
+ }
98
+
99
+ // add back in generics
100
+ for (var _name in generics) {
101
+ types.push(generics[_name]);
102
+ }
103
+
104
+ return types;
105
+ }
106
+
107
+ /**
108
+ * Create a type anotation based on typeof expression.
109
+ */
110
+
111
+ function createTypeAnnotationBasedOnTypeof(type) {
112
+ if (type === "string") {
113
+ return t.stringTypeAnnotation();
114
+ } else if (type === "number") {
115
+ return t.numberTypeAnnotation();
116
+ } else if (type === "undefined") {
117
+ return t.voidTypeAnnotation();
118
+ } else if (type === "boolean") {
119
+ return t.booleanTypeAnnotation();
120
+ } else if (type === "function") {
121
+ return t.genericTypeAnnotation(t.identifier("Function"));
122
+ } else if (type === "object") {
123
+ return t.genericTypeAnnotation(t.identifier("Object"));
124
+ } else if (type === "symbol") {
125
+ return t.genericTypeAnnotation(t.identifier("Symbol"));
126
+ } else {
127
+ throw new Error("Invalid typeof value");
128
+ }
129
+ }