@openrewrite/rewrite 8.72.2 → 8.72.4

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 (197) hide show
  1. package/dist/execution.js +3 -16
  2. package/dist/execution.js.map +1 -1
  3. package/dist/index.js +34 -49
  4. package/dist/index.js.map +1 -1
  5. package/dist/java/markers.js +12 -29
  6. package/dist/java/markers.js.map +1 -1
  7. package/dist/java/print.js +2 -13
  8. package/dist/java/print.js.map +1 -1
  9. package/dist/java/rpc.js +1344 -1725
  10. package/dist/java/rpc.js.map +1 -1
  11. package/dist/java/type-visitor.js +143 -184
  12. package/dist/java/type-visitor.js.map +1 -1
  13. package/dist/java/visitor.js +1072 -1249
  14. package/dist/java/visitor.js.map +1 -1
  15. package/dist/javascript/add-import.js +495 -534
  16. package/dist/javascript/add-import.js.map +1 -1
  17. package/dist/javascript/autodetect.js +116 -159
  18. package/dist/javascript/autodetect.js.map +1 -1
  19. package/dist/javascript/cleanup/add-parse-int-radix.js +41 -57
  20. package/dist/javascript/cleanup/add-parse-int-radix.js.map +1 -1
  21. package/dist/javascript/cleanup/prefer-optional-chain.js +89 -105
  22. package/dist/javascript/cleanup/prefer-optional-chain.js.map +1 -1
  23. package/dist/javascript/cleanup/use-object-property-shorthand.js +74 -95
  24. package/dist/javascript/cleanup/use-object-property-shorthand.js.map +1 -1
  25. package/dist/javascript/comparator.js +815 -1167
  26. package/dist/javascript/comparator.js.map +1 -1
  27. package/dist/javascript/dependency-workspace.js +206 -219
  28. package/dist/javascript/dependency-workspace.js.map +1 -1
  29. package/dist/javascript/format/format.js +682 -908
  30. package/dist/javascript/format/format.js.map +1 -1
  31. package/dist/javascript/format/minimum-viable-spacing-visitor.js +152 -231
  32. package/dist/javascript/format/minimum-viable-spacing-visitor.js.map +1 -1
  33. package/dist/javascript/format/normalize-whitespace-visitor.js +12 -31
  34. package/dist/javascript/format/normalize-whitespace-visitor.js.map +1 -1
  35. package/dist/javascript/format/prettier-config-loader.js +134 -153
  36. package/dist/javascript/format/prettier-config-loader.js.map +1 -1
  37. package/dist/javascript/format/prettier-format.js +112 -129
  38. package/dist/javascript/format/prettier-format.js.map +1 -1
  39. package/dist/javascript/format/tabs-and-indents-visitor.js +112 -136
  40. package/dist/javascript/format/tabs-and-indents-visitor.js.map +1 -1
  41. package/dist/javascript/markers.js +59 -92
  42. package/dist/javascript/markers.js.map +1 -1
  43. package/dist/javascript/migrate/es6/modernize-octal-escape-sequences.js +39 -52
  44. package/dist/javascript/migrate/es6/modernize-octal-escape-sequences.js.map +1 -1
  45. package/dist/javascript/migrate/es6/modernize-octal-literals.js +25 -38
  46. package/dist/javascript/migrate/es6/modernize-octal-literals.js.map +1 -1
  47. package/dist/javascript/migrate/es6/remove-duplicate-object-keys.js +66 -82
  48. package/dist/javascript/migrate/es6/remove-duplicate-object-keys.js.map +1 -1
  49. package/dist/javascript/migrate/typescript/export-assignment-to-export-default.js +10 -23
  50. package/dist/javascript/migrate/typescript/export-assignment-to-export-default.js.map +1 -1
  51. package/dist/javascript/node-resolution-result.js +137 -166
  52. package/dist/javascript/node-resolution-result.js.map +1 -1
  53. package/dist/javascript/package-json-parser.js +312 -343
  54. package/dist/javascript/package-json-parser.js.map +1 -1
  55. package/dist/javascript/package-manager.js +145 -170
  56. package/dist/javascript/package-manager.js.map +1 -1
  57. package/dist/javascript/parser.d.ts.map +1 -1
  58. package/dist/javascript/parser.js +94 -68
  59. package/dist/javascript/parser.js.map +1 -1
  60. package/dist/javascript/print.js +1572 -1835
  61. package/dist/javascript/print.js.map +1 -1
  62. package/dist/javascript/project-parser.js +151 -172
  63. package/dist/javascript/project-parser.js.map +1 -1
  64. package/dist/javascript/recipes/add-dependency.js +140 -175
  65. package/dist/javascript/recipes/add-dependency.js.map +1 -1
  66. package/dist/javascript/recipes/async-callback-in-sync-array-method.js +20 -36
  67. package/dist/javascript/recipes/async-callback-in-sync-array-method.js.map +1 -1
  68. package/dist/javascript/recipes/auto-format.js +3 -14
  69. package/dist/javascript/recipes/auto-format.js.map +1 -1
  70. package/dist/javascript/recipes/change-import.js +447 -495
  71. package/dist/javascript/recipes/change-import.js.map +1 -1
  72. package/dist/javascript/recipes/order-imports.js +162 -175
  73. package/dist/javascript/recipes/order-imports.js.map +1 -1
  74. package/dist/javascript/recipes/upgrade-dependency-version.js +167 -197
  75. package/dist/javascript/recipes/upgrade-dependency-version.js.map +1 -1
  76. package/dist/javascript/recipes/upgrade-transitive-dependency-version.js +166 -193
  77. package/dist/javascript/recipes/upgrade-transitive-dependency-version.js.map +1 -1
  78. package/dist/javascript/remove-import.js +689 -724
  79. package/dist/javascript/remove-import.js.map +1 -1
  80. package/dist/javascript/rpc.js +1007 -1332
  81. package/dist/javascript/rpc.js.map +1 -1
  82. package/dist/javascript/search/find-dependency.js +84 -110
  83. package/dist/javascript/search/find-dependency.js.map +1 -1
  84. package/dist/javascript/search/uses-method.js +5 -19
  85. package/dist/javascript/search/uses-method.js.map +1 -1
  86. package/dist/javascript/search/uses-type.js +9 -20
  87. package/dist/javascript/search/uses-type.js.map +1 -1
  88. package/dist/javascript/templating/comparator.js +737 -822
  89. package/dist/javascript/templating/comparator.js.map +1 -1
  90. package/dist/javascript/templating/engine.js +211 -245
  91. package/dist/javascript/templating/engine.js.map +1 -1
  92. package/dist/javascript/templating/pattern.js +169 -190
  93. package/dist/javascript/templating/pattern.js.map +1 -1
  94. package/dist/javascript/templating/placeholder-replacement.js +172 -210
  95. package/dist/javascript/templating/placeholder-replacement.js.map +1 -1
  96. package/dist/javascript/templating/rewrite.js +75 -97
  97. package/dist/javascript/templating/rewrite.js.map +1 -1
  98. package/dist/javascript/templating/template.js +69 -82
  99. package/dist/javascript/templating/template.js.map +1 -1
  100. package/dist/javascript/tree-debug.js +109 -137
  101. package/dist/javascript/tree-debug.js.map +1 -1
  102. package/dist/javascript/visitor.js +1090 -1254
  103. package/dist/javascript/visitor.js.map +1 -1
  104. package/dist/json/print.js +72 -103
  105. package/dist/json/print.js.map +1 -1
  106. package/dist/json/rpc.js +120 -181
  107. package/dist/json/rpc.js.map +1 -1
  108. package/dist/json/visitor.js +69 -100
  109. package/dist/json/visitor.js.map +1 -1
  110. package/dist/marketplace.js +20 -33
  111. package/dist/marketplace.js.map +1 -1
  112. package/dist/parse-error.js +41 -62
  113. package/dist/parse-error.js.map +1 -1
  114. package/dist/parser.js +7 -18
  115. package/dist/parser.js.map +1 -1
  116. package/dist/path-utils.js +46 -59
  117. package/dist/path-utils.js.map +1 -1
  118. package/dist/preconditions.js +30 -47
  119. package/dist/preconditions.js.map +1 -1
  120. package/dist/print.js +6 -19
  121. package/dist/print.js.map +1 -1
  122. package/dist/recipe.js +42 -73
  123. package/dist/recipe.js.map +1 -1
  124. package/dist/rpc/index.js +74 -115
  125. package/dist/rpc/index.js.map +1 -1
  126. package/dist/rpc/queue.js +71 -90
  127. package/dist/rpc/queue.js.map +1 -1
  128. package/dist/rpc/recipe.js +32 -57
  129. package/dist/rpc/recipe.js.map +1 -1
  130. package/dist/rpc/request/generate.js +4 -13
  131. package/dist/rpc/request/generate.js.map +1 -1
  132. package/dist/rpc/request/get-languages.js +2 -11
  133. package/dist/rpc/request/get-languages.js.map +1 -1
  134. package/dist/rpc/request/get-marketplace.js +9 -20
  135. package/dist/rpc/request/get-marketplace.js.map +1 -1
  136. package/dist/rpc/request/get-object.js +4 -13
  137. package/dist/rpc/request/get-object.js.map +1 -1
  138. package/dist/rpc/request/install-recipes.js +25 -36
  139. package/dist/rpc/request/install-recipes.js.map +1 -1
  140. package/dist/rpc/request/metrics.js +8 -17
  141. package/dist/rpc/request/metrics.js.map +1 -1
  142. package/dist/rpc/request/parse-project.js +36 -45
  143. package/dist/rpc/request/parse-project.js.map +1 -1
  144. package/dist/rpc/request/parse.js +5 -14
  145. package/dist/rpc/request/parse.js.map +1 -1
  146. package/dist/rpc/request/prepare-recipe.js +37 -52
  147. package/dist/rpc/request/prepare-recipe.js.map +1 -1
  148. package/dist/rpc/request/print.js +5 -14
  149. package/dist/rpc/request/print.js.map +1 -1
  150. package/dist/rpc/request/visit.js +56 -71
  151. package/dist/rpc/request/visit.js.map +1 -1
  152. package/dist/rpc/rewrite-rpc.js +70 -97
  153. package/dist/rpc/rewrite-rpc.js.map +1 -1
  154. package/dist/rpc/server.js +76 -89
  155. package/dist/rpc/server.js.map +1 -1
  156. package/dist/run.js +47 -66
  157. package/dist/run.js.map +1 -1
  158. package/dist/search/is-source-file.js +8 -19
  159. package/dist/search/is-source-file.js.map +1 -1
  160. package/dist/test/rewrite-test.js +154 -188
  161. package/dist/test/rewrite-test.js.map +1 -1
  162. package/dist/text/print.js +23 -38
  163. package/dist/text/print.js.map +1 -1
  164. package/dist/text/rpc.js +29 -44
  165. package/dist/text/rpc.js.map +1 -1
  166. package/dist/text/visitor.js +16 -33
  167. package/dist/text/visitor.js.map +1 -1
  168. package/dist/util.js +13 -24
  169. package/dist/util.js.map +1 -1
  170. package/dist/version.txt +1 -1
  171. package/dist/visitor.js +84 -115
  172. package/dist/visitor.js.map +1 -1
  173. package/dist/yaml/index.d.ts +2 -0
  174. package/dist/yaml/index.d.ts.map +1 -1
  175. package/dist/yaml/index.js +2 -0
  176. package/dist/yaml/index.js.map +1 -1
  177. package/dist/yaml/markers.d.ts +21 -0
  178. package/dist/yaml/markers.d.ts.map +1 -0
  179. package/dist/yaml/markers.js +37 -0
  180. package/dist/yaml/markers.js.map +1 -0
  181. package/dist/yaml/parser.d.ts.map +1 -1
  182. package/dist/yaml/parser.js +4 -1
  183. package/dist/yaml/parser.js.map +1 -1
  184. package/dist/yaml/print.d.ts +1 -1
  185. package/dist/yaml/print.d.ts.map +1 -1
  186. package/dist/yaml/print.js +175 -208
  187. package/dist/yaml/print.js.map +1 -1
  188. package/dist/yaml/rpc.js +154 -219
  189. package/dist/yaml/rpc.js.map +1 -1
  190. package/dist/yaml/visitor.js +78 -113
  191. package/dist/yaml/visitor.js.map +1 -1
  192. package/package.json +1 -1
  193. package/src/javascript/parser.ts +56 -14
  194. package/src/yaml/index.ts +2 -0
  195. package/src/yaml/markers.ts +70 -0
  196. package/src/yaml/parser.ts +5 -1
  197. package/src/yaml/print.ts +5 -2
