hermes-parser 0.20.0 → 0.21.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.
- package/dist/HermesParserNodeDeserializers.js +32 -4
- package/dist/HermesParserWASM.js +1 -1
- package/dist/babel/TransformESTreeToBabel.js +14 -1
- package/dist/babel/TransformESTreeToBabel.js.flow +11 -0
- package/dist/estree/StripComponentSyntax.js +2 -1
- package/dist/estree/StripComponentSyntax.js.flow +2 -1
- package/dist/estree/StripFlowTypes.js +1 -0
- package/dist/estree/StripFlowTypes.js.flow +1 -0
- package/dist/generated/ESTreeVisitorKeys.js +4 -1
- package/dist/generated/ParserVisitorKeys.js +11 -1
- package/dist/transform/astNodeMutationHelpers.js +5 -5
- package/dist/transform/astNodeMutationHelpers.js.flow +4 -5
- package/package.json +2 -2
|
@@ -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
|
|
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
|
|
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
|
|
@@ -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
|
-
|
|
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
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
? arrayIsEqual(node[key], value)
|
|
176
|
+
return Array.isArray(node_[key])
|
|
177
|
+
? arrayIsEqual(node_[key], value)
|
|
178
178
|
: false;
|
|
179
179
|
}
|
|
180
|
-
|
|
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.
|
|
3
|
+
"version": "0.21.0",
|
|
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.
|
|
12
|
+
"hermes-estree": "0.21.0"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"@babel/parser": "7.7.4",
|