flow-parser 0.320.0 → 0.322.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.
Files changed (105) hide show
  1. package/README.md +14 -26
  2. package/{oxidized/oxidized-src → dist}/FlowParser.js +3 -53
  3. package/{oxidized/oxidized-src → dist}/FlowParserDeserializer.js +3 -41
  4. package/{oxidized → dist}/FlowParserNodeDeserializers.js +0 -7
  5. package/{oxidized → dist}/FlowParserWASM.js +1 -1
  6. package/{oxidized/oxidized-src → dist}/HermesParserDecodeUTF8String.js +0 -9
  7. package/dist/ParserOptions.js +7 -0
  8. package/{oxidized → dist}/babel/TransformESTreeToBabel.js +9 -157
  9. package/{oxidized → dist}/estree/StripFlowTypes.js +0 -26
  10. package/{oxidized/oxidized-src → dist}/estree/StripFlowTypesForBabel.js +0 -24
  11. package/{oxidized/oxidized-src → dist}/estree/TransformComponentSyntax.js +0 -87
  12. package/{oxidized/oxidized-src → dist}/estree/TransformEnumSyntax.js +0 -12
  13. package/{oxidized/oxidized-src → dist}/estree/TransformMatchSyntax.js +3 -99
  14. package/{oxidized → dist}/estree/TransformRecordSyntax.js +3 -31
  15. package/{oxidized → dist}/getModuleDocblock.js +0 -21
  16. package/{oxidized → dist}/index.js +25 -99
  17. package/{oxidized → dist}/transform/SimpleTransform.js +0 -21
  18. package/{oxidized → dist}/transform/astArrayMutationHelpers.js +0 -9
  19. package/{oxidized/oxidized-src → dist}/transform/astNodeMutationHelpers.js +4 -26
  20. package/{oxidized/oxidized-src → dist}/transform/print/comments/comments.js +2 -51
  21. package/{oxidized → dist}/transform/print/comments/prettier/common/util.js +0 -49
  22. package/{oxidized → dist}/transform/print/comments/prettier/language-js/comments.js +0 -111
  23. package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/language-js/loc.js +0 -6
  24. package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/language-js/printer-estree.js +0 -3
  25. package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/language-js/utils.js +0 -20
  26. package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/main/comments.js +2 -63
  27. package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/utils/get-last.js +0 -1
  28. package/{oxidized → dist}/transform/print/print.js +6 -22
  29. package/{oxidized/oxidized-src → dist}/traverse/SimpleTraverser.js +2 -22
  30. package/{oxidized/oxidized-src → dist}/traverse/getVisitorKeys.js +3 -9
  31. package/{oxidized/oxidized-src → dist}/utils/Builders.js +1 -17
  32. package/{oxidized → dist}/utils/GenID.js +0 -7
  33. package/{oxidized/oxidized-src → dist}/utils/createSyntaxError.js +0 -1
  34. package/{oxidized → dist}/utils/isReservedWord.js +0 -2
  35. package/{oxidized → dist}/utils/mutateESTreeASTForPrettier.js +6 -21
  36. package/package.json +6 -7
  37. package/flow_parser.js +0 -14585
  38. package/oxidized/FlowParser.js +0 -249
  39. package/oxidized/FlowParserDeserializer.js +0 -209
  40. package/oxidized/HermesParserDecodeUTF8String.js +0 -45
  41. package/oxidized/ParserOptions.js +0 -8
  42. package/oxidized/estree/StripFlowTypesForBabel.js +0 -191
  43. package/oxidized/estree/TransformComponentSyntax.js +0 -764
  44. package/oxidized/estree/TransformEnumSyntax.js +0 -92
  45. package/oxidized/estree/TransformMatchSyntax.js +0 -990
  46. package/oxidized/oxidized-src/FlowParserNodeDeserializers.js +0 -1781
  47. package/oxidized/oxidized-src/ParserOptions.js +0 -8
  48. package/oxidized/oxidized-src/babel/TransformESTreeToBabel.js +0 -1063
  49. package/oxidized/oxidized-src/estree/StripFlowTypes.js +0 -158
  50. package/oxidized/oxidized-src/estree/TransformRecordSyntax.js +0 -283
  51. package/oxidized/oxidized-src/generated/ESTreeVisitorKeys.js +0 -234
  52. package/oxidized/oxidized-src/getModuleDocblock.js +0 -87
  53. package/oxidized/oxidized-src/index.js +0 -220
  54. package/oxidized/oxidized-src/transform/SimpleTransform.js +0 -95
  55. package/oxidized/oxidized-src/transform/astArrayMutationHelpers.js +0 -52
  56. package/oxidized/oxidized-src/transform/print/comments/prettier/common/util.js +0 -235
  57. package/oxidized/oxidized-src/transform/print/comments/prettier/language-js/comments.js +0 -663
  58. package/oxidized/oxidized-src/transform/print/print.js +0 -68
  59. package/oxidized/oxidized-src/utils/GenID.js +0 -37
  60. package/oxidized/oxidized-src/utils/isReservedWord.js +0 -53
  61. package/oxidized/oxidized-src/utils/mutateESTreeASTForPrettier.js +0 -85
  62. package/oxidized/transform/astNodeMutationHelpers.js +0 -142
  63. package/oxidized/transform/print/comments/comments.js +0 -245
  64. package/oxidized/transform/print/comments/prettier/language-js/loc.js +0 -30
  65. package/oxidized/transform/print/comments/prettier/language-js/printer-estree.js +0 -23
  66. package/oxidized/transform/print/comments/prettier/language-js/utils.js +0 -89
  67. package/oxidized/transform/print/comments/prettier/main/comments.js +0 -374
  68. package/oxidized/transform/print/comments/prettier/utils/get-last.js +0 -5
  69. package/oxidized/transform/print/detachedNodeTypes.js +0 -1
  70. package/oxidized/traverse/SimpleTraverser.js +0 -90
  71. package/oxidized/traverse/getVisitorKeys.js +0 -29
  72. package/oxidized/utils/Builders.js +0 -181
  73. package/oxidized/utils/createSyntaxError.js +0 -15
  74. /package/{oxidized → dist}/FlowParser.js.flow +0 -0
  75. /package/{oxidized → dist}/FlowParserDeserializer.js.flow +0 -0
  76. /package/{oxidized → dist}/FlowParserNodeDeserializers.js.flow +0 -0
  77. /package/{oxidized → dist}/FlowParserWASM.js.flow +0 -0
  78. /package/{oxidized → dist}/HermesAST.js.flow +0 -0
  79. /package/{oxidized → dist}/HermesParserDecodeUTF8String.js.flow +0 -0
  80. /package/{oxidized → dist}/ParserOptions.js.flow +0 -0
  81. /package/{oxidized → dist}/babel/TransformESTreeToBabel.js.flow +0 -0
  82. /package/{oxidized → dist}/estree/StripFlowTypes.js.flow +0 -0
  83. /package/{oxidized → dist}/estree/StripFlowTypesForBabel.js.flow +0 -0
  84. /package/{oxidized → dist}/estree/TransformComponentSyntax.js.flow +0 -0
  85. /package/{oxidized → dist}/estree/TransformEnumSyntax.js.flow +0 -0
  86. /package/{oxidized → dist}/estree/TransformMatchSyntax.js.flow +0 -0
  87. /package/{oxidized → dist}/estree/TransformRecordSyntax.js.flow +0 -0
  88. /package/{oxidized → dist}/generated/ESTreeVisitorKeys.js +0 -0
  89. /package/{oxidized → dist}/generated/ESTreeVisitorKeys.js.flow +0 -0
  90. /package/{oxidized → dist}/getModuleDocblock.js.flow +0 -0
  91. /package/{oxidized → dist}/index.js.flow +0 -0
  92. /package/{oxidized → dist}/transform/SimpleTransform.js.flow +0 -0
  93. /package/{oxidized → dist}/transform/astArrayMutationHelpers.js.flow +0 -0
  94. /package/{oxidized → dist}/transform/astNodeMutationHelpers.js.flow +0 -0
  95. /package/{oxidized → dist}/transform/print/comments/comments.js.flow +0 -0
  96. /package/{oxidized/oxidized-src → dist}/transform/print/detachedNodeTypes.js +0 -0
  97. /package/{oxidized → dist}/transform/print/detachedNodeTypes.js.flow +0 -0
  98. /package/{oxidized → dist}/transform/print/print.js.flow +0 -0
  99. /package/{oxidized → dist}/traverse/SimpleTraverser.js.flow +0 -0
  100. /package/{oxidized → dist}/traverse/getVisitorKeys.js.flow +0 -0
  101. /package/{oxidized → dist}/utils/Builders.js.flow +0 -0
  102. /package/{oxidized → dist}/utils/GenID.js.flow +0 -0
  103. /package/{oxidized → dist}/utils/createSyntaxError.js.flow +0 -0
  104. /package/{oxidized → dist}/utils/isReservedWord.js.flow +0 -0
  105. /package/{oxidized → dist}/utils/mutateESTreeASTForPrettier.js.flow +0 -0
