hermes-parser 0.11.0 → 0.12.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/HermesParser.js +44 -19
- package/dist/HermesParser.js.flow +86 -52
- package/dist/HermesParserDeserializer.js.flow +1 -1
- package/dist/HermesParserNodeDeserializers.js +17 -16
- package/dist/HermesParserWASM.js +1 -1
- package/dist/HermesParserWASM.js.flow +6 -2
- package/dist/HermesToBabelAdapter.js +201 -0
- package/dist/HermesToBabelAdapter.js.flow +209 -0
- package/dist/generated/ESTreeVisitorKeys.js +3 -3
- package/dist/generated/ParserVisitorKeys.js +3 -3
- package/dist/index.js +6 -1
- package/dist/index.js.flow +1 -0
- package/dist/transform/SimpleTransform.js +2 -1
- package/dist/transform/SimpleTransform.js.flow +1 -0
- package/dist/utils/mutateESTreeASTForPrettier.js +116 -0
- package/dist/utils/mutateESTreeASTForPrettier.js.flow +119 -0
- package/package.json +2 -2
|
@@ -12,7 +12,11 @@ type INTENTIONAL_ANY = $FlowFixMe;
|
|
|
12
12
|
type JSType = 'number' | 'string' | 'array' | 'boolean';
|
|
13
13
|
type CBoolean = ?(number | boolean);
|
|
14
14
|
|
|
15
|
-
type
|
|
15
|
+
type WASMModuleOverrides = $ReadOnly<{
|
|
16
|
+
quit(status: number, toThrow: Error): void,
|
|
17
|
+
}>;
|
|
18
|
+
|
|
19
|
+
export type HermesParserWASM = $ReadOnly<{
|
|
16
20
|
HEAP8: Int8Array,
|
|
17
21
|
HEAP16: Int16Array,
|
|
18
22
|
HEAP32: Int32Array,
|
|
@@ -72,4 +76,4 @@ type HermesParserWASM = $ReadOnly<{
|
|
|
72
76
|
stackRestore(ptr: number): void,
|
|
73
77
|
}>;
|
|
74
78
|
|
|
75
|
-
declare module.exports: HermesParserWASM;
|
|
79
|
+
declare module.exports: WASMModuleOverrides => HermesParserWASM;
|
|
@@ -18,6 +18,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
18
18
|
*
|
|
19
19
|
* @format
|
|
20
20
|
*/
|
|
21
|
+
function createSyntaxError(node, err) {
|
|
22
|
+
const syntaxError = new SyntaxError(err); // $FlowExpectedError[prop-missing]
|
|
23
|
+
|
|
24
|
+
syntaxError.loc = {
|
|
25
|
+
line: node.loc.start.line,
|
|
26
|
+
column: node.loc.start.column
|
|
27
|
+
};
|
|
28
|
+
return syntaxError;
|
|
29
|
+
}
|
|
30
|
+
|
|
21
31
|
class HermesToBabelAdapter extends _HermesASTAdapter.default {
|
|
22
32
|
fixSourceLocation(node) {
|
|
23
33
|
var _this$sourceFilename;
|
|
@@ -113,6 +123,7 @@ class HermesToBabelAdapter extends _HermesASTAdapter.default {
|
|
|
113
123
|
case 'TupleTypeLabeledElement':
|
|
114
124
|
case 'TupleTypeSpreadElement':
|
|
115
125
|
case 'ObjectTypeMappedTypeProperty':
|
|
126
|
+
case 'ComponentTypeAnnotation':
|
|
116
127
|
return this.mapUnsupportedTypeAnnotation(node);
|
|
117
128
|
|
|
118
129
|
case 'BigIntLiteral':
|
|
@@ -136,9 +147,15 @@ class HermesToBabelAdapter extends _HermesASTAdapter.default {
|
|
|
136
147
|
case 'DeclareEnum':
|
|
137
148
|
return this.mapDeclareEnum(node);
|
|
138
149
|
|
|
150
|
+
case 'DeclareComponent':
|
|
151
|
+
return this.mapDeclareComponent(node);
|
|
152
|
+
|
|
139
153
|
case 'JSXElement':
|
|
140
154
|
return this.mapJSXElement(node);
|
|
141
155
|
|
|
156
|
+
case 'ComponentDeclaration':
|
|
157
|
+
return this.mapComponentDeclaration(node);
|
|
158
|
+
|
|
142
159
|
default:
|
|
143
160
|
return this.mapNodeDefault(node);
|
|
144
161
|
}
|
|
@@ -557,11 +574,195 @@ class HermesToBabelAdapter extends _HermesASTAdapter.default {
|
|
|
557
574
|
return this.mapDeclareVariable(nodeUnprocessed);
|
|
558
575
|
}
|
|
559
576
|
|
|
577
|
+
mapDeclareComponent(nodeUnprocessed) {
|
|
578
|
+
nodeUnprocessed.id.typeAnnotation = this.mapUnsupportedTypeAnnotation(nodeUnprocessed);
|
|
579
|
+
delete nodeUnprocessed.params;
|
|
580
|
+
delete nodeUnprocessed.rest;
|
|
581
|
+
delete nodeUnprocessed.typeParameters;
|
|
582
|
+
delete nodeUnprocessed.rendersType;
|
|
583
|
+
nodeUnprocessed.type = 'DeclareVariable';
|
|
584
|
+
return this.mapDeclareVariable(nodeUnprocessed);
|
|
585
|
+
}
|
|
586
|
+
|
|
560
587
|
mapJSXElement(nodeUnprocessed) {
|
|
561
588
|
delete nodeUnprocessed.openingElement.typeArguments;
|
|
562
589
|
return this.mapNodeDefault(nodeUnprocessed);
|
|
563
590
|
}
|
|
564
591
|
|
|
592
|
+
mapComponentDeclaration(nodeUnprocessed) {
|
|
593
|
+
let rendersType = nodeUnprocessed.rendersType;
|
|
594
|
+
|
|
595
|
+
if (rendersType == null) {
|
|
596
|
+
// Create empty loc for return type annotation nodes
|
|
597
|
+
const createRendersTypeLoc = () => ({
|
|
598
|
+
loc: {
|
|
599
|
+
start: { ...nodeUnprocessed.body.loc.end
|
|
600
|
+
},
|
|
601
|
+
end: { ...nodeUnprocessed.body.loc.end
|
|
602
|
+
},
|
|
603
|
+
rangeStart: nodeUnprocessed.body.loc.rangeStart,
|
|
604
|
+
rangeEnd: nodeUnprocessed.body.loc.rangeEnd
|
|
605
|
+
}
|
|
606
|
+
});
|
|
607
|
+
|
|
608
|
+
rendersType = {
|
|
609
|
+
type: 'GenericTypeAnnotation',
|
|
610
|
+
id: {
|
|
611
|
+
type: 'QualifiedTypeIdentifier',
|
|
612
|
+
qualification: {
|
|
613
|
+
type: 'Identifier',
|
|
614
|
+
name: 'React',
|
|
615
|
+
...createRendersTypeLoc()
|
|
616
|
+
},
|
|
617
|
+
id: {
|
|
618
|
+
type: 'Identifier',
|
|
619
|
+
name: 'Node',
|
|
620
|
+
...createRendersTypeLoc()
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
typeParameters: null,
|
|
624
|
+
...createRendersTypeLoc()
|
|
625
|
+
};
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
function getParamName(paramName) {
|
|
629
|
+
switch (paramName.type) {
|
|
630
|
+
case 'Identifier':
|
|
631
|
+
return paramName.name;
|
|
632
|
+
|
|
633
|
+
case 'StringLiteral':
|
|
634
|
+
return paramName.value;
|
|
635
|
+
|
|
636
|
+
default:
|
|
637
|
+
throw createSyntaxError(paramName, `Unknown Component parameter name type of "${paramName.type}"`);
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
const properties = nodeUnprocessed.params.map(param => {
|
|
642
|
+
switch (param.type) {
|
|
643
|
+
case 'RestElement':
|
|
644
|
+
{
|
|
645
|
+
delete param.typeAnnotation;
|
|
646
|
+
return param;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
case 'ComponentParameter':
|
|
650
|
+
{
|
|
651
|
+
if (getParamName(param.name) === 'ref') {
|
|
652
|
+
throw createSyntaxError(param, 'Component parameters named "ref" are currently not supported');
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
if (param.name.type === 'Identifier') {
|
|
656
|
+
delete param.name.typeAnnotation;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
if (param.local.type === 'AssignmentPattern') {
|
|
660
|
+
delete param.local.left.typeAnnotation;
|
|
661
|
+
delete param.local.left.optional;
|
|
662
|
+
} else {
|
|
663
|
+
delete param.local.typeAnnotation;
|
|
664
|
+
delete param.local.optional;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
return {
|
|
668
|
+
type: 'ObjectProperty',
|
|
669
|
+
key: param.name,
|
|
670
|
+
value: param.local,
|
|
671
|
+
method: false,
|
|
672
|
+
shorthand: param.shorthand,
|
|
673
|
+
computed: false,
|
|
674
|
+
loc: param.loc,
|
|
675
|
+
start: param.start,
|
|
676
|
+
end: param.end
|
|
677
|
+
};
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
default:
|
|
681
|
+
{
|
|
682
|
+
throw createSyntaxError(param, `Unknown Component parameter type of "${param.type}"`);
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
});
|
|
686
|
+
|
|
687
|
+
const paramsLoc = (() => {
|
|
688
|
+
if (properties.length === 0) {
|
|
689
|
+
// No props, approximate range via existing nodes.
|
|
690
|
+
const startLoc = nodeUnprocessed.typeParameters != null ? nodeUnprocessed.typeParameters.loc : nodeUnprocessed.id.loc;
|
|
691
|
+
return {
|
|
692
|
+
start: startLoc.end,
|
|
693
|
+
end: rendersType.loc.start,
|
|
694
|
+
startRange: startLoc.endRange,
|
|
695
|
+
endRange: rendersType.loc.startRange
|
|
696
|
+
};
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
return {
|
|
700
|
+
start: properties[0].loc.start,
|
|
701
|
+
end: properties[properties.length - 1].loc.end,
|
|
702
|
+
startRange: properties[0].loc.startRange,
|
|
703
|
+
endRange: properties[properties.length - 1].loc.endRange
|
|
704
|
+
};
|
|
705
|
+
})(); // Create empty loc for type annotation nodes
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
const createParamsTypeLoc = () => ({
|
|
709
|
+
loc: {
|
|
710
|
+
start: { ...paramsLoc.end
|
|
711
|
+
},
|
|
712
|
+
end: { ...paramsLoc.end
|
|
713
|
+
},
|
|
714
|
+
startRange: paramsLoc.endRange,
|
|
715
|
+
endRange: paramsLoc.endRange
|
|
716
|
+
}
|
|
717
|
+
});
|
|
718
|
+
|
|
719
|
+
const params = [{
|
|
720
|
+
type: 'ObjectPattern',
|
|
721
|
+
properties,
|
|
722
|
+
typeAnnotation: {
|
|
723
|
+
type: 'TypeAnnotation',
|
|
724
|
+
typeAnnotation: {
|
|
725
|
+
type: 'GenericTypeAnnotation',
|
|
726
|
+
id: {
|
|
727
|
+
type: 'Identifier',
|
|
728
|
+
name: '$ReadOnly',
|
|
729
|
+
...createParamsTypeLoc()
|
|
730
|
+
},
|
|
731
|
+
typeParameters: {
|
|
732
|
+
type: 'TypeParameterInstantiation',
|
|
733
|
+
params: [{
|
|
734
|
+
type: 'ObjectTypeAnnotation',
|
|
735
|
+
callProperties: [],
|
|
736
|
+
properties: [],
|
|
737
|
+
indexers: [],
|
|
738
|
+
internalSlots: [],
|
|
739
|
+
exact: false,
|
|
740
|
+
inexact: true,
|
|
741
|
+
...createParamsTypeLoc()
|
|
742
|
+
}],
|
|
743
|
+
...createParamsTypeLoc()
|
|
744
|
+
},
|
|
745
|
+
...createParamsTypeLoc()
|
|
746
|
+
},
|
|
747
|
+
...createParamsTypeLoc()
|
|
748
|
+
},
|
|
749
|
+
loc: paramsLoc
|
|
750
|
+
}];
|
|
751
|
+
const functionComponent = {
|
|
752
|
+
type: 'FunctionDeclaration',
|
|
753
|
+
id: nodeUnprocessed.id,
|
|
754
|
+
typeParameters: nodeUnprocessed.typeParameters,
|
|
755
|
+
params,
|
|
756
|
+
returnType: rendersType,
|
|
757
|
+
body: nodeUnprocessed.body,
|
|
758
|
+
async: false,
|
|
759
|
+
generator: false,
|
|
760
|
+
predicate: null,
|
|
761
|
+
loc: nodeUnprocessed.loc
|
|
762
|
+
};
|
|
763
|
+
return this.mapNodeDefault(functionComponent);
|
|
764
|
+
}
|
|
765
|
+
|
|
565
766
|
}
|
|
566
767
|
|
|
567
768
|
exports.default = HermesToBabelAdapter;
|
|
@@ -14,6 +14,17 @@ import HermesASTAdapter from './HermesASTAdapter';
|
|
|
14
14
|
|
|
15
15
|
declare var BigInt: ?(value: $FlowFixMe) => mixed;
|
|
16
16
|
|
|
17
|
+
function createSyntaxError(node: HermesNode, err: string): SyntaxError {
|
|
18
|
+
const syntaxError = new SyntaxError(err);
|
|
19
|
+
// $FlowExpectedError[prop-missing]
|
|
20
|
+
syntaxError.loc = {
|
|
21
|
+
line: node.loc.start.line,
|
|
22
|
+
column: node.loc.start.column,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
return syntaxError;
|
|
26
|
+
}
|
|
27
|
+
|
|
17
28
|
export default class HermesToBabelAdapter extends HermesASTAdapter {
|
|
18
29
|
fixSourceLocation(node: HermesNode): void {
|
|
19
30
|
const loc = node.loc;
|
|
@@ -85,6 +96,7 @@ export default class HermesToBabelAdapter extends HermesASTAdapter {
|
|
|
85
96
|
case 'TupleTypeLabeledElement':
|
|
86
97
|
case 'TupleTypeSpreadElement':
|
|
87
98
|
case 'ObjectTypeMappedTypeProperty':
|
|
99
|
+
case 'ComponentTypeAnnotation':
|
|
88
100
|
return this.mapUnsupportedTypeAnnotation(node);
|
|
89
101
|
case 'BigIntLiteral':
|
|
90
102
|
return this.mapBigIntLiteral(node);
|
|
@@ -100,8 +112,12 @@ export default class HermesToBabelAdapter extends HermesASTAdapter {
|
|
|
100
112
|
return this.mapDeclareVariable(node);
|
|
101
113
|
case 'DeclareEnum':
|
|
102
114
|
return this.mapDeclareEnum(node);
|
|
115
|
+
case 'DeclareComponent':
|
|
116
|
+
return this.mapDeclareComponent(node);
|
|
103
117
|
case 'JSXElement':
|
|
104
118
|
return this.mapJSXElement(node);
|
|
119
|
+
case 'ComponentDeclaration':
|
|
120
|
+
return this.mapComponentDeclaration(node);
|
|
105
121
|
default:
|
|
106
122
|
return this.mapNodeDefault(node);
|
|
107
123
|
}
|
|
@@ -539,8 +555,201 @@ export default class HermesToBabelAdapter extends HermesASTAdapter {
|
|
|
539
555
|
return this.mapDeclareVariable(nodeUnprocessed);
|
|
540
556
|
}
|
|
541
557
|
|
|
558
|
+
mapDeclareComponent(nodeUnprocessed: HermesNode): HermesNode {
|
|
559
|
+
nodeUnprocessed.id.typeAnnotation =
|
|
560
|
+
this.mapUnsupportedTypeAnnotation(nodeUnprocessed);
|
|
561
|
+
|
|
562
|
+
delete nodeUnprocessed.params;
|
|
563
|
+
delete nodeUnprocessed.rest;
|
|
564
|
+
delete nodeUnprocessed.typeParameters;
|
|
565
|
+
delete nodeUnprocessed.rendersType;
|
|
566
|
+
|
|
567
|
+
nodeUnprocessed.type = 'DeclareVariable';
|
|
568
|
+
|
|
569
|
+
return this.mapDeclareVariable(nodeUnprocessed);
|
|
570
|
+
}
|
|
571
|
+
|
|
542
572
|
mapJSXElement(nodeUnprocessed: HermesNode): HermesNode {
|
|
543
573
|
delete nodeUnprocessed.openingElement.typeArguments;
|
|
544
574
|
return this.mapNodeDefault(nodeUnprocessed);
|
|
545
575
|
}
|
|
576
|
+
|
|
577
|
+
mapComponentDeclaration(nodeUnprocessed: HermesNode): HermesNode {
|
|
578
|
+
let rendersType = nodeUnprocessed.rendersType;
|
|
579
|
+
if (rendersType == null) {
|
|
580
|
+
// Create empty loc for return type annotation nodes
|
|
581
|
+
const createRendersTypeLoc = () => ({
|
|
582
|
+
loc: {
|
|
583
|
+
start: {...nodeUnprocessed.body.loc.end},
|
|
584
|
+
end: {...nodeUnprocessed.body.loc.end},
|
|
585
|
+
rangeStart: nodeUnprocessed.body.loc.rangeStart,
|
|
586
|
+
rangeEnd: nodeUnprocessed.body.loc.rangeEnd,
|
|
587
|
+
},
|
|
588
|
+
});
|
|
589
|
+
|
|
590
|
+
rendersType = {
|
|
591
|
+
type: 'GenericTypeAnnotation',
|
|
592
|
+
id: {
|
|
593
|
+
type: 'QualifiedTypeIdentifier',
|
|
594
|
+
qualification: {
|
|
595
|
+
type: 'Identifier',
|
|
596
|
+
name: 'React',
|
|
597
|
+
...createRendersTypeLoc(),
|
|
598
|
+
},
|
|
599
|
+
id: {
|
|
600
|
+
type: 'Identifier',
|
|
601
|
+
name: 'Node',
|
|
602
|
+
...createRendersTypeLoc(),
|
|
603
|
+
},
|
|
604
|
+
},
|
|
605
|
+
typeParameters: null,
|
|
606
|
+
...createRendersTypeLoc(),
|
|
607
|
+
};
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
function getParamName(paramName: HermesNode): string {
|
|
611
|
+
switch (paramName.type) {
|
|
612
|
+
case 'Identifier':
|
|
613
|
+
return paramName.name;
|
|
614
|
+
case 'StringLiteral':
|
|
615
|
+
return paramName.value;
|
|
616
|
+
default:
|
|
617
|
+
throw createSyntaxError(
|
|
618
|
+
paramName,
|
|
619
|
+
`Unknown Component parameter name type of "${paramName.type}"`,
|
|
620
|
+
);
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
const properties = nodeUnprocessed.params.map(param => {
|
|
625
|
+
switch (param.type) {
|
|
626
|
+
case 'RestElement': {
|
|
627
|
+
delete param.typeAnnotation;
|
|
628
|
+
return param;
|
|
629
|
+
}
|
|
630
|
+
case 'ComponentParameter': {
|
|
631
|
+
if (getParamName(param.name) === 'ref') {
|
|
632
|
+
throw createSyntaxError(
|
|
633
|
+
param,
|
|
634
|
+
'Component parameters named "ref" are currently not supported',
|
|
635
|
+
);
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
if (param.name.type === 'Identifier') {
|
|
639
|
+
delete param.name.typeAnnotation;
|
|
640
|
+
}
|
|
641
|
+
if (param.local.type === 'AssignmentPattern') {
|
|
642
|
+
delete param.local.left.typeAnnotation;
|
|
643
|
+
delete param.local.left.optional;
|
|
644
|
+
} else {
|
|
645
|
+
delete param.local.typeAnnotation;
|
|
646
|
+
delete param.local.optional;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
return {
|
|
650
|
+
type: 'ObjectProperty',
|
|
651
|
+
key: param.name,
|
|
652
|
+
value: param.local,
|
|
653
|
+
method: false,
|
|
654
|
+
shorthand: param.shorthand,
|
|
655
|
+
computed: false,
|
|
656
|
+
loc: param.loc,
|
|
657
|
+
start: param.start,
|
|
658
|
+
end: param.end,
|
|
659
|
+
};
|
|
660
|
+
}
|
|
661
|
+
default: {
|
|
662
|
+
throw createSyntaxError(
|
|
663
|
+
param,
|
|
664
|
+
`Unknown Component parameter type of "${param.type}"`,
|
|
665
|
+
);
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
});
|
|
669
|
+
|
|
670
|
+
const paramsLoc = (() => {
|
|
671
|
+
if (properties.length === 0) {
|
|
672
|
+
// No props, approximate range via existing nodes.
|
|
673
|
+
const startLoc =
|
|
674
|
+
nodeUnprocessed.typeParameters != null
|
|
675
|
+
? nodeUnprocessed.typeParameters.loc
|
|
676
|
+
: nodeUnprocessed.id.loc;
|
|
677
|
+
return {
|
|
678
|
+
start: startLoc.end,
|
|
679
|
+
end: rendersType.loc.start,
|
|
680
|
+
startRange: startLoc.endRange,
|
|
681
|
+
endRange: rendersType.loc.startRange,
|
|
682
|
+
};
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
return {
|
|
686
|
+
start: properties[0].loc.start,
|
|
687
|
+
end: properties[properties.length - 1].loc.end,
|
|
688
|
+
startRange: properties[0].loc.startRange,
|
|
689
|
+
endRange: properties[properties.length - 1].loc.endRange,
|
|
690
|
+
};
|
|
691
|
+
})();
|
|
692
|
+
|
|
693
|
+
// Create empty loc for type annotation nodes
|
|
694
|
+
const createParamsTypeLoc = () => ({
|
|
695
|
+
loc: {
|
|
696
|
+
start: {...paramsLoc.end},
|
|
697
|
+
end: {...paramsLoc.end},
|
|
698
|
+
startRange: paramsLoc.endRange,
|
|
699
|
+
endRange: paramsLoc.endRange,
|
|
700
|
+
},
|
|
701
|
+
});
|
|
702
|
+
|
|
703
|
+
const params = [
|
|
704
|
+
{
|
|
705
|
+
type: 'ObjectPattern',
|
|
706
|
+
properties,
|
|
707
|
+
typeAnnotation: {
|
|
708
|
+
type: 'TypeAnnotation',
|
|
709
|
+
typeAnnotation: {
|
|
710
|
+
type: 'GenericTypeAnnotation',
|
|
711
|
+
id: {
|
|
712
|
+
type: 'Identifier',
|
|
713
|
+
name: '$ReadOnly',
|
|
714
|
+
...createParamsTypeLoc(),
|
|
715
|
+
},
|
|
716
|
+
typeParameters: {
|
|
717
|
+
type: 'TypeParameterInstantiation',
|
|
718
|
+
params: [
|
|
719
|
+
{
|
|
720
|
+
type: 'ObjectTypeAnnotation',
|
|
721
|
+
callProperties: [],
|
|
722
|
+
properties: [],
|
|
723
|
+
indexers: [],
|
|
724
|
+
internalSlots: [],
|
|
725
|
+
exact: false,
|
|
726
|
+
inexact: true,
|
|
727
|
+
...createParamsTypeLoc(),
|
|
728
|
+
},
|
|
729
|
+
],
|
|
730
|
+
...createParamsTypeLoc(),
|
|
731
|
+
},
|
|
732
|
+
...createParamsTypeLoc(),
|
|
733
|
+
},
|
|
734
|
+
...createParamsTypeLoc(),
|
|
735
|
+
},
|
|
736
|
+
loc: paramsLoc,
|
|
737
|
+
},
|
|
738
|
+
];
|
|
739
|
+
|
|
740
|
+
const functionComponent = {
|
|
741
|
+
type: 'FunctionDeclaration',
|
|
742
|
+
id: nodeUnprocessed.id,
|
|
743
|
+
typeParameters: nodeUnprocessed.typeParameters,
|
|
744
|
+
params,
|
|
745
|
+
returnType: rendersType,
|
|
746
|
+
body: nodeUnprocessed.body,
|
|
747
|
+
async: false,
|
|
748
|
+
generator: false,
|
|
749
|
+
predicate: null,
|
|
750
|
+
loc: nodeUnprocessed.loc,
|
|
751
|
+
};
|
|
752
|
+
|
|
753
|
+
return this.mapNodeDefault(functionComponent);
|
|
754
|
+
}
|
|
546
755
|
}
|
|
@@ -44,16 +44,16 @@ module.exports = {
|
|
|
44
44
|
ClassDeclaration: ['id', 'typeParameters', 'superClass', 'superTypeParameters', 'implements', 'decorators', 'body'],
|
|
45
45
|
ClassExpression: ['id', 'typeParameters', 'superClass', 'superTypeParameters', 'implements', 'decorators', 'body'],
|
|
46
46
|
ClassImplements: ['id', 'typeParameters'],
|
|
47
|
-
ComponentDeclaration: ['id', 'params', 'body', 'typeParameters', '
|
|
47
|
+
ComponentDeclaration: ['id', 'params', 'body', 'typeParameters', 'rendersType'],
|
|
48
48
|
ComponentParameter: ['name', 'local'],
|
|
49
|
-
ComponentTypeAnnotation: ['params', 'rest', 'typeParameters', '
|
|
49
|
+
ComponentTypeAnnotation: ['params', 'rest', 'typeParameters', 'rendersType'],
|
|
50
50
|
ComponentTypeParameter: ['name', 'typeAnnotation'],
|
|
51
51
|
ConditionalExpression: ['test', 'consequent', 'alternate'],
|
|
52
52
|
ConditionalTypeAnnotation: ['checkType', 'extendsType', 'trueType', 'falseType'],
|
|
53
53
|
ContinueStatement: ['label'],
|
|
54
54
|
DebuggerStatement: [],
|
|
55
55
|
DeclareClass: ['id', 'typeParameters', 'extends', 'implements', 'mixins', 'body'],
|
|
56
|
-
DeclareComponent: ['id', 'params', 'rest', 'typeParameters', '
|
|
56
|
+
DeclareComponent: ['id', 'params', 'rest', 'typeParameters', 'rendersType'],
|
|
57
57
|
DeclaredPredicate: ['value'],
|
|
58
58
|
DeclareEnum: ['id', 'body'],
|
|
59
59
|
DeclareExportAllDeclaration: ['source'],
|
|
@@ -118,7 +118,7 @@ const HERMES_AST_VISITOR_KEYS = {
|
|
|
118
118
|
params: 'NodeList',
|
|
119
119
|
body: 'Node',
|
|
120
120
|
typeParameters: 'Node',
|
|
121
|
-
|
|
121
|
+
rendersType: 'Node'
|
|
122
122
|
},
|
|
123
123
|
ComponentParameter: {
|
|
124
124
|
name: 'Node',
|
|
@@ -128,7 +128,7 @@ const HERMES_AST_VISITOR_KEYS = {
|
|
|
128
128
|
params: 'NodeList',
|
|
129
129
|
rest: 'Node',
|
|
130
130
|
typeParameters: 'Node',
|
|
131
|
-
|
|
131
|
+
rendersType: 'Node'
|
|
132
132
|
},
|
|
133
133
|
ComponentTypeParameter: {
|
|
134
134
|
name: 'Node',
|
|
@@ -162,7 +162,7 @@ const HERMES_AST_VISITOR_KEYS = {
|
|
|
162
162
|
params: 'NodeList',
|
|
163
163
|
rest: 'Node',
|
|
164
164
|
typeParameters: 'Node',
|
|
165
|
-
|
|
165
|
+
rendersType: 'Node'
|
|
166
166
|
},
|
|
167
167
|
DeclaredPredicate: {
|
|
168
168
|
value: 'Node'
|
package/dist/index.js
CHANGED
|
@@ -14,11 +14,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
14
14
|
});
|
|
15
15
|
var _exportNames = {
|
|
16
16
|
parse: true,
|
|
17
|
+
mutateESTreeASTForPrettier: true,
|
|
17
18
|
FlowVisitorKeys: true,
|
|
18
19
|
astArrayMutationHelpers: true,
|
|
19
20
|
astNodeMutationHelpers: true
|
|
20
21
|
};
|
|
21
|
-
exports.astNodeMutationHelpers = exports.astArrayMutationHelpers = void 0;
|
|
22
|
+
exports.mutateESTreeASTForPrettier = exports.astNodeMutationHelpers = exports.astArrayMutationHelpers = void 0;
|
|
22
23
|
exports.parse = parse;
|
|
23
24
|
|
|
24
25
|
var HermesParser = _interopRequireWildcard(require("./HermesParser"));
|
|
@@ -66,6 +67,10 @@ var _astNodeMutationHelpers = _interopRequireWildcard(require("./transform/astNo
|
|
|
66
67
|
|
|
67
68
|
exports.astNodeMutationHelpers = _astNodeMutationHelpers;
|
|
68
69
|
|
|
70
|
+
var _mutateESTreeASTForPrettier = _interopRequireDefault(require("./utils/mutateESTreeASTForPrettier"));
|
|
71
|
+
|
|
72
|
+
exports.mutateESTreeASTForPrettier = _mutateESTreeASTForPrettier.default;
|
|
73
|
+
|
|
69
74
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
70
75
|
|
|
71
76
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
package/dist/index.js.flow
CHANGED
|
@@ -90,3 +90,4 @@ export * from './traverse/getVisitorKeys';
|
|
|
90
90
|
export {FlowVisitorKeys};
|
|
91
91
|
export * as astArrayMutationHelpers from './transform/astArrayMutationHelpers';
|
|
92
92
|
export * as astNodeMutationHelpers from './transform/astNodeMutationHelpers';
|
|
93
|
+
export {default as mutateESTreeASTForPrettier} from './utils/mutateESTreeASTForPrettier';
|