flow-parser 0.319.0 → 0.321.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 → dist}/FlowParserNodeDeserializers.js +26 -12
  3. package/dist/FlowParserWASM.js +1 -0
  4. package/{oxidized → dist}/babel/TransformESTreeToBabel.js +11 -3
  5. package/{oxidized → dist}/babel/TransformESTreeToBabel.js.flow +12 -4
  6. package/{oxidized/oxidized-src → dist}/estree/StripFlowTypesForBabel.js +33 -18
  7. package/{oxidized → dist}/estree/StripFlowTypesForBabel.js.flow +40 -18
  8. package/{oxidized/oxidized-src → dist}/estree/TransformComponentSyntax.js +25 -12
  9. package/{oxidized → dist}/estree/TransformComponentSyntax.js.flow +29 -11
  10. package/{oxidized → dist}/generated/ESTreeVisitorKeys.js +1 -1
  11. package/package.json +6 -7
  12. package/flow_parser.js +0 -14575
  13. package/oxidized/FlowParserWASM.js +0 -1
  14. package/oxidized/estree/StripFlowTypesForBabel.js +0 -176
  15. package/oxidized/estree/TransformComponentSyntax.js +0 -751
  16. package/oxidized/oxidized-src/FlowParser.js +0 -249
  17. package/oxidized/oxidized-src/FlowParserDeserializer.js +0 -209
  18. package/oxidized/oxidized-src/FlowParserNodeDeserializers.js +0 -1767
  19. package/oxidized/oxidized-src/HermesParserDecodeUTF8String.js +0 -45
  20. package/oxidized/oxidized-src/ParserOptions.js +0 -8
  21. package/oxidized/oxidized-src/babel/TransformESTreeToBabel.js +0 -1055
  22. package/oxidized/oxidized-src/estree/StripFlowTypes.js +0 -158
  23. package/oxidized/oxidized-src/estree/TransformEnumSyntax.js +0 -92
  24. package/oxidized/oxidized-src/estree/TransformMatchSyntax.js +0 -990
  25. package/oxidized/oxidized-src/estree/TransformRecordSyntax.js +0 -283
  26. package/oxidized/oxidized-src/generated/ESTreeVisitorKeys.js +0 -234
  27. package/oxidized/oxidized-src/getModuleDocblock.js +0 -87
  28. package/oxidized/oxidized-src/index.js +0 -220
  29. package/oxidized/transform/SimpleTransform.js +0 -95
  30. package/oxidized/transform/astArrayMutationHelpers.js +0 -52
  31. package/oxidized/transform/astNodeMutationHelpers.js +0 -142
  32. package/oxidized/transform/print/comments/comments.js +0 -245
  33. package/oxidized/transform/print/comments/prettier/common/util.js +0 -235
  34. package/oxidized/transform/print/comments/prettier/language-js/comments.js +0 -663
  35. package/oxidized/transform/print/comments/prettier/language-js/loc.js +0 -30
  36. package/oxidized/transform/print/comments/prettier/language-js/printer-estree.js +0 -23
  37. package/oxidized/transform/print/comments/prettier/language-js/utils.js +0 -89
  38. package/oxidized/transform/print/comments/prettier/main/comments.js +0 -374
  39. package/oxidized/transform/print/comments/prettier/utils/get-last.js +0 -5
  40. package/oxidized/transform/print/detachedNodeTypes.js +0 -1
  41. package/oxidized/transform/print/print.js +0 -68
  42. package/oxidized/traverse/SimpleTraverser.js +0 -90
  43. package/oxidized/traverse/getVisitorKeys.js +0 -29
  44. package/oxidized/utils/Builders.js +0 -181
  45. package/oxidized/utils/GenID.js +0 -37
  46. package/oxidized/utils/createSyntaxError.js +0 -15
  47. package/oxidized/utils/isReservedWord.js +0 -53
  48. package/oxidized/utils/mutateESTreeASTForPrettier.js +0 -85
  49. /package/{oxidized → dist}/FlowParser.js +0 -0
  50. /package/{oxidized → dist}/FlowParser.js.flow +0 -0
  51. /package/{oxidized → dist}/FlowParserDeserializer.js +0 -0
  52. /package/{oxidized → dist}/FlowParserDeserializer.js.flow +0 -0
  53. /package/{oxidized → dist}/FlowParserNodeDeserializers.js.flow +0 -0
  54. /package/{oxidized → dist}/FlowParserWASM.js.flow +0 -0
  55. /package/{oxidized → dist}/HermesAST.js.flow +0 -0
  56. /package/{oxidized → dist}/HermesParserDecodeUTF8String.js +0 -0
  57. /package/{oxidized → dist}/HermesParserDecodeUTF8String.js.flow +0 -0
  58. /package/{oxidized → dist}/ParserOptions.js +0 -0
  59. /package/{oxidized → dist}/ParserOptions.js.flow +0 -0
  60. /package/{oxidized → dist}/estree/StripFlowTypes.js +0 -0
  61. /package/{oxidized → dist}/estree/StripFlowTypes.js.flow +0 -0
  62. /package/{oxidized → dist}/estree/TransformEnumSyntax.js +0 -0
  63. /package/{oxidized → dist}/estree/TransformEnumSyntax.js.flow +0 -0
  64. /package/{oxidized → dist}/estree/TransformMatchSyntax.js +0 -0
  65. /package/{oxidized → dist}/estree/TransformMatchSyntax.js.flow +0 -0
  66. /package/{oxidized → dist}/estree/TransformRecordSyntax.js +0 -0
  67. /package/{oxidized → dist}/estree/TransformRecordSyntax.js.flow +0 -0
  68. /package/{oxidized → dist}/generated/ESTreeVisitorKeys.js.flow +0 -0
  69. /package/{oxidized → dist}/getModuleDocblock.js +0 -0
  70. /package/{oxidized → dist}/getModuleDocblock.js.flow +0 -0
  71. /package/{oxidized → dist}/index.js +0 -0
  72. /package/{oxidized → dist}/index.js.flow +0 -0
  73. /package/{oxidized/oxidized-src → dist}/transform/SimpleTransform.js +0 -0
  74. /package/{oxidized → dist}/transform/SimpleTransform.js.flow +0 -0
  75. /package/{oxidized/oxidized-src → dist}/transform/astArrayMutationHelpers.js +0 -0
  76. /package/{oxidized → dist}/transform/astArrayMutationHelpers.js.flow +0 -0
  77. /package/{oxidized/oxidized-src → dist}/transform/astNodeMutationHelpers.js +0 -0
  78. /package/{oxidized → dist}/transform/astNodeMutationHelpers.js.flow +0 -0
  79. /package/{oxidized/oxidized-src → dist}/transform/print/comments/comments.js +0 -0
  80. /package/{oxidized → dist}/transform/print/comments/comments.js.flow +0 -0
  81. /package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/common/util.js +0 -0
  82. /package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/language-js/comments.js +0 -0
  83. /package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/language-js/loc.js +0 -0
  84. /package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/language-js/printer-estree.js +0 -0
  85. /package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/language-js/utils.js +0 -0
  86. /package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/main/comments.js +0 -0
  87. /package/{oxidized/oxidized-src → dist}/transform/print/comments/prettier/utils/get-last.js +0 -0
  88. /package/{oxidized/oxidized-src → dist}/transform/print/detachedNodeTypes.js +0 -0
  89. /package/{oxidized → dist}/transform/print/detachedNodeTypes.js.flow +0 -0
  90. /package/{oxidized/oxidized-src → dist}/transform/print/print.js +0 -0
  91. /package/{oxidized → dist}/transform/print/print.js.flow +0 -0
  92. /package/{oxidized/oxidized-src → dist}/traverse/SimpleTraverser.js +0 -0
  93. /package/{oxidized → dist}/traverse/SimpleTraverser.js.flow +0 -0
  94. /package/{oxidized/oxidized-src → dist}/traverse/getVisitorKeys.js +0 -0
  95. /package/{oxidized → dist}/traverse/getVisitorKeys.js.flow +0 -0
  96. /package/{oxidized/oxidized-src → dist}/utils/Builders.js +0 -0
  97. /package/{oxidized → dist}/utils/Builders.js.flow +0 -0
  98. /package/{oxidized/oxidized-src → dist}/utils/GenID.js +0 -0
  99. /package/{oxidized → dist}/utils/GenID.js.flow +0 -0
  100. /package/{oxidized/oxidized-src → dist}/utils/createSyntaxError.js +0 -0
  101. /package/{oxidized → dist}/utils/createSyntaxError.js.flow +0 -0
  102. /package/{oxidized/oxidized-src → dist}/utils/isReservedWord.js +0 -0
  103. /package/{oxidized → dist}/utils/isReservedWord.js.flow +0 -0
  104. /package/{oxidized/oxidized-src → dist}/utils/mutateESTreeASTForPrettier.js +0 -0
  105. /package/{oxidized → dist}/utils/mutateESTreeASTForPrettier.js.flow +0 -0