@@ -1,1063 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.transformProgram = transformProgram;
7
-
8
- var _SimpleTransform = require("../transform/SimpleTransform");
9
-
10
- var _SimpleTraverser = require("../traverse/SimpleTraverser");
11
-
12
- var _ESTreeVisitorKeys = _interopRequireDefault(require("../generated/ESTreeVisitorKeys"));
13
-
14
- var _createSyntaxError = require("../utils/createSyntaxError");
15
-
16
- function _interopRequireDefault(obj) {
17
- return obj && obj.__esModule ? obj : {
18
- default: obj
19
- };
20
- }
21
-
22
- const EMPTY_PARENT = null;
23
- const FlowESTreeAndBabelVisitorKeys = { ..._ESTreeVisitorKeys.default,
24
- BigIntLiteral: [],
25
- BlockStatement: ['directives', ..._ESTreeVisitorKeys.default.BlockStatement],
26
- BooleanLiteral: [],
27
- ClassExpression: ['superTypeParameters', ..._ESTreeVisitorKeys.default.ClassExpression],
28
- ClassDeclaration: ['superTypeParameters', ..._ESTreeVisitorKeys.default.ClassDeclaration],
29
- ClassMethod: ['key', 'params', 'body', 'returnType', 'typeParameters'],
30
- ClassPrivateMethod: ['key', 'params', 'body', 'returnType', 'typeParameters'],
31
- ClassProperty: ['key', 'value', 'typeAnnotation', 'variance'],
32
- ClassPrivateProperty: ['key', 'value', 'typeAnnotation', 'variance'],
33
- DeclareVariable: ['id'],
34
- Directive: ['value'],
35
- DirectiveLiteral: [],
36
- ExportNamespaceSpecifier: ['exported'],
37
- File: ['program', 'comments'],
38
- Import: [],
39
- NullLiteral: [],
40
- NumericLiteral: [],
41
- ObjectMethod: [..._ESTreeVisitorKeys.default.Property, 'params', 'body', 'returnType', 'typeParameters'],
42
- ObjectProperty: _ESTreeVisitorKeys.default.Property,
43
- OptionalCallExpression: ['callee', 'arguments', 'typeArguments'],
44
- OptionalMemberExpression: ['object', 'property'],
45
- PrivateName: ['id'],
46
- Program: ['directives', ..._ESTreeVisitorKeys.default.Program],
47
- RegExpLiteral: [],
48
- RestElement: [..._ESTreeVisitorKeys.default.RestElement, 'typeAnnotation'],
49
- StringLiteral: [],
50
- TupleTypeAnnotation: ['types'],
51
- CommentBlock: [],
52
- CommentLine: []
53
- };
54
-
55
- function nodeWith(node, overrideProps) {
56
- return _SimpleTransform.SimpleTransform.nodeWith(node, overrideProps, FlowESTreeAndBabelVisitorKeys);
57
- }
58
-
59
- function fixSourceLocation(node, _options) {
60
- const loc = node.loc;
61
-
62
- if (loc == null) {
63
- return;
64
- }
65
-
66
- node.loc = {
67
- start: loc.start,
68
- end: loc.end
69
- };
70
-
71
- if (node.type === 'Identifier') {
72
- node.loc.identifierName = node.name;
73
- }
74
-
75
- node.start = node.range[0];
76
- node.end = node.range[1];
77
- delete node.range;
78
- delete node.parent;
79
- }
80
-
81
- function mapNodeWithDirectives(node) {
82
- if (node.directives != null) {
83
- return node;
84
- }
85
-
86
- const directives = [];
87
-
88
- for (const child of node.body) {
89
- if (child.type === 'ExpressionStatement' && child.directive != null) {
90
- directives.push({
91
- type: 'Directive',
92
- value: {
93
- type: 'DirectiveLiteral',
94
- value: child.directive,
95
- extra: {
96
- rawValue: child.directive,
97
- raw: child.expression.type === 'Literal' ? child.expression.raw : ''
98
- },
99
- loc: child.expression.loc,
100
- range: child.expression.range,
101
- parent: EMPTY_PARENT
102
- },
103
- loc: child.loc,
104
- range: child.range,
105
- parent: node
106
- });
107
- } else {
108
- break;
109
- }
110
- }
111
-
112
- return nodeWith(node, {
113
- directives,
114
- body: directives.length === 0 ? node.body : node.body.slice(directives.length)
115
- });
116
- }
117
-
118
- function mapProgram(node) {
119
- var _program$directives;
120
-
121
- const program = mapNodeWithDirectives(node);
122
- const startLoc = {
123
- line: 1,
124
- column: 0
125
- };
126
- let endLoc = program.loc.end;
127
- let endRange = program.range[1];
128
-
129
- if (program.comments.length > 0) {
130
- const lastComment = program.comments[program.comments.length - 1];
131
-
132
- if (lastComment.range[1] > endRange) {
133
- endLoc = lastComment.loc.end;
134
- endRange = lastComment.range[1];
135
- }
136
- }
137
-
138
- const loc = {
139
- start: startLoc,
140
- end: endLoc
141
- };
142
- const range = [0, endRange];
143
- const babelComments = program.comments.map(comment => {
144
- switch (comment.type) {
145
- case 'Line':
146
- {
147
- return {
148
- type: 'CommentLine',
149
- value: comment.value,
150
- loc: comment.loc,
151
- range: comment.range
152
- };
153
- }
154
-
155
- case 'Block':
156
- {
157
- return {
158
- type: 'CommentBlock',
159
- value: comment.value,
160
- loc: comment.loc,
161
- range: comment.range
162
- };
163
- }
164
- }
165
- });
166
- return {
167
- type: 'File',
168
- program: {
169
- type: 'Program',
170
- body: program.body,
171
- directives: (_program$directives = program.directives) != null ? _program$directives : [],
172
- sourceType: program.sourceType,
173
- interpreter: program.interpreter,
174
- loc,
175
- range,
176
- parent: EMPTY_PARENT
177
- },
178
- comments: babelComments,
179
- loc,
180
- range,
181
- parent: EMPTY_PARENT
182
- };
183
- }
184
-
185
- function mapTemplateElement(node) {
186
- const startCharsToExclude = 1;
187
- const endCharsToExclude = node.tail ? 1 : 2;
188
- node.loc = {
189
- start: {
190
- line: node.loc.start.line,
191
- column: node.loc.start.column + startCharsToExclude
192
- },
193
- end: {
194
- line: node.loc.end.line,
195
- column: node.loc.end.column - endCharsToExclude
196
- }
197
- };
198
- node.range = [node.range[0] + startCharsToExclude, node.range[1] - endCharsToExclude];
199
- return node;
200
- }
201
-
202
- function mapProperty(node) {
203
- const key = node.key;
204
- const value = node.value;
205
-
206
- if (node.method || node.kind !== 'init') {
207
- if (value.type !== 'FunctionExpression') {
208
- throw (0, _createSyntaxError.createSyntaxError)(node, `Invalid method property, the value must be a "FunctionExpression" or "ArrowFunctionExpression. Instead got "${value.type}".`);
209
- }
210
-
211
- const newNode = {
212
- type: 'ObjectMethod',
213
- kind: node.kind === 'init' ? 'method' : node.kind,
214
- method: node.kind === 'init' ? true : false,
215
- computed: node.computed,
216
- key: key,
217
- id: null,
218
- params: value.params,
219
- body: value.body,
220
- async: value.async,
221
- generator: value.generator,
222
- returnType: value.returnType,
223
- typeParameters: value.typeParameters,
224
- loc: node.loc,
225
- range: node.range,
226
- parent: node.parent
227
- };
228
-
229
- if (node.kind !== 'init') {
230
- newNode.variance = null;
231
- }
232
-
233
- return newNode;
234
- }
235
-
236
- const propertyValue = value;
237
- return {
238
- type: 'ObjectProperty',
239
- computed: node.computed,
240
- key: node.key,
241
- value: propertyValue,
242
- method: node.method,
243
- shorthand: node.shorthand,
244
- loc: node.loc,
245
- range: node.range,
246
- parent: node.parent
247
- };
248
- }
249
-
250
- function mapMethodDefinition(node) {
251
- const value = node.value;
252
- const BaseClassMethod = {
253
- kind: node.kind,
254
- computed: node.computed,
255
- static: node.static,
256
- key: node.key,
257
- id: null,
258
- params: value.params,
259
- body: value.body,
260
- async: value.async,
261
- generator: value.generator,
262
- returnType: value.returnType,
263
- typeParameters: value.typeParameters,
264
- predicate: null,
265
- loc: node.loc,
266
- range: node.range,
267
- parent: node.parent
268
- };
269
-
270
- if (node.key.type === 'PrivateIdentifier') {
271
- return { ...BaseClassMethod,
272
- type: 'ClassPrivateMethod'
273
- };
274
- }
275
-
276
- return { ...BaseClassMethod,
277
- type: 'ClassMethod'
278
- };
279
- }
280
-
281
- function mapExportAllDeclaration(node) {
282
- if (node.exported != null) {
283
- return {
284
- type: 'ExportNamedDeclaration',
285
- declaration: null,
286
- specifiers: [{
287
- type: 'ExportNamespaceSpecifier',
288
- exported: node.exported,
289
- loc: {
290
- start: {
291
- column: node.loc.start.column + 'export '.length,
292
- line: node.loc.start.line
293
- },
294
- end: node.exported.loc.end
295
- },
296
- range: [node.range[0] + 'export '.length, node.exported.range[1]],
297
- parent: EMPTY_PARENT
298
- }],
299
- source: node.source,
300
- exportKind: node.exportKind,
301
- loc: node.loc,
302
- range: node.range,
303
- parent: node.parent
304
- };
305
- }
306
-
307
- delete node.exported;
308
- return node;
309
- }
310
-
311
- function mapRestElement(node) {
312
- const argument = node.argument;
313
-
314
- if ((argument.type === 'Identifier' || argument.type === 'ObjectPattern' || argument.type === 'ArrayPattern') && argument.typeAnnotation != null) {
315
- const argumentRange = argument.range;
316
- let argumentLoc = argument.loc;
317
-
318
- if (argument.type === 'Identifier') {
319
- argumentRange[1] = argumentRange[0] + argument.name.length;
320
- argumentLoc = {
321
- start: argumentLoc.start,
322
- end: {
323
- line: argumentLoc.start.line,
324
- column: argumentLoc.start.column + argument.name.length
325
- }
326
- };
327
- }
328
-
329
- return nodeWith(node, {
330
- typeAnnotation: argument.typeAnnotation,
331
- argument: nodeWith(argument, {
332
- typeAnnotation: null,
333
- range: argumentRange,
334
- loc: argumentLoc
335
- })
336
- });
337
- }
338
-
339
- return node;
340
- }
341
-
342
- function mapImportExpression(node) {
343
- return {
344
- type: 'CallExpression',
345
- callee: {
346
- type: 'Import',
347
- loc: {
348
- start: node.loc.start,
349
- end: {
350
- line: node.loc.start.line,
351
- column: node.loc.start.column + 'import'.length
352
- }
353
- },
354
- range: [node.range[0], node.range[0] + 'import'.length],
355
- parent: EMPTY_PARENT
356
- },
357
- arguments: [node.source],
358
- loc: node.loc,
359
- range: node.range,
360
- parent: node.parent
361
- };
362
- }
363
-
364
- function mapPrivateIdentifier(node) {
365
- return {
366
- type: 'PrivateName',
367
- id: {
368
- type: 'Identifier',
369
- name: node.name,
370
- optional: false,
371
- typeAnnotation: null,
372
- loc: {
373
- start: {
374
- line: node.loc.start.line,
375
- column: node.loc.start.column + 1
376
- },
377
- end: node.loc.end
378
- },
379
- range: [node.range[0] + 1, node.range[1]],
380
- parent: EMPTY_PARENT
381
- },
382
- loc: node.loc,
383
- range: node.range,
384
- parent: node.parent
385
- };
386
- }
387
-
388
- function mapPropertyDefinition(node) {
389
- if (node.key.type === 'PrivateIdentifier') {
390
- return {
391
- type: 'ClassPrivateProperty',
392
- key: mapPrivateIdentifier(node.key),
393
- value: node.value,
394
- typeAnnotation: node.typeAnnotation,
395
- static: node.static,
396
- variance: node.variance,
397
- loc: node.loc,
398
- range: node.range,
399
- parent: node.parent
400
- };
401
- }
402
-
403
- return {
404
- type: 'ClassProperty',
405
- key: node.key,
406
- value: node.value,
407
- typeAnnotation: node.typeAnnotation,
408
- static: node.static,
409
- variance: node.variance,
410
- declare: node.declare,
411
- optional: node.optional,
412
- computed: node.computed,
413
- loc: node.loc,
414
- range: node.range,
415
- parent: node.parent
416
- };
417
- }
418
-
419
- function mapTypeofTypeAnnotation(node) {
420
- delete node.typeArguments;
421
-
422
- if (node.argument.type !== 'GenericTypeAnnotation') {
423
- return nodeWith(node, {
424
- argument: {
425
- type: 'GenericTypeAnnotation',
426
- id: node.argument,
427
- typeParameters: null,
428
- loc: node.argument.loc,
429
- range: node.argument.range,
430
- parent: EMPTY_PARENT
431
- }
432
- });
433
- }
434
-
435
- return node;
436
- }
437
-
438
- function mapDeclareVariable(node) {
439
- var _babelNode$declaratio;
440
-
441
- const babelNode = node;
442
-
443
- if (babelNode.id == null && Array.isArray(babelNode.declarations) && ((_babelNode$declaratio = babelNode.declarations[0]) == null ? void 0 : _babelNode$declaratio.id) != null) {
444
- babelNode.id = babelNode.declarations[0].id;
445
- }
446
-
447
- delete babelNode.declarations;
448
- delete babelNode.kind;
449
- delete babelNode.implicitDeclare;
450
- return babelNode;
451
- }
452
-
453
- function mapJSXElement(node) {
454
- if (node.openingElement.typeArguments != null) {
455
- delete node.openingElement.typeArguments;
456
- }
457
-
458
- return node;
459
- }
460
-
461
- function mapChainExpressionInnerNode(node) {
462
- switch (node.type) {
463
- case 'MemberExpression':
464
- {
465
- const innerObject = mapChainExpressionInnerNode(node.object);
466
-
467
- if (!node.optional && innerObject.type !== 'OptionalMemberExpression' && innerObject.type !== 'OptionalCallExpression') {
468
- return node;
469
- }
470
-
471
- return {
472
- type: 'OptionalMemberExpression',
473
- object: innerObject,
474
- property: node.property,
475
- computed: node.computed,
476
- optional: node.optional,
477
- loc: node.loc,
478
- range: node.range,
479
- parent: node.parent
480
- };
481
- }
482
-
483
- case 'CallExpression':
484
- {
485
- const innerCallee = mapChainExpressionInnerNode(node.callee);
486
-
487
- if (!node.optional && innerCallee.type !== 'OptionalMemberExpression' && innerCallee.type !== 'OptionalCallExpression') {
488
- return node;
489
- }
490
-
491
- return {
492
- type: 'OptionalCallExpression',
493
- callee: innerCallee,
494
- optional: node.optional,
495
- arguments: node.arguments,
496
- typeArguments: node.typeArguments,
497
- loc: node.loc,
498
- range: node.range,
499
- parent: node.parent
500
- };
501
- }
502
-
503
- default:
504
- {
505
- return node;
506
- }
507
- }
508
- }
509
-
510
- function mapChainExpression(node) {
511
- return mapChainExpressionInnerNode(node.expression);
512
- }
513
-
514
- function mapLiteral(node) {
515
- const base = {
516
- loc: node.loc,
517
- range: node.range,
518
- parent: node.parent
519
- };
520
-
521
- switch (node.literalType) {
522
- case 'string':
523
- {
524
- return {
525
- type: 'StringLiteral',
526
- value: node.value,
527
- extra: {
528
- rawValue: node.value,
529
- raw: node.raw
530
- },
531
- ...base
532
- };
533
- }
534
-
535
- case 'numeric':
536
- {
537
- return {
538
- type: 'NumericLiteral',
539
- value: node.value,
540
- extra: {
541
- rawValue: node.value,
542
- raw: node.raw
543
- },
544
- ...base
545
- };
546
- }
547
-
548
- case 'bigint':
549
- {
550
- return {
551
- type: 'BigIntLiteral',
552
- value: node.bigint,
553
- extra: {
554
- rawValue: node.bigint,
555
- raw: node.raw
556
- },
557
- ...base
558
- };
559
- }
560
-
561
- case 'boolean':
562
- {
563
- return {
564
- type: 'BooleanLiteral',
565
- value: node.value,
566
- ...base
567
- };
568
- }
569
-
570
- case 'null':
571
- {
572
- return {
573
- type: 'NullLiteral',
574
- ...base
575
- };
576
- }
577
-
578
- case 'regexp':
579
- {
580
- return {
581
- type: 'RegExpLiteral',
582
- extra: {
583
- raw: node.raw
584
- },
585
- pattern: node.regex.pattern,
586
- flags: node.regex.flags,
587
- ...base
588
- };
589
- }
590
- }
591
- }
592
-
593
- function transformNode(node) {
594
- switch (node.type) {
595
- case 'Program':
596
- {
597
- var _node$parent;
598
-
599
- if (((_node$parent = node.parent) == null ? void 0 : _node$parent.type) === 'File') {
600
- return node;
601
- }
602
-
603
- return mapProgram(node);
604
- }
605
-
606
- case 'BlockStatement':
607
- {
608
- return mapNodeWithDirectives(node);
609
- }
610
-
611
- case 'Property':
612
- {
613
- return mapProperty(node);
614
- }
615
-
616
- case 'TemplateElement':
617
- {
618
- return mapTemplateElement(node);
619
- }
620
-
621
- case 'MethodDefinition':
622
- {
623
- return mapMethodDefinition(node);
624
- }
625
-
626
- case 'ExportAllDeclaration':
627
- {
628
- return mapExportAllDeclaration(node);
629
- }
630
-
631
- case 'RestElement':
632
- {
633
- return mapRestElement(node);
634
- }
635
-
636
- case 'ImportExpression':
637
- {
638
- return mapImportExpression(node);
639
- }
640
-
641
- case 'PrivateIdentifier':
642
- {
643
- return mapPrivateIdentifier(node);
644
- }
645
-
646
- case 'PropertyDefinition':
647
- {
648
- return mapPropertyDefinition(node);
649
- }
650
-
651
- case 'TypeofTypeAnnotation':
652
- {
653
- return mapTypeofTypeAnnotation(node);
654
- }
655
-
656
- case 'DeclareVariable':
657
- {
658
- return mapDeclareVariable(node);
659
- }
660
-
661
- case 'JSXElement':
662
- {
663
- return mapJSXElement(node);
664
- }
665
-
666
- case 'Literal':
667
- {
668
- return mapLiteral(node);
669
- }
670
-
671
- case 'ChainExpression':
672
- {
673
- return mapChainExpression(node);
674
- }
675
-
676
- case 'TypeCastExpression':
677
- {
678
- node.loc.start.column = node.loc.start.column + 1;
679
- node.loc.end.column = node.loc.end.column - 1;
680
- node.range = [node.range[0] + 1, node.range[1] - 1];
681
- return node;
682
- }
683
-
684
- case 'AsExpression':
685
- {
686
- const {
687
- typeAnnotation
688
- } = node;
689
- node.type = 'TypeCastExpression';
690
- node.typeAnnotation = {
691
- type: 'TypeAnnotation',
692
- typeAnnotation,
693
- loc: typeAnnotation.loc,
694
- range: typeAnnotation.range
695
- };
696
- return node;
697
- }
698
-
699
- case 'AsConstExpression':
700
- {
701
- return node.expression;
702
- }
703
-
704
- case 'NumberLiteralTypeAnnotation':
705
- {
706
- node.extra = {
707
- rawValue: node.value,
708
- raw: node.raw
709
- };
710
- delete node.raw;
711
- return node;
712
- }
713
-
714
- case 'StringLiteralTypeAnnotation':
715
- {
716
- node.extra = {
717
- rawValue: node.value,
718
- raw: node.raw
719
- };
720
- delete node.raw;
721
- return node;
722
- }
723
-
724
- case 'BigIntLiteralTypeAnnotation':
725
- {
726
- node.extra = {
727
- rawValue: node.bigint,
728
- raw: node.raw
729
- };
730
- delete node.bigint;
731
- delete node.raw;
732
- return node;
733
- }
734
-
735
- case 'BooleanLiteralTypeAnnotation':
736
- {
737
- delete node.raw;
738
- return node;
739
- }
740
-
741
- case 'TupleTypeAnnotation':
742
- {
743
- delete node.inexact;
744
- node.types = node.elementTypes;
745
- delete node.elementTypes;
746
- return node;
747
- }
748
-
749
- case 'UnknownTypeAnnotation':
750
- {
751
- return {
752
- type: 'GenericTypeAnnotation',
753
- id: {
754
- type: 'Identifier',
755
- name: 'unknown',
756
- optional: false,
757
- typeAnnotation: null,
758
- loc: node.loc,
759
- range: node.range,
760
- parent: EMPTY_PARENT
761
- },
762
- typeParameters: null,
763
- loc: node.loc,
764
- range: node.range,
765
- parent: EMPTY_PARENT
766
- };
767
- }
768
-
769
- case 'NeverTypeAnnotation':
770
- {
771
- return {
772
- type: 'GenericTypeAnnotation',
773
- id: {
774
- type: 'Identifier',
775
- name: 'never',
776
- optional: false,
777
- typeAnnotation: null,
778
- loc: node.loc,
779
- range: node.range,
780
- parent: EMPTY_PARENT
781
- },
782
- typeParameters: null,
783
- loc: node.loc,
784
- range: node.range,
785
- parent: EMPTY_PARENT
786
- };
787
- }
788
-
789
- case 'UndefinedTypeAnnotation':
790
- {
791
- return {
792
- type: 'GenericTypeAnnotation',
793
- id: {
794
- type: 'Identifier',
795
- name: 'undefined',
796
- optional: false,
797
- typeAnnotation: null,
798
- loc: node.loc,
799
- range: node.range,
800
- parent: EMPTY_PARENT
801
- },
802
- typeParameters: null,
803
- loc: node.loc,
804
- range: node.range,
805
- parent: EMPTY_PARENT
806
- };
807
- }
808
-
809
- case 'JSXText':
810
- {
811
- node.extra = {
812
- rawValue: node.value,
813
- raw: node.raw
814
- };
815
- delete node.raw;
816
- return node;
817
- }
818
-
819
- case 'Identifier':
820
- {
821
- if (node.optional === false || node.optional == null) {
822
- delete node.optional;
823
- }
824
-
825
- if (node.typeAnnotation == null) {
826
- delete node.typeAnnotation;
827
- }
828
-
829
- return node;
830
- }
831
-
832
- case 'CallExpression':
833
- {
834
- if (node.optional === false) {
835
- delete node.optional;
836
- }
837
-
838
- if (node.typeArguments == null) {
839
- delete node.typeArguments;
840
- }
841
-
842
- return node;
843
- }
844
-
845
- case 'OptionalCallExpression':
846
- {
847
- if (node.typeArguments == null) {
848
- delete node.typeArguments;
849
- }
850
-
851
- return node;
852
- }
853
-
854
- case 'MemberExpression':
855
- {
856
- delete node.optional;
857
- return node;
858
- }
859
-
860
- case 'ExpressionStatement':
861
- {
862
- delete node.directive;
863
- return node;
864
- }
865
-
866
- case 'ObjectPattern':
867
- case 'ArrayPattern':
868
- {
869
- if (node.typeAnnotation == null) {
870
- delete node.typeAnnotation;
871
- }
872
-
873
- return node;
874
- }
875
-
876
- case 'FunctionDeclaration':
877
- case 'FunctionExpression':
878
- case 'ArrowFunctionExpression':
879
- case 'ClassMethod':
880
- {
881
- delete node.expression;
882
-
883
- if (node.predicate == null) {
884
- delete node.predicate;
885
- }
886
-
887
- if (node.returnType == null) {
888
- delete node.returnType;
889
- }
890
-
891
- if (node.typeParameters == null) {
892
- delete node.typeParameters;
893
- }
894
-
895
- return node;
896
- }
897
-
898
- case 'ObjectMethod':
899
- {
900
- if (node.returnType == null) {
901
- delete node.returnType;
902
- }
903
-
904
- if (node.typeParameters == null) {
905
- delete node.typeParameters;
906
- }
907
-
908
- return node;
909
- }
910
-
911
- case 'ClassPrivateMethod':
912
- {
913
- if (node.computed === false) {
914
- delete node.computed;
915
- }
916
-
917
- if (node.predicate == null) {
918
- delete node.predicate;
919
- }
920
-
921
- if (node.returnType == null) {
922
- delete node.returnType;
923
- }
924
-
925
- if (node.typeParameters == null) {
926
- delete node.typeParameters;
927
- }
928
-
929
- return node;
930
- }
931
-
932
- case 'ClassExpression':
933
- case 'ClassDeclaration':
934
- {
935
- if (node.decorators == null || node.decorators.length === 0) {
936
- delete node.decorators;
937
- }
938
-
939
- if (node.implements == null || node.implements.length === 0) {
940
- delete node.implements;
941
- }
942
-
943
- if (node.superTypeArguments == null) {
944
- delete node.superTypeArguments;
945
- } else {
946
- node.superTypeParameters = node.superTypeArguments;
947
- delete node.superTypeArguments;
948
- }
949
-
950
- if (node.typeParameters == null) {
951
- delete node.typeParameters;
952
- }
953
-
954
- return node;
955
- }
956
-
957
- case 'ClassProperty':
958
- {
959
- if (node.optional === false) {
960
- delete node.optional;
961
- }
962
-
963
- if (node.declare === false) {
964
- delete node.declare;
965
- }
966
-
967
- if (node.typeAnnotation == null) {
968
- delete node.typeAnnotation;
969
- }
970
-
971
- return node;
972
- }
973
-
974
- case 'ClassPrivateProperty':
975
- {
976
- if (node.typeAnnotation == null) {
977
- delete node.typeAnnotation;
978
- }
979
-
980
- return node;
981
- }
982
-
983
- case 'ExportNamedDeclaration':
984
- {
985
- if (node.declaration == null) {
986
- delete node.declaration;
987
- }
988
-
989
- return node;
990
- }
991
-
992
- case 'ImportDeclaration':
993
- {
994
- if (node.attributes == null || node.attributes.length === 0) {
995
- delete node.attributes;
996
- }
997
-
998
- return node;
999
- }
1000
-
1001
- case 'ArrayExpression':
1002
- {
1003
- delete node.trailingComma;
1004
- return node;
1005
- }
1006
-
1007
- case 'JSXOpeningElement':
1008
- {
1009
- if (node.typeArguments == null) {
1010
- delete node.typeArguments;
1011
- }
1012
-
1013
- return node;
1014
- }
1015
-
1016
- case 'DeclareOpaqueType':
1017
- case 'OpaqueType':
1018
- {
1019
- if (node.lowerBound != null) {
1020
- delete node.lowerBound;
1021
- }
1022
-
1023
- if (node.upperBound != null) {
1024
- delete node.upperBound;
1025
- }
1026
-
1027
- return node;
1028
- }
1029
-
1030
- default:
1031
- {
1032
- return node;
1033
- }
1034
- }
1035
- }
1036
-
1037
- function transformProgram(program, options) {
1038
- var _resultNode$type;
1039
-
1040
- const resultNode = _SimpleTransform.SimpleTransform.transform(program, {
1041
- transform(node) {
1042
- return transformNode(node);
1043
- },
1044
-
1045
- visitorKeys: FlowESTreeAndBabelVisitorKeys
1046
- });
1047
-
1048
- _SimpleTraverser.SimpleTraverser.traverse(resultNode, {
1049
- enter(node) {
1050
- fixSourceLocation(node, options);
1051
- },
1052
-
1053
- leave() {},
1054
-
1055
- visitorKeys: FlowESTreeAndBabelVisitorKeys
1056
- });
1057
-
1058
- if ((resultNode == null ? void 0 : resultNode.type) === 'File') {
1059
- return resultNode;
1060
- }
1061
-
1062
- throw new Error(`Unknown AST node of type "${(_resultNode$type = resultNode == null ? void 0 : resultNode.type) != null ? _resultNode$type : 'NULL'}" returned from Babel conversion`);
1063
- }