hermes-transform 0.9.0 → 0.10.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.
Files changed (64) hide show
  1. package/dist/detachedNode.js +9 -27
  2. package/dist/detachedNode.js.flow +21 -34
  3. package/dist/generated/TransformCloneSignatures.js.flow +331 -316
  4. package/dist/generated/TransformModifySignatures.js.flow +171 -157
  5. package/dist/generated/TransformReplaceSignatures.js.flow +16 -2
  6. package/dist/generated/node-types.js +254 -60
  7. package/dist/generated/node-types.js.flow +258 -103
  8. package/dist/generated/special-case-node-types/Comment.js +36 -0
  9. package/dist/generated/special-case-node-types/Comment.js.flow +36 -0
  10. package/dist/generated/special-case-node-types/DeclareExportDeclaration.js +55 -0
  11. package/dist/generated/special-case-node-types/DeclareExportDeclaration.js.flow +97 -0
  12. package/dist/generated/special-case-node-types/ExportNamedDeclaration.js +42 -0
  13. package/dist/generated/special-case-node-types/ExportNamedDeclaration.js.flow +75 -0
  14. package/dist/generated/special-case-node-types/Literal.js +97 -0
  15. package/dist/generated/special-case-node-types/Literal.js.flow +139 -0
  16. package/dist/generated/special-case-node-types/ObjectTypeProperty.js +73 -0
  17. package/dist/generated/special-case-node-types/ObjectTypeProperty.js.flow +107 -0
  18. package/dist/generated/special-case-node-types/Property.js +136 -0
  19. package/dist/generated/special-case-node-types/Property.js.flow +237 -0
  20. package/dist/generated/special-case-node-types/misc.js +119 -0
  21. package/dist/generated/special-case-node-types/misc.js.flow +205 -0
  22. package/dist/generated/special-case-node-types.js +42 -174
  23. package/dist/generated/special-case-node-types.js.flow +7 -274
  24. package/dist/index.js +19 -3
  25. package/dist/index.js.flow +6 -2
  26. package/dist/transform/TransformContext.js +1 -1
  27. package/dist/transform/TransformContext.js.flow +2 -2
  28. package/dist/transform/comments/comments.js +11 -0
  29. package/dist/transform/comments/comments.js.flow +16 -1
  30. package/dist/transform/comments/prettier/main/comments.js +1 -1
  31. package/dist/transform/comments/prettier/main/comments.js.flow +2 -1
  32. package/dist/transform/mutations/InsertStatement.js +3 -3
  33. package/dist/transform/mutations/InsertStatement.js.flow +3 -3
  34. package/dist/transform/mutations/RemoveComment.js +3 -3
  35. package/dist/transform/mutations/RemoveComment.js.flow +3 -5
  36. package/dist/transform/mutations/RemoveNode.js +2 -2
  37. package/dist/transform/mutations/RemoveNode.js.flow +2 -2
  38. package/dist/transform/mutations/RemoveStatement.js +2 -2
  39. package/dist/transform/mutations/RemoveStatement.js.flow +2 -2
  40. package/dist/transform/mutations/ReplaceNode.js +4 -6
  41. package/dist/transform/mutations/ReplaceNode.js.flow +2 -3
  42. package/dist/transform/mutations/ReplaceStatementWithMany.js +2 -2
  43. package/dist/transform/mutations/ReplaceStatementWithMany.js.flow +2 -2
  44. package/dist/transform/mutations/utils/getStatementParent.js +3 -2
  45. package/dist/transform/mutations/utils/getStatementParent.js.flow +5 -2
  46. package/dist/transform/parse.js +55 -0
  47. package/dist/transform/parse.js.flow +55 -0
  48. package/dist/transform/print.js +160 -0
  49. package/dist/transform/print.js.flow +176 -0
  50. package/dist/transform/transform.js +6 -67
  51. package/dist/transform/transform.js.flow +6 -69
  52. package/dist/transform/{getTransformedAST.js → transformAST.js} +7 -31
  53. package/dist/transform/{getTransformedAST.js.flow → transformAST.js.flow} +8 -33
  54. package/dist/traverse/NodeEventGenerator.js +3 -3
  55. package/dist/traverse/NodeEventGenerator.js.flow +3 -3
  56. package/dist/traverse/traverse.js +36 -35
  57. package/dist/traverse/traverse.js.flow +45 -26
  58. package/package.json +5 -4
  59. package/dist/getVisitorKeys.js +0 -33
  60. package/dist/getVisitorKeys.js.flow +0 -31
  61. package/dist/transform/mutations/utils/arrayUtils.js +0 -43
  62. package/dist/transform/mutations/utils/arrayUtils.js.flow +0 -50
  63. package/dist/traverse/SimpleTraverser.js +0 -118
  64. package/dist/traverse/SimpleTraverser.js.flow +0 -112