@@ -14,15 +14,6 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
17
  Object.defineProperty(exports, "__esModule", { value: true });
27
18
  exports.AddParseIntRadix = void 0;
28
19
  const recipe_1 = require("../../recipe");
@@ -49,55 +40,48 @@ class AddParseIntRadix extends recipe_1.Recipe {
49
40
  this.displayName = "Add radix to `parseInt`";
50
41
  this.description = "Adds the radix parameter (base 10) to `parseInt()` calls that are missing it, preventing potential parsing issues.";
51
42
  }
52
- editor() {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- return new class extends visitor_1.JavaScriptVisitor {
55
- visitMethodInvocation(method, ctx) {
56
- const _super = Object.create(null, {
57
- visitMethodInvocation: { get: () => super.visitMethodInvocation }
58
- });
59
- return __awaiter(this, void 0, void 0, function* () {
60
- const visited = yield _super.visitMethodInvocation.call(this, method, ctx);
61
- // Check if this is a call to parseInt
62
- if (visited.select) {
63
- // This is a method call on an object (e.g., obj.parseInt())
64
- // parseInt is typically called as a global function, not a method
65
- return visited;
66
- }
67
- // Check the method name
68
- if (visited.name.simpleName !== 'parseInt') {
69
- return visited;
70
- }
71
- // Check if there's exactly one argument (no radix)
72
- const args = visited.arguments;
73
- if (!args || args.elements.length !== 1) {
74
- return visited;
75
- }
76
- // Add the radix parameter (10)
77
- const existingArg = args.elements[0];
78
- const radixLiteral = {
79
- kind: java_1.J.Kind.Literal,
80
- id: (0, uuid_1.randomId)(),
81
- prefix: java_1.singleSpace,
82
- markers: markers_1.emptyMarkers,
83
- value: 10,
84
- valueSource: '10',
85
- unicodeEscapes: undefined,
86
- type: undefined
87
- };
88
- return Object.assign(Object.assign({}, visited), { arguments: Object.assign(Object.assign({}, args), { elements: [
89
- Object.assign(Object.assign({}, existingArg), { after: Object.assign(Object.assign({}, existingArg.after), { whitespace: '' }) }),
90
- {
91
- kind: java_1.J.Kind.RightPadded,
92
- element: radixLiteral,
93
- after: existingArg.after,
94
- markers: markers_1.emptyMarkers
95
- }
96
- ] }) });
97
- });
43
+ async editor() {
44
+ return new class extends visitor_1.JavaScriptVisitor {
45
+ async visitMethodInvocation(method, ctx) {
46
+ const visited = await super.visitMethodInvocation(method, ctx);
47
+ // Check if this is a call to parseInt
48
+ if (visited.select) {
49
+ // This is a method call on an object (e.g., obj.parseInt())
50
+ // parseInt is typically called as a global function, not a method
51
+ return visited;
98
52
  }
99
- };
100
- });
53
+ // Check the method name
54
+ if (visited.name.simpleName !== 'parseInt') {
55
+ return visited;
56
+ }
57
+ // Check if there's exactly one argument (no radix)
58
+ const args = visited.arguments;
59
+ if (!args || args.elements.length !== 1) {
60
+ return visited;
61
+ }
62
+ // Add the radix parameter (10)
63
+ const existingArg = args.elements[0];
64
+ const radixLiteral = {
65
+ kind: java_1.J.Kind.Literal,
66
+ id: (0, uuid_1.randomId)(),
67
+ prefix: java_1.singleSpace,
68
+ markers: markers_1.emptyMarkers,
69
+ value: 10,
70
+ valueSource: '10',
71
+ unicodeEscapes: undefined,
72
+ type: undefined
73
+ };
74
+ return Object.assign(Object.assign({}, visited), { arguments: Object.assign(Object.assign({}, args), { elements: [
75
+ Object.assign(Object.assign({}, existingArg), { after: Object.assign(Object.assign({}, existingArg.after), { whitespace: '' }) }),
76
+ {
77
+ kind: java_1.J.Kind.RightPadded,
78
+ element: radixLiteral,
79
+ after: existingArg.after,
80
+ markers: markers_1.emptyMarkers
81
+ }
82
+ ] }) });
83
+ }
84
+ };
101
85
  }
