hermes-parser 0.20.1 → 0.21.1

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.
@@ -479,7 +479,7 @@ function mapPropertyDefinition(node) {
479
479
 
480
480
  function mapTypeofTypeAnnotation(node) {
481
481
  // $FlowExpectedError[cannot-write]
482
- delete node.typeArguments;
482
+ delete node.typeArguments; // $FlowFixMe[incompatible-type]
483
483
 
484
484
  if (node.argument.type !== 'GenericTypeAnnotation') {
485
485
  return nodeWith(node, {
@@ -655,6 +655,7 @@ function transformNode(node) {
655
655
  var _node$parent;
656
656
 
657
657
  // Check if we have already processed this node.
658
+ // $FlowFixMe[incompatible-type]
658
659
  if (((_node$parent = node.parent) == null ? void 0 : _node$parent.type) === 'File') {
659
660
  return node;
660
661
  }
@@ -761,6 +762,11 @@ function transformNode(node) {
761
762
  return node;
762
763
  }
763
764
 
765
+ case 'AsConstExpression':
766
+ {
767
+ return node.expression;
768
+ }
769
+
764
770
  /**
765
771
  * Babel has a different format for Literals
766
772
  */
@@ -810,6 +816,13 @@ function transformNode(node) {
810
816
  return node;
811
817
  }
812
818
 
819
+ case 'TupleTypeAnnotation':
820
+ {
821
+ // $FlowExpectedError[cannot-write]
822
+ delete node.inexact;
823
+ return node;
824
+ }
825
+
813
826
  case 'JSXText':
814
827
  {
815
828
  // $FlowExpectedError[prop-missing]
@@ -750,6 +750,7 @@ function mapTypeofTypeAnnotation(
750
750
  ): TypeofTypeAnnotation {
751
751
  // $FlowExpectedError[cannot-write]
752
752
  delete node.typeArguments;
753
+ // $FlowFixMe[incompatible-type]
753
754
  if (node.argument.type !== 'GenericTypeAnnotation') {
754
755
  return nodeWith(node, {
755
756
  // $FlowExpectedError[incompatible-call] Special override for Babel
@@ -916,6 +917,7 @@ function transformNode(node: ESNodeOrBabelNode): ESNodeOrBabelNode | null {
916
917
  switch (node.type) {
917
918
  case 'Program': {
918
919
  // Check if we have already processed this node.
920
+ // $FlowFixMe[incompatible-type]
919
921
  if (node.parent?.type === 'File') {
920
922
  return node;
921
923
  }
@@ -987,6 +989,9 @@ function transformNode(node: ESNodeOrBabelNode): ESNodeOrBabelNode | null {
987
989
  };
988
990
  return node;
989
991
  }
992
+ case 'AsConstExpression': {
993
+ return node.expression;
994
+ }
990
995
 
991
996
  /**
992
997
  * Babel has a different format for Literals
@@ -1028,6 +1033,12 @@ function transformNode(node: ESNodeOrBabelNode): ESNodeOrBabelNode | null {
1028
1033
  delete node.raw;
1029
1034
  return node;
1030
1035
  }
1036
+ case 'TupleTypeAnnotation': {
1037
+ // $FlowExpectedError[cannot-write]
1038
+ delete node.inexact;
1039
+ return node;
1040
+ }
1041
+
1031
1042
  case 'JSXText': {
1032
1043
  // $FlowExpectedError[prop-missing]
1033
1044
  node.extra = {
@@ -9,7 +9,8 @@
9
9
  */
10
10
 
11
11
  /**
12
- * This transform strips Flow types that are not supported past Babel 7.
12
+ * This transforms component syntax (https://flow.org/en/docs/react/component-syntax/)
13
+ * and hook syntax (https://flow.org/en/docs/react/hook-syntax/).
13
14
  *
14
15
  * It is expected that all transforms create valid ESTree AST output. If
15
16
  * the transform requires outputting Babel specific AST nodes then it
@@ -9,7 +9,8 @@
9
9
  */
10
10
 
11
11
  /**
12
- * This transform strips Flow types that are not supported past Babel 7.
12
+ * This transforms component syntax (https://flow.org/en/docs/react/component-syntax/)
13
+ * and hook syntax (https://flow.org/en/docs/react/hook-syntax/).
13
14
  *
14
15
  * It is expected that all transforms create valid ESTree AST output. If
15
16
  * the transform requires outputting Babel specific AST nodes then it
@@ -31,6 +31,7 @@ function transformProgram(program, _options) {
31
31
  transform(node) {
32
32
  switch (node.type) {
33
33
  case 'AsExpression':
34
+ case 'AsConstExpression':
34
35
  case 'TypeCastExpression':
35
36
  {
36
37
  return node.expression;
@@ -33,6 +33,7 @@ export function transformProgram(
33
33
  transform(node: ESNode) {
34
34
  switch (node.type) {
35
35
  case 'AsExpression':
36
+ case 'AsConstExpression':
36
37
  case 'TypeCastExpression': {
37
38
  return node.expression;
38
39
  }
@@ -18,7 +18,7 @@
18
18
 
19
19
  /* eslint no-undef: 'error', no-unused-vars: ['error', {vars: "local"}], no-redeclare: 'error' */
20
20
 
21
- /* global $NonMaybeType, Partial, $ReadOnly, $ReadOnlyArray */
21
+ /* global $NonMaybeType, Partial, $ReadOnly, $ReadOnlyArray, $FlowFixMe */
22
22
  'use strict';
23
23
 
24
24
  module.exports = {
@@ -27,6 +27,7 @@ module.exports = {
27
27
  ArrayPattern: ['elements', 'typeAnnotation'],
28
28
  ArrayTypeAnnotation: ['elementType'],
29
29
  ArrowFunctionExpression: ['id', 'params', 'body', 'typeParameters', 'returnType', 'predicate'],
30
+ AsConstExpression: ['expression'],
30
31
  AsExpression: ['expression', 'typeAnnotation'],
31
32
  AssignmentExpression: ['left', 'right'],
32
33
  AssignmentPattern: ['left', 'right'],
@@ -71,6 +72,8 @@ module.exports = {
71
72
  DoWhileStatement: ['body', 'test'],
72
73
  EmptyStatement: [],
73
74
  EmptyTypeAnnotation: [],
75
+ EnumBigIntBody: ['members'],
76
+ EnumBigIntMember: ['id', 'init'],
74
77
  EnumBooleanBody: ['members'],
75
78
  EnumBooleanMember: ['id', 'init'],
76
79
  EnumDeclaration: ['id', 'body'],
@@ -18,7 +18,7 @@
18
18
 
19
19
  /* eslint no-undef: 'error', no-unused-vars: ['error', {vars: "local"}], no-redeclare: 'error' */
20
20
 
21
- /* global $NonMaybeType, Partial, $ReadOnly, $ReadOnlyArray */
21
+ /* global $NonMaybeType, Partial, $ReadOnly, $ReadOnlyArray, $FlowFixMe */
22
22
  'use strict';
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
@@ -49,6 +49,9 @@ const HERMES_AST_VISITOR_KEYS = {
49
49
  returnType: 'Node',
50
50
  predicate: 'Node'
51
51
  },
52
+ AsConstExpression: {
53
+ expression: 'Node'
54
+ },
52
55
  AsExpression: {
53
56
  expression: 'Node',
54
57
  typeAnnotation: 'Node'
@@ -227,6 +230,13 @@ const HERMES_AST_VISITOR_KEYS = {
227
230
  },
228
231
  EmptyStatement: {},
229
232
  EmptyTypeAnnotation: {},
233
+ EnumBigIntBody: {
234
+ members: 'NodeList'
235
+ },
236
+ EnumBigIntMember: {
237
+ id: 'Node',
238
+ init: 'Node'
239
+ },
230
240
  EnumBooleanBody: {
231
241
  members: 'NodeList'
232
242
  },
@@ -139,13 +139,13 @@ function updateAllParentPointers(node, visitorKeys) {
139
139
  function nodeWith(node, overrideProps, visitorKeys) {
140
140
  // Check if this will actually result in a change, maintaining referential equality is important.
141
141
  const willBeUnchanged = Object.entries(overrideProps).every(([key, value]) => {
142
- if (Array.isArray(value)) {
143
- // $FlowExpectedError[prop-missing]
144
- return Array.isArray(node[key]) ? (0, _astArrayMutationHelpers.arrayIsEqual)(node[key], value) : false;
145
- } // $FlowExpectedError[prop-missing]
142
+ const node_ = node;
146
143
 
144
+ if (Array.isArray(value)) {
145
+ return Array.isArray(node_[key]) ? (0, _astArrayMutationHelpers.arrayIsEqual)(node_[key], value) : false;
146
+ }
147
147
 
148
- return node[key] === value;
148
+ return node_[key] === value;
149
149
  });
150
150
 
151
151
  if (willBeUnchanged) {
@@ -171,14 +171,13 @@ export function nodeWith<T: ESNode>(
171
171
  // Check if this will actually result in a change, maintaining referential equality is important.
172
172
  const willBeUnchanged = Object.entries(overrideProps).every(
173
173
  ([key, value]) => {
174
+ const node_: $FlowFixMe = node;
174
175
  if (Array.isArray(value)) {
175
- // $FlowExpectedError[prop-missing]
176
- return Array.isArray(node[key])
177
- ? arrayIsEqual(node[key], value)
176
+ return Array.isArray(node_[key])
177
+ ? arrayIsEqual(node_[key], value)
178
178
  : false;
179
179
  }
180
- // $FlowExpectedError[prop-missing]
181
- return node[key] === value;
180
+ return node_[key] === value;
182
181
  },
183
182
  );
184
183
  if (willBeUnchanged) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hermes-parser",
3
- "version": "0.20.1",
3
+ "version": "0.21.1",
4
4
  "description": "A JavaScript parser built from the Hermes engine",
5
5
  "main": "dist/index.js",
6
6
  "license": "MIT",
@@ -9,7 +9,7 @@
9
9
  "url": "git@github.com:facebook/hermes.git"
10
10
  },
11
11
  "dependencies": {
12
- "hermes-estree": "0.20.1"
12
+ "hermes-estree": "0.21.1"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@babel/parser": "7.7.4",