hermes-transform 0.8.0 → 0.10.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/ESLINT_LICENCE +19 -0
- package/PRETTIER_LICENCE +7 -0
- package/dist/detachedNode.js +100 -42
- package/dist/detachedNode.js.flow +116 -41
- package/dist/generated/TransformCloneSignatures.js.flow +18 -0
- package/dist/generated/TransformModifySignatures.js.flow +1127 -0
- package/dist/generated/TransformReplaceSignatures.js.flow +15 -1
- package/dist/generated/node-types.js +852 -883
- package/dist/generated/node-types.js.flow +1187 -1217
- package/dist/generated/special-case-node-types/Comment.js +36 -0
- package/dist/generated/special-case-node-types/Comment.js.flow +36 -0
- package/dist/generated/special-case-node-types/DeclareExportDeclaration.js +55 -0
- package/dist/generated/special-case-node-types/DeclareExportDeclaration.js.flow +97 -0
- package/dist/generated/special-case-node-types/ExportNamedDeclaration.js +42 -0
- package/dist/generated/special-case-node-types/ExportNamedDeclaration.js.flow +75 -0
- package/dist/generated/special-case-node-types/Literal.js +97 -0
- package/dist/generated/special-case-node-types/Literal.js.flow +139 -0
- package/dist/generated/special-case-node-types/ObjectTypeProperty.js +73 -0
- package/dist/generated/special-case-node-types/ObjectTypeProperty.js.flow +107 -0
- package/dist/generated/special-case-node-types/Property.js +136 -0
- package/dist/generated/special-case-node-types/Property.js.flow +237 -0
- package/dist/generated/special-case-node-types/misc.js +119 -0
- package/dist/generated/special-case-node-types/misc.js.flow +205 -0
- package/dist/generated/special-case-node-types.js +42 -180
- package/dist/generated/special-case-node-types.js.flow +7 -258
- package/dist/index.js +19 -3
- package/dist/index.js.flow +6 -2
- package/dist/transform/TransformContext.js +34 -11
- package/dist/transform/TransformContext.js.flow +90 -33
- package/dist/transform/comments/comments.js +34 -5
- package/dist/transform/comments/comments.js.flow +39 -4
- package/dist/transform/comments/prettier/main/comments.js +1 -1
- package/dist/transform/comments/prettier/main/comments.js.flow +2 -1
- package/dist/transform/mutations/InsertStatement.js +4 -3
- package/dist/transform/mutations/InsertStatement.js.flow +4 -3
- package/dist/transform/mutations/RemoveComment.js +3 -3
- package/dist/transform/mutations/RemoveComment.js.flow +3 -5
- package/dist/transform/mutations/RemoveNode.js +2 -2
- package/dist/transform/mutations/RemoveNode.js.flow +2 -2
- package/dist/transform/mutations/RemoveStatement.js +2 -2
- package/dist/transform/mutations/RemoveStatement.js.flow +2 -2
- package/dist/transform/mutations/ReplaceNode.js +10 -7
- package/dist/transform/mutations/ReplaceNode.js.flow +7 -5
- package/dist/transform/mutations/ReplaceStatementWithMany.js +2 -2
- package/dist/transform/mutations/ReplaceStatementWithMany.js.flow +7 -4
- package/dist/transform/mutations/utils/getStatementParent.js +3 -2
- package/dist/transform/mutations/utils/getStatementParent.js.flow +5 -2
- package/dist/transform/parse.js +55 -0
- package/dist/transform/parse.js.flow +55 -0
- package/dist/transform/print.js +160 -0
- package/dist/transform/print.js.flow +176 -0
- package/dist/transform/transform.js +6 -67
- package/dist/transform/transform.js.flow +6 -69
- package/dist/transform/{getTransformedAST.js → transformAST.js} +7 -16
- package/dist/transform/{getTransformedAST.js.flow → transformAST.js.flow} +7 -14
- package/dist/traverse/NodeEventGenerator.js.flow +1 -1
- package/dist/traverse/traverse.js +36 -35
- package/dist/traverse/traverse.js.flow +46 -27
- package/package.json +10 -5
- package/dist/getVisitorKeys.js +0 -33
- package/dist/getVisitorKeys.js.flow +0 -31
- package/dist/transform/mutations/utils/arrayUtils.js +0 -43
- package/dist/transform/mutations/utils/arrayUtils.js.flow +0 -50
- package/dist/traverse/SimpleTraverser.js +0 -118
- package/dist/traverse/SimpleTraverser.js.flow +0 -112
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
* @flow strict-local
|
|
8
|
-
* @format
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
function assertArrayBounds<T>(array: $ReadOnlyArray<T>, index: number): void {
|
|
12
|
-
if (index < 0 || index >= array.length) {
|
|
13
|
-
throw new Error(
|
|
14
|
-
`Invalid Mutation: Tried to mutate an elements array with an out of bounds index. Index: ${index}, Array Size: ${array.length}`,
|
|
15
|
-
);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function insertInArray<T>(
|
|
20
|
-
array: $ReadOnlyArray<T>,
|
|
21
|
-
index: number,
|
|
22
|
-
elements: $ReadOnlyArray<T>,
|
|
23
|
-
): Array<T> {
|
|
24
|
-
if (index === array.length) {
|
|
25
|
-
// Support the insert at end of array case.
|
|
26
|
-
return array.concat(elements);
|
|
27
|
-
}
|
|
28
|
-
assertArrayBounds(array, index);
|
|
29
|
-
return array.slice(0, index).concat(elements).concat(array.slice(index));
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export function removeFromArray<T>(
|
|
33
|
-
array: $ReadOnlyArray<T>,
|
|
34
|
-
index: number,
|
|
35
|
-
): Array<T> {
|
|
36
|
-
assertArrayBounds(array, index);
|
|
37
|
-
return [...array.slice(0, index), ...array.slice(index + 1)];
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function replaceInArray<T>(
|
|
41
|
-
array: $ReadOnlyArray<T>,
|
|
42
|
-
index: number,
|
|
43
|
-
elements: $ReadOnlyArray<T>,
|
|
44
|
-
): Array<T> {
|
|
45
|
-
assertArrayBounds(array, index);
|
|
46
|
-
return array
|
|
47
|
-
.slice(0, index)
|
|
48
|
-
.concat(elements)
|
|
49
|
-
.concat(array.slice(index + 1));
|
|
50
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* @format
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
Object.defineProperty(exports, "__esModule", {
|
|
13
|
-
value: true
|
|
14
|
-
});
|
|
15
|
-
exports.SimpleTraverserSkip = exports.SimpleTraverserBreak = exports.SimpleTraverser = void 0;
|
|
16
|
-
|
|
17
|
-
var _getVisitorKeys = require("../getVisitorKeys");
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Can be thrown within the traversal "enter" function to prevent the traverser
|
|
21
|
-
* from traversing the node any further, essentially culling the remainder of the
|
|
22
|
-
* AST branch
|
|
23
|
-
*/
|
|
24
|
-
const SimpleTraverserSkip = new Error();
|
|
25
|
-
/**
|
|
26
|
-
* Can be thrown at any point during the traversal to immediately stop traversal
|
|
27
|
-
* entirely.
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
exports.SimpleTraverserSkip = SimpleTraverserSkip;
|
|
31
|
-
const SimpleTraverserBreak = new Error();
|
|
32
|
-
/**
|
|
33
|
-
* A very simple traverser class to traverse AST trees.
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
exports.SimpleTraverserBreak = SimpleTraverserBreak;
|
|
37
|
-
|
|
38
|
-
class SimpleTraverser {
|
|
39
|
-
/**
|
|
40
|
-
* Traverse the given AST tree.
|
|
41
|
-
* @param node The root node to traverse.
|
|
42
|
-
* @param options The option object.
|
|
43
|
-
*/
|
|
44
|
-
traverse(node, options) {
|
|
45
|
-
try {
|
|
46
|
-
this._traverse(node, null, options);
|
|
47
|
-
} catch (ex) {
|
|
48
|
-
if (ex === SimpleTraverserBreak) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
throw ex;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Traverse the given AST tree recursively.
|
|
57
|
-
* @param node The current node.
|
|
58
|
-
* @param parent The parent node.
|
|
59
|
-
* @private
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
_traverse(node, parent, options) {
|
|
64
|
-
if (!(0, _getVisitorKeys.isNode)(node)) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
try {
|
|
69
|
-
options.enter(node, parent);
|
|
70
|
-
} catch (ex) {
|
|
71
|
-
if (ex === SimpleTraverserSkip) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
throw ex;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const keys = (0, _getVisitorKeys.getVisitorKeys)(node);
|
|
79
|
-
|
|
80
|
-
for (const key of keys) {
|
|
81
|
-
// $FlowExpectedError[prop-missing]
|
|
82
|
-
const child = node[key];
|
|
83
|
-
|
|
84
|
-
if (Array.isArray(child)) {
|
|
85
|
-
for (let j = 0; j < child.length; ++j) {
|
|
86
|
-
this._traverse(child[j], node, options);
|
|
87
|
-
}
|
|
88
|
-
} else {
|
|
89
|
-
this._traverse(child, node, options);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
try {
|
|
94
|
-
options.leave(node, parent);
|
|
95
|
-
} catch (ex) {
|
|
96
|
-
if (ex === SimpleTraverserSkip) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
throw ex;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Traverse the given AST tree.
|
|
105
|
-
* @param node The root node to traverse.
|
|
106
|
-
* @param options The option object.
|
|
107
|
-
*/
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
static traverse(node, options) {
|
|
111
|
-
new SimpleTraverser().traverse(node, options);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
exports.SimpleTraverser = SimpleTraverser;
|
|
117
|
-
SimpleTraverser.Break = SimpleTraverserBreak;
|
|
118
|
-
SimpleTraverser.Skip = SimpleTraverserSkip;
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
* @flow strict-local
|
|
8
|
-
* @format
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
import type {ESNode} from 'hermes-estree';
|
|
14
|
-
|
|
15
|
-
import {getVisitorKeys, isNode} from '../getVisitorKeys';
|
|
16
|
-
|
|
17
|
-
export type TraverserCallback = (node: ESNode, parent: ?ESNode) => void;
|
|
18
|
-
export type TraverserOptions = $ReadOnly<{
|
|
19
|
-
/** The callback function which is called on entering each node. */
|
|
20
|
-
enter: TraverserCallback,
|
|
21
|
-
/** The callback function which is called on leaving each node. */
|
|
22
|
-
leave: TraverserCallback,
|
|
23
|
-
}>;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Can be thrown within the traversal "enter" function to prevent the traverser
|
|
27
|
-
* from traversing the node any further, essentially culling the remainder of the
|
|
28
|
-
* AST branch
|
|
29
|
-
*/
|
|
30
|
-
export const SimpleTraverserSkip: Error = new Error();
|
|
31
|
-
/**
|
|
32
|
-
* Can be thrown at any point during the traversal to immediately stop traversal
|
|
33
|
-
* entirely.
|
|
34
|
-
*/
|
|
35
|
-
export const SimpleTraverserBreak: Error = new Error();
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* A very simple traverser class to traverse AST trees.
|
|
39
|
-
*/
|
|
40
|
-
export class SimpleTraverser {
|
|
41
|
-
static Break: Error = SimpleTraverserBreak;
|
|
42
|
-
static Skip: Error = SimpleTraverserSkip;
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Traverse the given AST tree.
|
|
46
|
-
* @param node The root node to traverse.
|
|
47
|
-
* @param options The option object.
|
|
48
|
-
*/
|
|
49
|
-
traverse(node: ESNode, options: TraverserOptions): void {
|
|
50
|
-
try {
|
|
51
|
-
this._traverse(node, null, options);
|
|
52
|
-
} catch (ex) {
|
|
53
|
-
if (ex === SimpleTraverserBreak) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
throw ex;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Traverse the given AST tree recursively.
|
|
62
|
-
* @param node The current node.
|
|
63
|
-
* @param parent The parent node.
|
|
64
|
-
* @private
|
|
65
|
-
*/
|
|
66
|
-
_traverse(node: ESNode, parent: ?ESNode, options: TraverserOptions): void {
|
|
67
|
-
if (!isNode(node)) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
try {
|
|
72
|
-
options.enter(node, parent);
|
|
73
|
-
} catch (ex) {
|
|
74
|
-
if (ex === SimpleTraverserSkip) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
throw ex;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const keys = getVisitorKeys(node);
|
|
81
|
-
for (const key of keys) {
|
|
82
|
-
// $FlowExpectedError[prop-missing]
|
|
83
|
-
const child = node[key];
|
|
84
|
-
|
|
85
|
-
if (Array.isArray(child)) {
|
|
86
|
-
for (let j = 0; j < child.length; ++j) {
|
|
87
|
-
this._traverse(child[j], node, options);
|
|
88
|
-
}
|
|
89
|
-
} else {
|
|
90
|
-
this._traverse(child, node, options);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
try {
|
|
95
|
-
options.leave(node, parent);
|
|
96
|
-
} catch (ex) {
|
|
97
|
-
if (ex === SimpleTraverserSkip) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
throw ex;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Traverse the given AST tree.
|
|
106
|
-
* @param node The root node to traverse.
|
|
107
|
-
* @param options The option object.
|
|
108
|
-
*/
|
|
109
|
-
static traverse(node: ESNode, options: TraverserOptions) {
|
|
110
|
-
new SimpleTraverser().traverse(node, options);
|
|
111
|
-
}
|
|
112
|
-
}
|