102
86
  }
103
87
  exports.AddParseIntRadix = AddParseIntRadix;
@@ -1 +1 @@
1
- {"version":3,"file":"add-parse-int-radix.js","sourceRoot":"","sources":["../../../src/javascript/cleanup/add-parse-int-radix.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;AAEH,yCAAoC;AAGpC,wCAA6C;AAC7C,qCAA0C;AAC1C,2CAA2C;AAC3C,qCAAoC;AAEpC;;;;;;;;;;;GAWG;AACH,MAAa,gBAAiB,SAAQ,eAAM;IAA5C;;QACI,SAAI,GAAG,wDAAwD,CAAC;QAChE,gBAAW,GAAG,yBAAyB,CAAC;QACxC,gBAAW,GAAG,oHAAoH,CAAC;IA+DvI,CAAC;IA7DS,MAAM;;YACR,OAAO,IAAI,KAAM,SAAQ,2BAAmC;gBAExC,qBAAqB,CAAC,MAA0B,EAAE,GAAqB;;;;;wBACnF,MAAM,OAAO,GAAG,MAAM,OAAM,qBAAqB,YAAC,MAAM,EAAE,GAAG,CAAuB,CAAC;wBAErF,sCAAsC;wBACtC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;4BACjB,4DAA4D;4BAC5D,kEAAkE;4BAClE,OAAO,OAAO,CAAC;wBACnB,CAAC;wBAED,wBAAwB;wBACxB,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;4BACzC,OAAO,OAAO,CAAC;wBACnB,CAAC;wBAED,mDAAmD;wBACnD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;wBAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACtC,OAAO,OAAO,CAAC;wBACnB,CAAC;wBAED,+BAA+B;wBAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;wBACrC,MAAM,YAAY,GAAc;4BAC5B,IAAI,EAAE,QAAC,CAAC,IAAI,CAAC,OAAO;4BACpB,EAAE,EAAE,IAAA,eAAQ,GAAE;4BACd,MAAM,EAAE,kBAAW;4BACnB,OAAO,EAAE,sBAAY;4BACrB,KAAK,EAAE,EAAE;4BACT,WAAW,EAAE,IAAI;4BACjB,cAAc,EAAE,SAAS;4BACzB,IAAI,EAAE,SAAS;yBAClB,CAAC;wBAEF,OAAO,gCACA,OAAO,KACV,SAAS,kCACF,IAAI,KACP,QAAQ,EAAE;oEAEC,WAAW,KACd,KAAK,kCACE,WAAW,CAAC,KAAK,KACpB,UAAU,EAAE,EAAE;oCAGtB;wCACI,IAAI,EAAE,QAAC,CAAC,IAAI,CAAC,WAAW;wCACxB,OAAO,EAAE,YAAY;wCACrB,KAAK,EAAE,WAAW,CAAC,KAAK;wCACxB,OAAO,EAAE,sBAAY;qCACxB;iCACJ,MAEc,CAAC;oBAC5B,CAAC;iBAAA;aACJ,CAAC;QACN,CAAC;KAAA;CACJ;AAlED,4CAkEC"}
1
+ {"version":3,"file":"add-parse-int-radix.js","sourceRoot":"","sources":["../../../src/javascript/cleanup/add-parse-int-radix.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,yCAAoC;AAGpC,wCAA6C;AAC7C,qCAA0C;AAC1C,2CAA2C;AAC3C,qCAAoC;AAEpC;;;;;;;;;;;GAWG;AACH,MAAa,gBAAiB,SAAQ,eAAM;IAA5C;;QACI,SAAI,GAAG,wDAAwD,CAAC;QAChE,gBAAW,GAAG,yBAAyB,CAAC;QACxC,gBAAW,GAAG,oHAAoH,CAAC;IA+DvI,CAAC;IA7DG,KAAK,CAAC,MAAM;QACR,OAAO,IAAI,KAAM,SAAQ,2BAAmC;YAE9C,KAAK,CAAC,qBAAqB,CAAC,MAA0B,EAAE,GAAqB;gBACnF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAuB,CAAC;gBAErF,sCAAsC;gBACtC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACjB,4DAA4D;oBAC5D,kEAAkE;oBAClE,OAAO,OAAO,CAAC;gBACnB,CAAC;gBAED,wBAAwB;gBACxB,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;oBACzC,OAAO,OAAO,CAAC;gBACnB,CAAC;gBAED,mDAAmD;gBACnD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;gBAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtC,OAAO,OAAO,CAAC;gBACnB,CAAC;gBAED,+BAA+B;gBAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACrC,MAAM,YAAY,GAAc;oBAC5B,IAAI,EAAE,QAAC,CAAC,IAAI,CAAC,OAAO;oBACpB,EAAE,EAAE,IAAA,eAAQ,GAAE;oBACd,MAAM,EAAE,kBAAW;oBACnB,OAAO,EAAE,sBAAY;oBACrB,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE,IAAI;oBACjB,cAAc,EAAE,SAAS;oBACzB,IAAI,EAAE,SAAS;iBAClB,CAAC;gBAEF,OAAO,gCACA,OAAO,KACV,SAAS,kCACF,IAAI,KACP,QAAQ,EAAE;4DAEC,WAAW,KACd,KAAK,kCACE,WAAW,CAAC,KAAK,KACpB,UAAU,EAAE,EAAE;4BAGtB;gCACI,IAAI,EAAE,QAAC,CAAC,IAAI,CAAC,WAAW;gCACxB,OAAO,EAAE,YAAY;gCACrB,KAAK,EAAE,WAAW,CAAC,KAAK;gCACxB,OAAO,EAAE,sBAAY;6BACxB;yBACJ,MAEc,CAAC;YAC5B,CAAC;SACJ,CAAC;IACN,CAAC;CACJ;AAlED,4CAkEC"}
@@ -14,15 +14,6 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
17
  Object.defineProperty(exports, "__esModule", { value: true });
27
18
  exports.PreferOptionalChain = void 0;
28
19
  const recipe_1 = require("../../recipe");
@@ -47,113 +38,106 @@ class PreferOptionalChain extends recipe_1.Recipe {
47
38
  this.displayName = "Prefer optional chaining";
48
39
  this.description = "Converts ternary expressions like `foo ? foo.bar : undefined` to use optional chaining syntax `foo?.bar`.";
49
40
  }
50
- editor() {
51
- return __awaiter(this, void 0, void 0, function* () {
52
- return new class extends visitor_1.JavaScriptVisitor {
53
- visitTernary(ternary, ctx) {
54
- const _super = Object.create(null, {
55
- visitTernary: { get: () => super.visitTernary }
56
- });
57
- return __awaiter(this, void 0, void 0, function* () {
58
- const visited = yield _super.visitTernary.call(this, ternary, ctx);
59
- // Check if the condition is an identifier
60
- if (visited.condition.kind !== java_1.J.Kind.Identifier) {
61
- return visited;
62
- }
63
- const conditionIdent = visited.condition;
64
- const conditionName = conditionIdent.simpleName;
65
- // Check if the false part is undefined
66
- // Note: We only convert when the false part is undefined, not null,
67
- // because optional chaining returns undefined (not null) when the target is nullish.
68
- const falsePart = visited.falsePart.element;
69
- const isUndefinedFalse = falsePart.kind === java_1.J.Kind.Identifier &&
70
- falsePart.simpleName === 'undefined';
71
- if (!isUndefinedFalse) {
72
- return visited;
73
- }
74
- // Check if the true part accesses a property/method on the condition
75
- const truePart = visited.truePart.element;
76
- const result = this.extractOptionalChainTarget(truePart, conditionName);
77
- if (!result) {
78
- return visited;
79
- }
80
- // Transform to optional chaining
81
- // The result already has the Optional marker added, just update prefix
82
- return Object.assign(Object.assign({}, result), { prefix: visited.prefix });
83
- });
41
+ async editor() {
42
+ return new class extends visitor_1.JavaScriptVisitor {
43
+ async visitTernary(ternary, ctx) {
44
+ const visited = await super.visitTernary(ternary, ctx);
45
+ // Check if the condition is an identifier
46
+ if (visited.condition.kind !== java_1.J.Kind.Identifier) {
47
+ return visited;
48
+ }
49
+ const conditionIdent = visited.condition;
50
+ const conditionName = conditionIdent.simpleName;
51
+ // Check if the false part is undefined
52
+ // Note: We only convert when the false part is undefined, not null,
53
+ // because optional chaining returns undefined (not null) when the target is nullish.
54
+ const falsePart = visited.falsePart.element;
55
+ const isUndefinedFalse = falsePart.kind === java_1.J.Kind.Identifier &&
56
+ falsePart.simpleName === 'undefined';
57
+ if (!isUndefinedFalse) {
58
+ return visited;
84
59
  }
85
- /**
86
- * Extracts the target expression for optional chaining if the expression
87
- * accesses a property on the given identifier.
88
- *
89
- * Returns the expression with Optional marker added, or undefined if not applicable.
90
- */
91
- extractOptionalChainTarget(expr, targetName) {
92
- var _a;
93
- // Handle FieldAccess: foo.bar
94
- if (expr.kind === java_1.J.Kind.FieldAccess) {
95
- const fieldAccess = expr;
96
- if (fieldAccess.target.kind === java_1.J.Kind.Identifier) {
97
- const target = fieldAccess.target;
98
- if (target.simpleName === targetName) {
99
- // Already has optional marker?
100
- if ((0, markers_1.findMarker)(target, tree_1.JS.Markers.Optional)) {
101
- return fieldAccess;
102
- }
103
- // Add Optional marker to the target (foo?.bar means marker on foo)
104
- const optionalMarker = {
105
- kind: tree_1.JS.Markers.Optional,
106
- id: (0, uuid_1.randomId)(),
107
- prefix: java_1.emptySpace
108
- };
109
- return Object.assign(Object.assign({}, fieldAccess), { target: Object.assign(Object.assign({}, target), { markers: (0, markers_1.markers)(...target.markers.markers, optionalMarker) }) });
60
+ // Check if the true part accesses a property/method on the condition
61
+ const truePart = visited.truePart.element;
62
+ const result = this.extractOptionalChainTarget(truePart, conditionName);
63
+ if (!result) {
64
+ return visited;
65
+ }
66
+ // Transform to optional chaining
67
+ // The result already has the Optional marker added, just update prefix
68
+ return Object.assign(Object.assign({}, result), { prefix: visited.prefix });
69
+ }
70
+ /**
71
+ * Extracts the target expression for optional chaining if the expression
72
+ * accesses a property on the given identifier.
73
+ *
74
+ * Returns the expression with Optional marker added, or undefined if not applicable.
75
+ */
76
+ extractOptionalChainTarget(expr, targetName) {
77
+ var _a;
78
+ // Handle FieldAccess: foo.bar
79
+ if (expr.kind === java_1.J.Kind.FieldAccess) {
80
+ const fieldAccess = expr;
81
+ if (fieldAccess.target.kind === java_1.J.Kind.Identifier) {
82
+ const target = fieldAccess.target;
83
+ if (target.simpleName === targetName) {
84
+ // Already has optional marker?
85
+ if ((0, markers_1.findMarker)(target, tree_1.JS.Markers.Optional)) {
86
+ return fieldAccess;
110
87
  }
88
+ // Add Optional marker to the target (foo?.bar means marker on foo)
89
+ const optionalMarker = {
90
+ kind: tree_1.JS.Markers.Optional,
91
+ id: (0, uuid_1.randomId)(),
92
+ prefix: java_1.emptySpace
93
+ };
94
+ return Object.assign(Object.assign({}, fieldAccess), { target: Object.assign(Object.assign({}, target), { markers: (0, markers_1.markers)(...target.markers.markers, optionalMarker) }) });
111
95
  }
112
96
  }
113
- // Handle MethodInvocation: foo.bar()
114
- if (expr.kind === java_1.J.Kind.MethodInvocation) {
115
- const methodInvocation = expr;
116
- if (((_a = methodInvocation.select) === null || _a === void 0 ? void 0 : _a.element.kind) === java_1.J.Kind.Identifier) {
117
- const select = methodInvocation.select.element;
118
- if (select.simpleName === targetName) {
119
- // Already has optional marker?
120
- if ((0, markers_1.findMarker)(select, tree_1.JS.Markers.Optional)) {
121
- return methodInvocation;
122
- }
123
- // Add Optional marker to the select
124
- const optionalMarker = {
125
- kind: tree_1.JS.Markers.Optional,
126
- id: (0, uuid_1.randomId)(),
127
- prefix: java_1.emptySpace
128
- };
129
- return Object.assign(Object.assign({}, methodInvocation), { select: Object.assign(Object.assign({}, methodInvocation.select), { element: Object.assign(Object.assign({}, select), { markers: (0, markers_1.markers)(...select.markers.markers, optionalMarker) }) }) });
97
+ }
98
+ // Handle MethodInvocation: foo.bar()
99
+ if (expr.kind === java_1.J.Kind.MethodInvocation) {
100
+ const methodInvocation = expr;
101
+ if (((_a = methodInvocation.select) === null || _a === void 0 ? void 0 : _a.element.kind) === java_1.J.Kind.Identifier) {
102
+ const select = methodInvocation.select.element;
103
+ if (select.simpleName === targetName) {
104
+ // Already has optional marker?
105
+ if ((0, markers_1.findMarker)(select, tree_1.JS.Markers.Optional)) {
106
+ return methodInvocation;
130
107
  }
108
+ // Add Optional marker to the select
109
+ const optionalMarker = {
110
+ kind: tree_1.JS.Markers.Optional,
111
+ id: (0, uuid_1.randomId)(),
112
+ prefix: java_1.emptySpace
113
+ };
114
+ return Object.assign(Object.assign({}, methodInvocation), { select: Object.assign(Object.assign({}, methodInvocation.select), { element: Object.assign(Object.assign({}, select), { markers: (0, markers_1.markers)(...select.markers.markers, optionalMarker) }) }) });
131
115
  }
132
116
  }
133
- // Handle ArrayAccess: foo[0]
134
- if (expr.kind === java_1.J.Kind.ArrayAccess) {
135
- const arrayAccess = expr;
136
- if (arrayAccess.indexed.kind === java_1.J.Kind.Identifier) {
137
- const indexed = arrayAccess.indexed;
138
- if (indexed.simpleName === targetName) {
139
- // Already has optional marker?
140
- if ((0, markers_1.findMarker)(indexed, tree_1.JS.Markers.Optional)) {
141
- return arrayAccess;
142
- }
143
- // Add Optional marker to the indexed expression
144
- const optionalMarker = {
145
- kind: tree_1.JS.Markers.Optional,
146
- id: (0, uuid_1.randomId)(),
147
- prefix: java_1.emptySpace
148
- };
149
- return Object.assign(Object.assign({}, arrayAccess), { indexed: Object.assign(Object.assign({}, indexed), { markers: (0, markers_1.markers)(...indexed.markers.markers, optionalMarker) }) });
117
+ }
118
+ // Handle ArrayAccess: foo[0]
119
+ if (expr.kind === java_1.J.Kind.ArrayAccess) {
120
+ const arrayAccess = expr;
121
+ if (arrayAccess.indexed.kind === java_1.J.Kind.Identifier) {
122
+ const indexed = arrayAccess.indexed;
123
+ if (indexed.simpleName === targetName) {
124
+ // Already has optional marker?
125
+ if ((0, markers_1.findMarker)(indexed, tree_1.JS.Markers.Optional)) {
126
+ return arrayAccess;
150
127
  }
128
+ // Add Optional marker to the indexed expression
129
+ const optionalMarker = {
130
+ kind: tree_1.JS.Markers.Optional,
131
+ id: (0, uuid_1.randomId)(),
132
+ prefix: java_1.emptySpace
133
+ };
134
+ return Object.assign(Object.assign({}, arrayAccess), { indexed: Object.assign(Object.assign({}, indexed), { markers: (0, markers_1.markers)(...indexed.markers.markers, optionalMarker) }) });
151
135
  }
152
136
  }
153
- return undefined;
154
137
  }
155
- };
156
- });
138
+ return undefined;
139
+ }
140
+ };
157
141
  }
158
142
  }
159
143
  exports.PreferOptionalChain = PreferOptionalChain;
@@ -1 +1 @@
1
- {"version":3,"file":"prefer-optional-chain.js","sourceRoot":"","sources":["../../../src/javascript/cleanup/prefer-optional-chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefer-optional-chain.js","sourceRoot":"","sources":["../../../src/javascript/cleanup/prefer-optional-chain.ts"],"names":[],"mappings":"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"}
@@ -14,15 +14,6 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
17
  Object.defineProperty(exports, "__esModule", { value: true });
27
18
  exports.UseObjectPropertyShorthand = void 0;
28
19
  const recipe_1 = require("../../recipe");
@@ -50,100 +41,88 @@ class UseObjectPropertyShorthand extends recipe_1.Recipe {
50
41
  this.displayName = "Use object property shorthand";
51
42
  this.description = "Simplifies object properties where the property name and value/variable name are the same (e.g., `{ x: x }` becomes `{ x }`). Applies to both destructuring patterns and object literals.";
52
43
  }
53
- editor() {
54
- return __awaiter(this, void 0, void 0, function* () {
55
- return new class extends visitor_1.JavaScriptVisitor {
56
- /**
57
- * Handle object binding patterns (destructuring): const { x: x } = obj
58
- */
59
- visitObjectBindingPattern(pattern, p) {
60
- const _super = Object.create(null, {
61
- visitObjectBindingPattern: { get: () => super.visitObjectBindingPattern }
62
- });
63
- return __awaiter(this, void 0, void 0, function* () {
64
- const visited = yield _super.visitObjectBindingPattern.call(this, pattern, p);
65
- let hasChanges = false;
66
- const simplifiedBindings = visited.bindings.elements.map(right => {
67
- var _a, _b;
68
- const element = right.element;
69
- if (element.kind === tree_1.JS.Kind.BindingElement) {
70
- const binding = element;
71
- if (((_a = binding.propertyName) === null || _a === void 0 ? void 0 : _a.element.kind) === java_1.J.Kind.Identifier) {
72
- const propName = binding.propertyName.element.simpleName;
73
- if (((_b = binding.name) === null || _b === void 0 ? void 0 : _b.kind) === java_1.J.Kind.Identifier) {
74
- const bindingName = binding.name.simpleName;
75
- if (propName === bindingName) {
76
- hasChanges = true;
77
- return Object.assign(Object.assign({}, right), { element: Object.assign(Object.assign({}, binding), { propertyName: undefined, name: Object.assign(Object.assign({}, binding.name), { prefix: binding.propertyName.element.prefix }) }) });
78
- }
79
- }
44
+ async editor() {
45
+ return new class extends visitor_1.JavaScriptVisitor {
46
+ /**
47
+ * Handle object binding patterns (destructuring): const { x: x } = obj
48
+ */
49
+ async visitObjectBindingPattern(pattern, p) {
50
+ const visited = await super.visitObjectBindingPattern(pattern, p);
51
+ let hasChanges = false;
52
+ const simplifiedBindings = visited.bindings.elements.map(right => {
53
+ var _a, _b;
54
+ const element = right.element;
55
+ if (element.kind === tree_1.JS.Kind.BindingElement) {
56
+ const binding = element;
57
+ if (((_a = binding.propertyName) === null || _a === void 0 ? void 0 : _a.element.kind) === java_1.J.Kind.Identifier) {
58
+ const propName = binding.propertyName.element.simpleName;
59
+ if (((_b = binding.name) === null || _b === void 0 ? void 0 : _b.kind) === java_1.J.Kind.Identifier) {
60
+ const bindingName = binding.name.simpleName;
61
+ if (propName === bindingName) {
62
+ hasChanges = true;
63
+ return Object.assign(Object.assign({}, right), { element: Object.assign(Object.assign({}, binding), { propertyName: undefined, name: Object.assign(Object.assign({}, binding.name), { prefix: binding.propertyName.element.prefix }) }) });
80
64
  }
81
65
  }
82
- return right;
83
- });
84
- if (!hasChanges) {
85
- return visited;
86
66
  }
87
- return (0, mutative_1.create)(visited, draft => {
88
- draft.bindings.elements = simplifiedBindings;
89
- });
90
- });
67
+ }
68
+ return right;
69
+ });
70
+ if (!hasChanges) {
71
+ return visited;
91
72
  }
92
- /**
93
- * Handle object literals: { x: x }
94
- * Object literals are represented as J.NewClass with a body containing JS.PropertyAssignment statements.
95
- */
96
- visitNewClass(newClass, ctx) {
97
- const _super = Object.create(null, {
98
- visitNewClass: { get: () => super.visitNewClass }
99
- });
100
- return __awaiter(this, void 0, void 0, function* () {
101
- var _a;
102
- const visited = yield _super.visitNewClass.call(this, newClass, ctx);
103
- // Only process object literals (NewClass with body but no class or arguments)
104
- if (!visited.body || visited.class || (((_a = visited.arguments) === null || _a === void 0 ? void 0 : _a.elements) && visited.arguments.elements.length > 0)) {
105
- return visited;
106
- }
107
- const statements = visited.body.statements;
108
- if (!statements || statements.length === 0) {
109
- return visited;
110
- }
111
- let hasChanges = false;
112
- const simplifiedStatements = statements.map(stmt => {
113
- var _a;
114
- if (stmt.element.kind === tree_1.JS.Kind.PropertyAssignment) {
115
- const prop = stmt.element;
116
- // Check if the property name is an identifier
117
- if (prop.name.element.kind === java_1.J.Kind.Identifier) {
118
- const propName = prop.name.element.simpleName;
119
- // Check if the initializer is also an identifier with the same name
120
- if (((_a = prop.initializer) === null || _a === void 0 ? void 0 : _a.kind) === java_1.J.Kind.Identifier) {
121
- const init = prop.initializer;
122
- const initName = init.simpleName;
123
- // Skip if initializer has non-null assertion marker
124
- if ((0, markers_1.findMarker)(init, tree_1.JS.Markers.NonNullAssertion)) {
125
- return stmt;
126
- }
127
- if (propName === initName) {
128
- hasChanges = true;
129
- // Remove the initializer to use shorthand syntax
130
- return Object.assign(Object.assign({}, stmt), { element: Object.assign(Object.assign({}, prop), { initializer: undefined }) });
131
- }
132
- }
73
+ return (0, mutative_1.create)(visited, draft => {
74
+ draft.bindings.elements = simplifiedBindings;
75
+ });
76
+ }
77
+ /**
78
+ * Handle object literals: { x: x }
79
+ * Object literals are represented as J.NewClass with a body containing JS.PropertyAssignment statements.
80
+ */
81
+ async visitNewClass(newClass, ctx) {
82
+ var _a;
83
+ const visited = await super.visitNewClass(newClass, ctx);
84
+ // Only process object literals (NewClass with body but no class or arguments)
85
+ if (!visited.body || visited.class || (((_a = visited.arguments) === null || _a === void 0 ? void 0 : _a.elements) && visited.arguments.elements.length > 0)) {
86
+ return visited;
87
+ }
88
+ const statements = visited.body.statements;
89
+ if (!statements || statements.length === 0) {
90
+ return visited;
91
+ }
92
+ let hasChanges = false;
93
+ const simplifiedStatements = statements.map(stmt => {
94
+ var _a;
95
+ if (stmt.element.kind === tree_1.JS.Kind.PropertyAssignment) {
96
+ const prop = stmt.element;
97
+ // Check if the property name is an identifier
98
+ if (prop.name.element.kind === java_1.J.Kind.Identifier) {
99
+ const propName = prop.name.element.simpleName;
100
+ // Check if the initializer is also an identifier with the same name
101
+ if (((_a = prop.initializer) === null || _a === void 0 ? void 0 : _a.kind) === java_1.J.Kind.Identifier) {
102
+ const init = prop.initializer;
103
+ const initName = init.simpleName;
104
+ // Skip if initializer has non-null assertion marker
105
+ if ((0, markers_1.findMarker)(init, tree_1.JS.Markers.NonNullAssertion)) {
106
+ return stmt;
107
+ }
108
+ if (propName === initName) {
109
+ hasChanges = true;
110
+ // Remove the initializer to use shorthand syntax
111
+ return Object.assign(Object.assign({}, stmt), { element: Object.assign(Object.assign({}, prop), { initializer: undefined }) });
133
112
  }
134
113
  }
135
- return stmt;
136
- });
137
- if (!hasChanges) {
138
- return visited;
139
114
  }
140
- return (0, mutative_1.create)(visited, draft => {
141
- draft.body.statements = simplifiedStatements;
142
- });
143
- });
115
+ }
116
+ return stmt;
117
+ });
118
+ if (!hasChanges) {
119
+ return visited;
144
120
  }
145
- };
146
- });
121
+ return (0, mutative_1.create)(visited, draft => {
122
+ draft.body.statements = simplifiedStatements;
123
+ });
124
+ }
125
+ };
147
126
  }
148
127
  }
149
128
  exports.UseObjectPropertyShorthand = UseObjectPropertyShorthand;
@@ -1 +1 @@
1
- {"version":3,"file":"use-object-property-shorthand.js","sourceRoot":"","sources":["../../../src/javascript/cleanup/use-object-property-shorthand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-object-property-shorthand.js","sourceRoot":"","sources":["../../../src/javascript/cleanup/use-object-property-shorthand.ts"],"names":[],"mappings":"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"}