@@ -30,6 +30,7 @@ const FlowESTreeAndBabelVisitorKeys = { ..._ESTreeVisitorKeys.default,
30
30
  ClassPrivateMethod: ['key', 'params', 'body', 'returnType', 'typeParameters'],
31
31
  ClassProperty: ['key', 'value', 'typeAnnotation', 'variance'],
32
32
  ClassPrivateProperty: ['key', 'value', 'typeAnnotation', 'variance'],
33
+ DeclareVariable: ['id'],
33
34
  Directive: ['value'],
34
35
  DirectiveLiteral: [],
35
36
  ExportNamespaceSpecifier: ['exported'],
@@ -435,11 +436,18 @@ function mapTypeofTypeAnnotation(node) {
435
436
  }
436
437
 
437
438
  function mapDeclareVariable(node) {
438
- if (node.kind != null) {
439
- delete node.kind;
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;
440
445
  }
441
446
 
442
- return node;
447
+ delete babelNode.declarations;
448
+ delete babelNode.kind;
449
+ delete babelNode.implicitDeclare;
450
+ return babelNode;
443
451
  }
444
452
 
445
453
  function mapJSXElement(node) {
@@ -68,6 +68,7 @@ const FlowESTreeAndBabelVisitorKeys: VisitorKeys = {
68
68
  ClassPrivateMethod: ['key', 'params', 'body', 'returnType', 'typeParameters'],
69
69
  ClassProperty: ['key', 'value', 'typeAnnotation', 'variance'],
70
70
  ClassPrivateProperty: ['key', 'value', 'typeAnnotation', 'variance'],
71
+ DeclareVariable: ['id'],
71
72
  Directive: ['value'],
72
73
  DirectiveLiteral: [],
73
74
  ExportNamespaceSpecifier: ['exported'],
@@ -778,11 +779,18 @@ function mapTypeofTypeAnnotation(
778
779
  }
779
780
 
780
781
  function mapDeclareVariable(node: DeclareVariable): DeclareVariable {
781
- if (node.kind != null) {
782
- // $FlowExpectedError[cannot-write]
783
- delete node.kind;
782
+ const babelNode: $FlowFixMe = node;
783
+ if (
784
+ babelNode.id == null &&
785
+ Array.isArray(babelNode.declarations) &&
786
+ babelNode.declarations[0]?.id != null
787
+ ) {
788
+ babelNode.id = babelNode.declarations[0].id;
784
789
  }
785
- return node;
790
+ delete babelNode.declarations;
791
+ delete babelNode.kind;
792
+ delete babelNode.implicitDeclare;
793
+ return babelNode;
786
794
  }
787
795
 
788
796
  function mapJSXElement(node: JSXElement): JSXElement {
@@ -40,19 +40,32 @@ function createAnyTypeAnnotation(node) {
40
40
  };
41
41
  }
42
42
 
43
+ function declareVariableDeclarator(id, node) {
44
+ return {
45
+ type: 'VariableDeclarator',
46
+ id,
47
+ init: null,
48
+ loc: node.loc,
49
+ range: node.range,
50
+ parent: EMPTY_PARENT
51
+ };
52
+ }
53
+
43
54
  function mapDeclareEnum(node) {
55
+ const id = nodeWith(node.id, {
56
+ typeAnnotation: {
57
+ type: 'TypeAnnotation',
58
+ typeAnnotation: createAnyTypeAnnotation(node.body),
59
+ loc: node.body.loc,
60
+ range: node.body.range,
61
+ parent: EMPTY_PARENT
62
+ }
63
+ });
44
64
  return {
45
65
  type: 'DeclareVariable',
46
66
  kind: 'const',
47
- id: nodeWith(node.id, {
48
- typeAnnotation: {
49
- type: 'TypeAnnotation',
50
- typeAnnotation: createAnyTypeAnnotation(node.body),
51
- loc: node.body.loc,
52
- range: node.body.range,
53
- parent: EMPTY_PARENT
54
- }
55
- }),
67
+ declarations: [declareVariableDeclarator(id, node)],
68
+ implicitDeclare: false,
56
69
  loc: node.loc,
57
70
  range: node.range,
58
71
  parent: node.parent
@@ -60,18 +73,20 @@ function mapDeclareEnum(node) {
60
73
  }
61
74
 
62
75
  function mapDeclareNamespace(node) {
76
+ const id = nodeWith(node.id, {
77
+ typeAnnotation: {
78
+ type: 'TypeAnnotation',
79
+ typeAnnotation: createAnyTypeAnnotation(node.body),
80
+ loc: node.body.loc,
81
+ range: node.body.range,
82
+ parent: EMPTY_PARENT
83
+ }
84
+ });
63
85
  return {
64
86
  type: 'DeclareVariable',
65
87
  kind: 'const',
66
- id: nodeWith(node.id, {
67
- typeAnnotation: {
68
- type: 'TypeAnnotation',
69
- typeAnnotation: createAnyTypeAnnotation(node.body),
70
- loc: node.body.loc,
71
- range: node.body.range,
72
- parent: EMPTY_PARENT
73
- }
74
- }),
88
+ declarations: [declareVariableDeclarator(id, node)],
89
+ implicitDeclare: false,
75
90
  loc: node.loc,
76
91
  range: node.range,
77
92
  parent: node.parent
@@ -30,6 +30,8 @@ import type {
30
30
  QualifiedTypeIdentifier,
31
31
  QualifiedTypeofIdentifier,
32
32
  AFunction,
33
+ BindingName,
34
+ VariableDeclarator,
33
35
  } from 'flow-estree';
34
36
 
35
37
  import {SimpleTransform} from '../transform/SimpleTransform';
@@ -71,22 +73,39 @@ function createAnyTypeAnnotation(node: ESNode): AnyTypeAnnotation {
71
73
  };
72
74
  }
73
75
 
76
+ function declareVariableDeclarator(
77
+ id: BindingName,
78
+ node: ESNode,
79
+ ): VariableDeclarator {
80
+ return {
81
+ type: 'VariableDeclarator',
82
+ id,
83
+ init: null,
84
+ loc: node.loc,
85
+ range: node.range,
86
+ parent: EMPTY_PARENT,
87
+ };
88
+ }
89
+
74
90
  /**
75
91
  * Convert DeclareEnum nodes to DeclareVariable
76
92
  */
77
93
  function mapDeclareEnum(node: DeclareEnum): DeclareVariable {
94
+ const id = nodeWith(node.id, {
95
+ typeAnnotation: {
96
+ type: 'TypeAnnotation',
97
+ typeAnnotation: createAnyTypeAnnotation(node.body),
98
+ loc: node.body.loc,
99
+ range: node.body.range,
100
+ parent: EMPTY_PARENT,
101
+ },
102
+ });
103
+
78
104
  return {
79
105
  type: 'DeclareVariable',
80
106
  kind: 'const',
81
- id: nodeWith(node.id, {
82
- typeAnnotation: {
83
- type: 'TypeAnnotation',
84
- typeAnnotation: createAnyTypeAnnotation(node.body),
85
- loc: node.body.loc,
86
- range: node.body.range,
87
- parent: EMPTY_PARENT,
88
- },
89
- }),
107
+ declarations: [declareVariableDeclarator(id, node)],
108
+ implicitDeclare: false,
90
109
  loc: node.loc,
91
110
  range: node.range,
92
111
  parent: node.parent,
@@ -97,18 +116,21 @@ function mapDeclareEnum(node: DeclareEnum): DeclareVariable {
97
116
  * Convert DeclareNamespace nodes to DeclareVariable
98
117
  */
99
118
  function mapDeclareNamespace(node: DeclareNamespace): DeclareVariable {
119
+ const id = nodeWith(node.id, {
120
+ typeAnnotation: {
121
+ type: 'TypeAnnotation',
122
+ typeAnnotation: createAnyTypeAnnotation(node.body),
123
+ loc: node.body.loc,
124
+ range: node.body.range,
125
+ parent: EMPTY_PARENT,
126
+ },
127
+ });
128
+
100
129
  return {
101
130
  type: 'DeclareVariable',
102
131
  kind: 'const',
103
- id: nodeWith(node.id, {
104
- typeAnnotation: {
105
- type: 'TypeAnnotation',
106
- typeAnnotation: createAnyTypeAnnotation(node.body),
107
- loc: node.body.loc,
108
- range: node.body.range,
109
- parent: EMPTY_PARENT,
110
- },
111
- }),
132
+ declarations: [declareVariableDeclarator(id, node)],
133
+ implicitDeclare: false,
112
134
  loc: node.loc,
113
135
  range: node.range,
114
136
  parent: node.parent,
@@ -23,24 +23,37 @@ function createDefaultPosition() {
23
23
  };
24
24
  }
25
25
 
26
- function mapDeclareComponent(node) {
26
+ function declareVariableDeclarator(id, node) {
27
27
  return {
28
- type: 'DeclareVariable',
29
- id: nodeWith(node.id, {
28
+ type: 'VariableDeclarator',
29
+ id,
30
+ init: null,
31
+ loc: node.loc,
32
+ range: node.range,
33
+ parent: EMPTY_PARENT
34
+ };
35
+ }
36
+
37
+ function mapDeclareComponent(node) {
38
+ const id = nodeWith(node.id, {
39
+ typeAnnotation: {
40
+ type: 'TypeAnnotation',
30
41
  typeAnnotation: {
31
- type: 'TypeAnnotation',
32
- typeAnnotation: {
33
- type: 'AnyTypeAnnotation',
34
- loc: node.loc,
35
- range: node.range,
36
- parent: EMPTY_PARENT
37
- },
42
+ type: 'AnyTypeAnnotation',
38
43
  loc: node.loc,
39
44
  range: node.range,
40
45
  parent: EMPTY_PARENT
41
- }
42
- }),
46
+ },
47
+ loc: node.loc,
48
+ range: node.range,
49
+ parent: EMPTY_PARENT
50
+ }
51
+ });
52
+ return {
53
+ type: 'DeclareVariable',
54
+ declarations: [declareVariableDeclarator(id, node)],
43
55
  kind: 'const',
56
+ implicitDeclare: false,
44
57
  loc: node.loc,
45
58
  range: node.range,
46
59
  parent: node.parent
@@ -47,6 +47,7 @@ import type {
47
47
  BindingName,
48
48
  ObjectTypePropertySignature,
49
49
  ObjectTypeSpreadProperty,
50
+ VariableDeclarator,
50
51
  } from 'flow-estree';
51
52
 
52
53
  import {SimpleTransform} from '../transform/SimpleTransform';
@@ -66,24 +67,41 @@ function createDefaultPosition(): Position {
66
67
  };
67
68
  }
68
69
 
69
- function mapDeclareComponent(node: DeclareComponent): DeclareVariable {
70
+ function declareVariableDeclarator(
71
+ id: BindingName,
72
+ node: ESNode,
73
+ ): VariableDeclarator {
70
74
  return {
71
- type: 'DeclareVariable',
72
- id: nodeWith(node.id, {
75
+ type: 'VariableDeclarator',
76
+ id,
77
+ init: null,
78
+ loc: node.loc,
79
+ range: node.range,
80
+ parent: EMPTY_PARENT,
81
+ };
82
+ }
83
+
84
+ function mapDeclareComponent(node: DeclareComponent): DeclareVariable {
85
+ const id = nodeWith(node.id, {
86
+ typeAnnotation: {
87
+ type: 'TypeAnnotation',
73
88
  typeAnnotation: {
74
- type: 'TypeAnnotation',
75
- typeAnnotation: {
76
- type: 'AnyTypeAnnotation',
77
- loc: node.loc,
78
- range: node.range,
79
- parent: EMPTY_PARENT,
80
- },
89
+ type: 'AnyTypeAnnotation',
81
90
  loc: node.loc,
82
91
  range: node.range,
83
92
  parent: EMPTY_PARENT,
84
93
  },
85
- }),
94
+ loc: node.loc,
95
+ range: node.range,
96
+ parent: EMPTY_PARENT,
97
+ },
98
+ });
99
+
100
+ return {
101
+ type: 'DeclareVariable',
102
+ declarations: [declareVariableDeclarator(id, node)],
86
103
  kind: 'const',
104
+ implicitDeclare: false,
87
105
  loc: node.loc,
88
106
  range: node.range,
89
107
  parent: node.parent,
@@ -51,7 +51,7 @@ module.exports = {
51
51
  DeclareNamespace: ['id', 'body'],
52
52
  DeclareOpaqueType: ['id', 'typeParameters', 'impltype', 'lowerBound', 'upperBound', 'supertype'],
53
53
  DeclareTypeAlias: ['id', 'typeParameters', 'right'],
54
- DeclareVariable: ['id'],
54
+ DeclareVariable: ['declarations'],
55
55
  DeclaredPredicate: ['value'],
56
56
  Decorator: ['expression'],
57
57
  DoWhileStatement: ['body', 'test'],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flow-parser",
3
- "version": "0.319.0",
3
+ "version": "0.321.0",
4
4
  "description": "JavaScript parser written in OCaml. Produces ESTree AST",
5
5
  "homepage": "https://flow.org",
6
6
  "license": "MIT",
@@ -9,21 +9,20 @@
9
9
  "email": "flow@fb.com"
10
10
  },
11
11
  "files": [
12
- "flow_parser.js",
13
- "oxidized"
12
+ "dist",
13
+ "README.md"
14
14
  ],
15
- "main": "flow_parser.js",
15
+ "main": "dist/index.js",
16
16
  "repository": {
17
17
  "type": "git",
18
18
  "url": "git+https://github.com/facebook/flow.git",
19
19
  "directory": "packages/flow-parser"
20
20
  },
21
21
  "scripts": {
22
- "test": "node test/run_tests.js",
23
- "build": "make js"
22
+ "test": "node test/run_tests.js"
24
23
  },
25
24
  "dependencies": {
26
- "flow-estree": "0.319.0"
25
+ "flow-estree": "0.321.0"
27
26
  },
28
27
  "devDependencies": {
29
28
  "@babel/generator": "7.7.4",