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.
Files changed (65) hide show
  1. package/ESLINT_LICENCE +19 -0
  2. package/PRETTIER_LICENCE +7 -0
  3. package/dist/detachedNode.js +100 -42
  4. package/dist/detachedNode.js.flow +116 -41
  5. package/dist/generated/TransformCloneSignatures.js.flow +18 -0
  6. package/dist/generated/TransformModifySignatures.js.flow +1127 -0
  7. package/dist/generated/TransformReplaceSignatures.js.flow +15 -1
  8. package/dist/generated/node-types.js +852 -883
  9. package/dist/generated/node-types.js.flow +1187 -1217
  10. package/dist/generated/special-case-node-types/Comment.js +36 -0
  11. package/dist/generated/special-case-node-types/Comment.js.flow +36 -0
  12. package/dist/generated/special-case-node-types/DeclareExportDeclaration.js +55 -0
  13. package/dist/generated/special-case-node-types/DeclareExportDeclaration.js.flow +97 -0
  14. package/dist/generated/special-case-node-types/ExportNamedDeclaration.js +42 -0
  15. package/dist/generated/special-case-node-types/ExportNamedDeclaration.js.flow +75 -0
  16. package/dist/generated/special-case-node-types/Literal.js +97 -0
  17. package/dist/generated/special-case-node-types/Literal.js.flow +139 -0
  18. package/dist/generated/special-case-node-types/ObjectTypeProperty.js +73 -0
  19. package/dist/generated/special-case-node-types/ObjectTypeProperty.js.flow +107 -0
  20. package/dist/generated/special-case-node-types/Property.js +136 -0
  21. package/dist/generated/special-case-node-types/Property.js.flow +237 -0
  22. package/dist/generated/special-case-node-types/misc.js +119 -0
  23. package/dist/generated/special-case-node-types/misc.js.flow +205 -0
  24. package/dist/generated/special-case-node-types.js +42 -180
  25. package/dist/generated/special-case-node-types.js.flow +7 -258
  26. package/dist/index.js +19 -3
  27. package/dist/index.js.flow +6 -2
  28. package/dist/transform/TransformContext.js +34 -11
  29. package/dist/transform/TransformContext.js.flow +90 -33
  30. package/dist/transform/comments/comments.js +34 -5
  31. package/dist/transform/comments/comments.js.flow +39 -4
  32. package/dist/transform/comments/prettier/main/comments.js +1 -1
  33. package/dist/transform/comments/prettier/main/comments.js.flow +2 -1
  34. package/dist/transform/mutations/InsertStatement.js +4 -3
  35. package/dist/transform/mutations/InsertStatement.js.flow +4 -3
  36. package/dist/transform/mutations/RemoveComment.js +3 -3
  37. package/dist/transform/mutations/RemoveComment.js.flow +3 -5
  38. package/dist/transform/mutations/RemoveNode.js +2 -2
  39. package/dist/transform/mutations/RemoveNode.js.flow +2 -2
  40. package/dist/transform/mutations/RemoveStatement.js +2 -2
  41. package/dist/transform/mutations/RemoveStatement.js.flow +2 -2
  42. package/dist/transform/mutations/ReplaceNode.js +10 -7
  43. package/dist/transform/mutations/ReplaceNode.js.flow +7 -5
  44. package/dist/transform/mutations/ReplaceStatementWithMany.js +2 -2
  45. package/dist/transform/mutations/ReplaceStatementWithMany.js.flow +7 -4
  46. package/dist/transform/mutations/utils/getStatementParent.js +3 -2
  47. package/dist/transform/mutations/utils/getStatementParent.js.flow +5 -2
  48. package/dist/transform/parse.js +55 -0
  49. package/dist/transform/parse.js.flow +55 -0
  50. package/dist/transform/print.js +160 -0
  51. package/dist/transform/print.js.flow +176 -0
  52. package/dist/transform/transform.js +6 -67
  53. package/dist/transform/transform.js.flow +6 -69
  54. package/dist/transform/{getTransformedAST.js → transformAST.js} +7 -16
  55. package/dist/transform/{getTransformedAST.js.flow → transformAST.js.flow} +7 -14
  56. package/dist/traverse/NodeEventGenerator.js.flow +1 -1
  57. package/dist/traverse/traverse.js +36 -35
  58. package/dist/traverse/traverse.js.flow +46 -27
  59. package/package.json +10 -5
  60. package/dist/getVisitorKeys.js +0 -33
  61. package/dist/getVisitorKeys.js.flow +0 -31
  62. package/dist/transform/mutations/utils/arrayUtils.js +0 -43
  63. package/dist/transform/mutations/utils/arrayUtils.js.flow +0 -50
  64. package/dist/traverse/SimpleTraverser.js +0 -118
  65. 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
- }