@@ -12,9 +12,7 @@ exports.setParentPointersInDirectChildren = setParentPointersInDirectChildren;
12
12
  exports.shallowCloneNode = shallowCloneNode;
13
13
  exports.updateAllParentPointers = updateAllParentPointers;
14
14
 
15
- var _getVisitorKeys = require("./getVisitorKeys");
16
-
17
- var _SimpleTraverser = require("./traverse/SimpleTraverser");
15
+ var _hermesParser = require("hermes-parser");
18
16
 
19
17
  /**
20
18
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -57,8 +55,7 @@ const asDetachedNode = (node, {
57
55
 
58
56
  exports.asDetachedNode = asDetachedNode;
59
57
 
60
- function detachedProps(parent, props, config = { ...null
61
- }) {
58
+ function detachedProps(parent, props, config = {}) {
62
59
  // $FlowExpectedError[incompatible-type]
63
60
  const detachedNode = { ...props,
64
61
  ...((config == null ? void 0 : config.preserveLocation) !== true ? {
@@ -118,11 +115,13 @@ function detachedProps(parent, props, config = { ...null
118
115
  */
119
116
 
120
117
 
121
- function shallowCloneNode(node, newProps, config = { ...null
122
- }) {
118
+ function shallowCloneNode(node, newProps, config = {}) {
123
119
  var _config$preserveLocat, _config$originalNode;
124
120
 
125
- return detachedProps(null, Object.assign({}, node, newProps), {
121
+ return detachedProps(null, // $FlowFixMe[cannot-spread-interface]
122
+ { ...node,
123
+ ...newProps
124
+ }, {
126
125
  preserveLocation: (_config$preserveLocat = config.preserveLocation) != null ? _config$preserveLocat : true,
127
126
  originalNode: (_config$originalNode = config.originalNode) != null ? _config$originalNode : node
128
127
  });
@@ -151,16 +150,7 @@ function deepCloneNode(node, newProps) {
151
150
 
152
151
 
153
152
  function setParentPointersInDirectChildren(node) {
154
- for (const key of (0, _getVisitorKeys.getVisitorKeys)(node)) {
155
- if ((0, _getVisitorKeys.isNode)( // $FlowExpectedError[prop-missing]
156
- node[key])) {
157
- node[key].parent = node;
158
- } else if (Array.isArray(node[key])) {
159
- for (const child of node[key]) {
160
- child.parent = node;
161
- }
162
- }
163
- }
153
+ _hermesParser.astNodeMutationHelpers.setParentPointersInDirectChildren(node);
164
154
  }
165
155
  /**
166
156
  * Traverses the entire subtree to ensure the parent pointers are set correctly
@@ -168,13 +158,5 @@ function setParentPointersInDirectChildren(node) {
168
158
 
169
159
 
170
160
  function updateAllParentPointers(node) {
171
- _SimpleTraverser.SimpleTraverser.traverse(node, {
172
- enter(node, parent) {
173
- // $FlowExpectedError[cannot-write]
174
- node.parent = parent;
175
- },
176
-
177
- leave() {}
178
-
179
- });
161
+ _hermesParser.astNodeMutationHelpers.updateAllParentPointers(node);
180
162
  }
@@ -10,8 +10,7 @@
10
10
 
11
11
  import type {BaseNode, ESNode} from 'hermes-estree';
12
12
 
13
- import {getVisitorKeys, isNode} from './getVisitorKeys';
14
- import {SimpleTraverser} from './traverse/SimpleTraverser';
13
+ import {astNodeMutationHelpers} from 'hermes-parser';
15
14
 
16
15
  export opaque type DetachedNode<+T> = T;
17
16
  export type MaybeDetachedNode<+T> = T | DetachedNode<T>;
@@ -38,7 +37,7 @@ export const asDetachedNode: {
38
37
  node: MaybeDetachedNode<T>,
39
38
  config?: {useDeepClone: boolean},
40
39
  ): DetachedNode<T>,
41
- <T: ESNode>(
40
+ <T: ?ESNode>(
42
41
  node: ?MaybeDetachedNode<T>,
43
42
  config?: {useDeepClone: boolean},
44
43
  ): ?DetachedNode<T>,
@@ -63,8 +62,8 @@ export const asDetachedNode: {
63
62
  // used by the node type function codegen
64
63
  export function detachedProps<T: BaseNode>(
65
64
  parent: ?ESNode,
66
- props: $ReadOnly<$Partial<{...}>>,
67
- config: DetachConfig = {...null},
65
+ props: $ReadOnly<Partial<{...}>>,
66
+ config: DetachConfig = {},
68
67
  ): DetachedNode<T> {
69
68
  // $FlowExpectedError[incompatible-type]
70
69
  const detachedNode: DetachedNode<T> = {
@@ -130,13 +129,18 @@ export function detachedProps<T: BaseNode>(
130
129
  */
131
130
  export function shallowCloneNode<T: ESNode>(
132
131
  node: T,
133
- newProps: $ReadOnly<$Partial<{...}>>,
134
- config?: DetachConfig = {...null},
132
+ newProps: $ReadOnly<Partial<{...}>>,
133
+ config?: DetachConfig = {},
135
134
  ): DetachedNode<T> {
136
- return detachedProps(null, (Object.assign({}, node, newProps): $FlowFixMe), {
137
- preserveLocation: config.preserveLocation ?? true,
138
- originalNode: config.originalNode ?? node,
139
- });
135
+ return detachedProps(
136
+ null,
137
+ // $FlowFixMe[cannot-spread-interface]
138
+ {...node, ...newProps},
139
+ {
140
+ preserveLocation: config.preserveLocation ?? true,
141
+ originalNode: config.originalNode ?? node,
142
+ },
143
+ );
140
144
  }
141
145
 
142
146
  /**
@@ -144,7 +148,7 @@ export function shallowCloneNode<T: ESNode>(
144
148
  */
145
149
  export function deepCloneNode<T: ESNode>(
146
150
  node: T,
147
- newProps: $ReadOnly<$Partial<{...}>>,
151
+ newProps: $ReadOnly<Partial<{...}>>,
148
152
  ): DetachedNode<T> {
149
153
  const clone: DetachedNode<T> = Object.assign(
150
154
  JSON.parse(
@@ -171,31 +175,14 @@ export function deepCloneNode<T: ESNode>(
171
175
  export function setParentPointersInDirectChildren(
172
176
  node: DetachedNode<ESNode>,
173
177
  ): void {
174
- for (const key of getVisitorKeys(node)) {
175
- if (
176
- isNode(
177
- // $FlowExpectedError[prop-missing]
178
- node[key],
179
- )
180
- ) {
181
- node[key].parent = node;
182
- } else if (Array.isArray(node[key])) {
183
- for (const child of node[key]) {
184
- child.parent = node;
185
- }
186
- }
187
- }
178
+ astNodeMutationHelpers.setParentPointersInDirectChildren(node);
188
179
  }
189
180
 
190
181
  /**
191
182
  * Traverses the entire subtree to ensure the parent pointers are set correctly
192
183
  */
193
- export function updateAllParentPointers(node: ESNode | DetachedNode<ESNode>) {
194
- SimpleTraverser.traverse(node, {
195
- enter(node, parent) {
196
- // $FlowExpectedError[cannot-write]
197
- node.parent = parent;
198
- },
199
- leave() {},
200
- });
184
+ export function updateAllParentPointers(
185
+ node: ESNode | DetachedNode<ESNode>,
186
+ ): void {
187
+ astNodeMutationHelpers.updateAllParentPointers(node);
201
188
  }