@openrewrite/recipes-react 0.2.9

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 (251) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +130 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/migration/change-component-prop-value.d.ts +20 -0
  6. package/dist/migration/change-component-prop-value.d.ts.map +1 -0
  7. package/dist/migration/change-component-prop-value.js +217 -0
  8. package/dist/migration/change-component-prop-value.js.map +1 -0
  9. package/dist/react-native/view-prop-types.d.ts +8 -0
  10. package/dist/react-native/view-prop-types.d.ts.map +1 -0
  11. package/dist/react-native/view-prop-types.js +65 -0
  12. package/dist/react-native/view-prop-types.js.map +1 -0
  13. package/dist/react16/error-boundaries.d.ts +8 -0
  14. package/dist/react16/error-boundaries.d.ts.map +1 -0
  15. package/dist/react16/error-boundaries.js +42 -0
  16. package/dist/react16/error-boundaries.js.map +1 -0
  17. package/dist/react16/find-dom-node.d.ts +8 -0
  18. package/dist/react16/find-dom-node.d.ts.map +1 -0
  19. package/dist/react16/find-dom-node.js +48 -0
  20. package/dist/react16/find-dom-node.js.map +1 -0
  21. package/dist/react16/react-dom-factories.d.ts +8 -0
  22. package/dist/react16/react-dom-factories.d.ts.map +1 -0
  23. package/dist/react16/react-dom-factories.js +72 -0
  24. package/dist/react16/react-dom-factories.js.map +1 -0
  25. package/dist/react16/react-prop-types.d.ts +8 -0
  26. package/dist/react16/react-prop-types.d.ts.map +1 -0
  27. package/dist/react16/react-prop-types.js +69 -0
  28. package/dist/react16/react-prop-types.js.map +1 -0
  29. package/dist/react16/react-to-react-dom.d.ts +8 -0
  30. package/dist/react16/react-to-react-dom.d.ts.map +1 -0
  31. package/dist/react16/react-to-react-dom.js +97 -0
  32. package/dist/react16/react-to-react-dom.js.map +1 -0
  33. package/dist/react16/replace-create-factory.d.ts +8 -0
  34. package/dist/react16/replace-create-factory.d.ts.map +1 -0
  35. package/dist/react16/replace-create-factory.js +69 -0
  36. package/dist/react16/replace-create-factory.js.map +1 -0
  37. package/dist/react16/upgrade-to-react-16.d.ts +8 -0
  38. package/dist/react16/upgrade-to-react-16.d.ts.map +1 -0
  39. package/dist/react16/upgrade-to-react-16.js +41 -0
  40. package/dist/react16/upgrade-to-react-16.js.map +1 -0
  41. package/dist/react17/remove-event-persist.d.ts +8 -0
  42. package/dist/react17/remove-event-persist.d.ts.map +1 -0
  43. package/dist/react17/remove-event-persist.js +114 -0
  44. package/dist/react17/remove-event-persist.js.map +1 -0
  45. package/dist/react17/rename-unsafe-lifecycles.d.ts +8 -0
  46. package/dist/react17/rename-unsafe-lifecycles.d.ts.map +1 -0
  47. package/dist/react17/rename-unsafe-lifecycles.js +48 -0
  48. package/dist/react17/rename-unsafe-lifecycles.js.map +1 -0
  49. package/dist/react17/update-react-imports.d.ts +8 -0
  50. package/dist/react17/update-react-imports.d.ts.map +1 -0
  51. package/dist/react17/update-react-imports.js +40 -0
  52. package/dist/react17/update-react-imports.js.map +1 -0
  53. package/dist/react17/upgrade-to-react-17.d.ts +8 -0
  54. package/dist/react17/upgrade-to-react-17.d.ts.map +1 -0
  55. package/dist/react17/upgrade-to-react-17.js +37 -0
  56. package/dist/react17/upgrade-to-react-17.js.map +1 -0
  57. package/dist/react18/remove-unstable-batched-updates.d.ts +8 -0
  58. package/dist/react18/remove-unstable-batched-updates.d.ts.map +1 -0
  59. package/dist/react18/remove-unstable-batched-updates.js +170 -0
  60. package/dist/react18/remove-unstable-batched-updates.js.map +1 -0
  61. package/dist/react18/replace-reactdom-render.d.ts +8 -0
  62. package/dist/react18/replace-reactdom-render.d.ts.map +1 -0
  63. package/dist/react18/replace-reactdom-render.js +55 -0
  64. package/dist/react18/replace-reactdom-render.js.map +1 -0
  65. package/dist/react18/replace-render-callback.d.ts +8 -0
  66. package/dist/react18/replace-render-callback.d.ts.map +1 -0
  67. package/dist/react18/replace-render-callback.js +60 -0
  68. package/dist/react18/replace-render-callback.js.map +1 -0
  69. package/dist/react18/replace-unmount-component-at-node.d.ts +8 -0
  70. package/dist/react18/replace-unmount-component-at-node.d.ts.map +1 -0
  71. package/dist/react18/replace-unmount-component-at-node.js +54 -0
  72. package/dist/react18/replace-unmount-component-at-node.js.map +1 -0
  73. package/dist/react18/upgrade-to-react-18.d.ts +8 -0
  74. package/dist/react18/upgrade-to-react-18.d.ts.map +1 -0
  75. package/dist/react18/upgrade-to-react-18.js +39 -0
  76. package/dist/react18/upgrade-to-react-18.js.map +1 -0
  77. package/dist/react19/deprecated-react-types.d.ts +8 -0
  78. package/dist/react19/deprecated-react-types.d.ts.map +1 -0
  79. package/dist/react19/deprecated-react-types.js +135 -0
  80. package/dist/react19/deprecated-react-types.js.map +1 -0
  81. package/dist/react19/find-context-consumer.d.ts +9 -0
  82. package/dist/react19/find-context-consumer.d.ts.map +1 -0
  83. package/dist/react19/find-context-consumer.js +128 -0
  84. package/dist/react19/find-context-consumer.js.map +1 -0
  85. package/dist/react19/find-deprecated-reactdom-apis.d.ts +9 -0
  86. package/dist/react19/find-deprecated-reactdom-apis.d.ts.map +1 -0
  87. package/dist/react19/find-deprecated-reactdom-apis.js +132 -0
  88. package/dist/react19/find-deprecated-reactdom-apis.js.map +1 -0
  89. package/dist/react19/find-element-ref.d.ts +9 -0
  90. package/dist/react19/find-element-ref.d.ts.map +1 -0
  91. package/dist/react19/find-element-ref.js +88 -0
  92. package/dist/react19/find-element-ref.js.map +1 -0
  93. package/dist/react19/find-legacy-context-api.d.ts +9 -0
  94. package/dist/react19/find-legacy-context-api.d.ts.map +1 -0
  95. package/dist/react19/find-legacy-context-api.js +163 -0
  96. package/dist/react19/find-legacy-context-api.js.map +1 -0
  97. package/dist/react19/no-implicit-ref-callback-return.d.ts +8 -0
  98. package/dist/react19/no-implicit-ref-callback-return.d.ts.map +1 -0
  99. package/dist/react19/no-implicit-ref-callback-return.js +107 -0
  100. package/dist/react19/no-implicit-ref-callback-return.js.map +1 -0
  101. package/dist/react19/remove-context-provider.d.ts +8 -0
  102. package/dist/react19/remove-context-provider.d.ts.map +1 -0
  103. package/dist/react19/remove-context-provider.js +59 -0
  104. package/dist/react19/remove-context-provider.js.map +1 -0
  105. package/dist/react19/remove-forward-ref.d.ts +8 -0
  106. package/dist/react19/remove-forward-ref.d.ts.map +1 -0
  107. package/dist/react19/remove-forward-ref.js +73 -0
  108. package/dist/react19/remove-forward-ref.js.map +1 -0
  109. package/dist/react19/remove-prop-types.d.ts +8 -0
  110. package/dist/react19/remove-prop-types.d.ts.map +1 -0
  111. package/dist/react19/remove-prop-types.js +76 -0
  112. package/dist/react19/remove-prop-types.js.map +1 -0
  113. package/dist/react19/remove-react-fc.d.ts +8 -0
  114. package/dist/react19/remove-react-fc.d.ts.map +1 -0
  115. package/dist/react19/remove-react-fc.js +149 -0
  116. package/dist/react19/remove-react-fc.js.map +1 -0
  117. package/dist/react19/replace-act-import.d.ts +9 -0
  118. package/dist/react19/replace-act-import.d.ts.map +1 -0
  119. package/dist/react19/replace-act-import.js +34 -0
  120. package/dist/react19/replace-act-import.js.map +1 -0
  121. package/dist/react19/replace-default-props.d.ts +8 -0
  122. package/dist/react19/replace-default-props.d.ts.map +1 -0
  123. package/dist/react19/replace-default-props.js +195 -0
  124. package/dist/react19/replace-default-props.js.map +1 -0
  125. package/dist/react19/replace-react-shallow-renderer.d.ts +8 -0
  126. package/dist/react19/replace-react-shallow-renderer.d.ts.map +1 -0
  127. package/dist/react19/replace-react-shallow-renderer.js +69 -0
  128. package/dist/react19/replace-react-shallow-renderer.js.map +1 -0
  129. package/dist/react19/replace-reactdom-hydrate.d.ts +8 -0
  130. package/dist/react19/replace-reactdom-hydrate.d.ts.map +1 -0
  131. package/dist/react19/replace-reactdom-hydrate.js +55 -0
  132. package/dist/react19/replace-reactdom-hydrate.js.map +1 -0
  133. package/dist/react19/replace-string-ref.d.ts +8 -0
  134. package/dist/react19/replace-string-ref.d.ts.map +1 -0
  135. package/dist/react19/replace-string-ref.js +75 -0
  136. package/dist/react19/replace-string-ref.js.map +1 -0
  137. package/dist/react19/replace-use-form-state.d.ts +8 -0
  138. package/dist/react19/replace-use-form-state.d.ts.map +1 -0
  139. package/dist/react19/replace-use-form-state.js +54 -0
  140. package/dist/react19/replace-use-form-state.js.map +1 -0
  141. package/dist/react19/upgrade-to-react-19.d.ts +8 -0
  142. package/dist/react19/upgrade-to-react-19.d.ts.map +1 -0
  143. package/dist/react19/upgrade-to-react-19.js +59 -0
  144. package/dist/react19/upgrade-to-react-19.js.map +1 -0
  145. package/dist/react19/use-context-hook.d.ts +8 -0
  146. package/dist/react19/use-context-hook.d.ts.map +1 -0
  147. package/dist/react19/use-context-hook.js +54 -0
  148. package/dist/react19/use-context-hook.js.map +1 -0
  149. package/dist/react19/use-ref-required-initial.d.ts +8 -0
  150. package/dist/react19/use-ref-required-initial.d.ts.map +1 -0
  151. package/dist/react19/use-ref-required-initial.js +74 -0
  152. package/dist/react19/use-ref-required-initial.js.map +1 -0
  153. package/dist/refactoring/class-to-functional.d.ts +8 -0
  154. package/dist/refactoring/class-to-functional.d.ts.map +1 -0
  155. package/dist/refactoring/class-to-functional.js +205 -0
  156. package/dist/refactoring/class-to-functional.js.map +1 -0
  157. package/dist/refactoring/create-class-to-es6.d.ts +8 -0
  158. package/dist/refactoring/create-class-to-es6.d.ts.map +1 -0
  159. package/dist/refactoring/create-class-to-es6.js +289 -0
  160. package/dist/refactoring/create-class-to-es6.js.map +1 -0
  161. package/dist/refactoring/create-element-to-jsx.d.ts +8 -0
  162. package/dist/refactoring/create-element-to-jsx.d.ts.map +1 -0
  163. package/dist/refactoring/create-element-to-jsx.js +167 -0
  164. package/dist/refactoring/create-element-to-jsx.js.map +1 -0
  165. package/dist/refactoring/manual-bind-to-arrow.d.ts +8 -0
  166. package/dist/refactoring/manual-bind-to-arrow.d.ts.map +1 -0
  167. package/dist/refactoring/manual-bind-to-arrow.js +134 -0
  168. package/dist/refactoring/manual-bind-to-arrow.js.map +1 -0
  169. package/dist/refactoring/pure-render-mixin.d.ts +8 -0
  170. package/dist/refactoring/pure-render-mixin.d.ts.map +1 -0
  171. package/dist/refactoring/pure-render-mixin.js +253 -0
  172. package/dist/refactoring/pure-render-mixin.js.map +1 -0
  173. package/dist/refactoring/sort-comp.d.ts +8 -0
  174. package/dist/refactoring/sort-comp.d.ts.map +1 -0
  175. package/dist/refactoring/sort-comp.js +128 -0
  176. package/dist/refactoring/sort-comp.js.map +1 -0
  177. package/dist/search/find-hook-usage.d.ts +9 -0
  178. package/dist/search/find-hook-usage.d.ts.map +1 -0
  179. package/dist/search/find-hook-usage.js +262 -0
  180. package/dist/search/find-hook-usage.js.map +1 -0
  181. package/dist/search/find-prop-usage.d.ts +15 -0
  182. package/dist/search/find-prop-usage.d.ts.map +1 -0
  183. package/dist/search/find-prop-usage.js +177 -0
  184. package/dist/search/find-prop-usage.js.map +1 -0
  185. package/dist/search/find-react-component.d.ts +15 -0
  186. package/dist/search/find-react-component.d.ts.map +1 -0
  187. package/dist/search/find-react-component.js +260 -0
  188. package/dist/search/find-react-component.js.map +1 -0
  189. package/dist/search/find-server-rendering-usage.d.ts +9 -0
  190. package/dist/search/find-server-rendering-usage.d.ts.map +1 -0
  191. package/dist/search/find-server-rendering-usage.js +131 -0
  192. package/dist/search/find-server-rendering-usage.js.map +1 -0
  193. package/dist/simplify-object-pattern-property.d.ts +8 -0
  194. package/dist/simplify-object-pattern-property.d.ts.map +1 -0
  195. package/dist/simplify-object-pattern-property.js +59 -0
  196. package/dist/simplify-object-pattern-property.js.map +1 -0
  197. package/dist/simplify-react-imports.d.ts +8 -0
  198. package/dist/simplify-react-imports.d.ts.map +1 -0
  199. package/dist/simplify-react-imports.js +199 -0
  200. package/dist/simplify-react-imports.js.map +1 -0
  201. package/package.json +39 -0
  202. package/src/index.ts +149 -0
  203. package/src/migration/change-component-prop-value.ts +268 -0
  204. package/src/react-native/view-prop-types.ts +63 -0
  205. package/src/react16/error-boundaries.ts +46 -0
  206. package/src/react16/find-dom-node.ts +55 -0
  207. package/src/react16/react-dom-factories.ts +99 -0
  208. package/src/react16/react-prop-types.ts +71 -0
  209. package/src/react16/react-to-react-dom.ts +104 -0
  210. package/src/react16/replace-create-factory.ts +96 -0
  211. package/src/react16/upgrade-to-react-16.ts +37 -0
  212. package/src/react17/remove-event-persist.ts +121 -0
  213. package/src/react17/rename-unsafe-lifecycles.ts +57 -0
  214. package/src/react17/update-react-imports.ts +50 -0
  215. package/src/react17/upgrade-to-react-17.ts +30 -0
  216. package/src/react18/remove-unstable-batched-updates.ts +192 -0
  217. package/src/react18/replace-reactdom-render.ts +68 -0
  218. package/src/react18/replace-render-callback.ts +66 -0
  219. package/src/react18/replace-unmount-component-at-node.ts +66 -0
  220. package/src/react18/upgrade-to-react-18.ts +33 -0
  221. package/src/react19/deprecated-react-types.ts +120 -0
  222. package/src/react19/find-context-consumer.ts +127 -0
  223. package/src/react19/find-deprecated-reactdom-apis.ts +125 -0
  224. package/src/react19/find-element-ref.ts +86 -0
  225. package/src/react19/find-legacy-context-api.ts +157 -0
  226. package/src/react19/no-implicit-ref-callback-return.ts +123 -0
  227. package/src/react19/remove-context-provider.ts +87 -0
  228. package/src/react19/remove-forward-ref.ts +69 -0
  229. package/src/react19/remove-prop-types.ts +86 -0
  230. package/src/react19/remove-react-fc.ts +247 -0
  231. package/src/react19/replace-act-import.ts +36 -0
  232. package/src/react19/replace-default-props.ts +220 -0
  233. package/src/react19/replace-react-shallow-renderer.ts +75 -0
  234. package/src/react19/replace-reactdom-hydrate.ts +67 -0
  235. package/src/react19/replace-string-ref.ts +89 -0
  236. package/src/react19/replace-use-form-state.ts +66 -0
  237. package/src/react19/upgrade-to-react-19.ts +66 -0
  238. package/src/react19/use-context-hook.ts +67 -0
  239. package/src/react19/use-ref-required-initial.ts +75 -0
  240. package/src/refactoring/class-to-functional.ts +229 -0
  241. package/src/refactoring/create-class-to-es6.ts +309 -0
  242. package/src/refactoring/create-element-to-jsx.ts +200 -0
  243. package/src/refactoring/manual-bind-to-arrow.ts +139 -0
  244. package/src/refactoring/pure-render-mixin.ts +346 -0
  245. package/src/refactoring/sort-comp.ts +135 -0
  246. package/src/search/find-hook-usage.ts +226 -0
  247. package/src/search/find-prop-usage.ts +176 -0
  248. package/src/search/find-react-component.ts +254 -0
  249. package/src/search/find-server-rendering-usage.ts +120 -0
  250. package/src/simplify-object-pattern-property.ts +71 -0
  251. package/src/simplify-react-imports.ts +241 -0
@@ -0,0 +1,8 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class CreateClassToES6 extends Recipe {
3
+ readonly name = "org.openrewrite.react.refactoring.create-class-to-es6";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
7
+ }
8
+ //# sourceMappingURL=create-class-to-es6.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-class-to-es6.d.ts","sourceRoot":"","sources":["../../src/refactoring/create-class-to-es6.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAW,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AA8BpF,qBAAa,gBAAiB,SAAQ,MAAM;IACxC,QAAQ,CAAC,IAAI,2DAA2D;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAwC;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAwF;IAE9G,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAiR9D"}
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CreateClassToES6 = void 0;
13
+ const rewrite_1 = require("@openrewrite/rewrite");
14
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
15
+ const java_1 = require("@openrewrite/rewrite/java");
16
+ const LIFECYCLE_METHODS = new Set([
17
+ 'render',
18
+ 'componentWillMount', 'UNSAFE_componentWillMount',
19
+ 'componentDidMount', 'componentWillReceiveProps',
20
+ 'UNSAFE_componentWillReceiveProps', 'shouldComponentUpdate',
21
+ 'componentWillUpdate', 'UNSAFE_componentWillUpdate',
22
+ 'getSnapshotBeforeUpdate', 'componentDidUpdate',
23
+ 'componentDidCatch', 'componentWillUnmount',
24
+ 'getDerivedStateFromProps', 'getDerivedStateFromError',
25
+ ]);
26
+ const SEMICOLON_KIND = "org.openrewrite.java.marker.Semicolon";
27
+ class CreateClassToES6 extends rewrite_1.Recipe {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.name = "org.openrewrite.react.refactoring.create-class-to-es6";
31
+ this.displayName = "Convert `createClass` to ES6 class";
32
+ this.description = "Converts `React.createClass()` and `createReactClass()` calls to ES6 class syntax.";
33
+ }
34
+ editor() {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ return new class extends javascript_1.JavaScriptVisitor {
37
+ constructor() {
38
+ super(...arguments);
39
+ this.convertedClassIds = new Set();
40
+ }
41
+ stripSemicolonFromConverted(statements) {
42
+ let modified = false;
43
+ const newStatements = statements.map((stmt) => {
44
+ var _a, _b;
45
+ if (stmt.element && this.convertedClassIds.has(stmt.element.id)) {
46
+ const hasSemicolon = (_b = (_a = stmt.markers) === null || _a === void 0 ? void 0 : _a.markers) === null || _b === void 0 ? void 0 : _b.some((m) => m.kind === SEMICOLON_KIND);
47
+ if (hasSemicolon) {
48
+ modified = true;
49
+ return Object.assign(Object.assign({}, stmt), { markers: Object.assign(Object.assign({}, stmt.markers), { markers: stmt.markers.markers.filter((m) => m.kind !== SEMICOLON_KIND) }) });
50
+ }
51
+ }
52
+ return stmt;
53
+ });
54
+ return { modified, statements: newStatements };
55
+ }
56
+ visitJsCompilationUnit(cu, ctx) {
57
+ const _super = Object.create(null, {
58
+ visitJsCompilationUnit: { get: () => super.visitJsCompilationUnit }
59
+ });
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ let c = yield _super.visitJsCompilationUnit.call(this, cu, ctx);
62
+ if (this.convertedClassIds.size === 0)
63
+ return c;
64
+ const result = this.stripSemicolonFromConverted(c.statements);
65
+ return result.modified ? Object.assign(Object.assign({}, c), { statements: result.statements }) : c;
66
+ });
67
+ }
68
+ visitBlock(block, ctx) {
69
+ const _super = Object.create(null, {
70
+ visitBlock: { get: () => super.visitBlock }
71
+ });
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ let b = yield _super.visitBlock.call(this, block, ctx);
74
+ if (this.convertedClassIds.size === 0)
75
+ return b;
76
+ const result = this.stripSemicolonFromConverted(b.statements);
77
+ return result.modified ? Object.assign(Object.assign({}, b), { statements: result.statements }) : b;
78
+ });
79
+ }
80
+ visitVariableDeclarations(varDecl, ctx) {
81
+ const _super = Object.create(null, {
82
+ visitVariableDeclarations: { get: () => super.visitVariableDeclarations }
83
+ });
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ let vd = yield _super.visitVariableDeclarations.call(this, varDecl, ctx);
86
+ if (!vd.variables || vd.variables.length !== 1)
87
+ return vd;
88
+ const namedVar = vd.variables[0].element;
89
+ if (!namedVar.initializer)
90
+ return vd;
91
+ const init = namedVar.initializer.element;
92
+ if (init.kind !== java_1.J.Kind.MethodInvocation)
93
+ return vd;
94
+ const methodInv = init;
95
+ if (!this.isCreateClassCall(methodInv))
96
+ return vd;
97
+ const componentName = namedVar.name.simpleName;
98
+ const args = methodInv.arguments.elements;
99
+ if (args.length === 0)
100
+ return vd;
101
+ const specArg = args[0].element;
102
+ if (specArg.kind !== java_1.J.Kind.NewClass)
103
+ return vd;
104
+ const specObj = specArg;
105
+ if (!specObj.body)
106
+ return vd;
107
+ if (this.hasMixins(specObj.body))
108
+ return vd;
109
+ const memberIndent = this.getMemberIndent(specObj.body);
110
+ const members = yield this.transformMembers(specObj.body, memberIndent, ctx);
111
+ const classDecl = yield (0, javascript_1.template) `class ${(0, javascript_1.raw)(componentName)} extends React.Component {}`.apply(vd, this.cursor);
112
+ if (!classDecl)
113
+ return vd;
114
+ const cd = classDecl;
115
+ const result = Object.assign(Object.assign({}, cd), { body: Object.assign(Object.assign({}, cd.body), { statements: members }) });
116
+ this.convertedClassIds.add(result.id);
117
+ return result;
118
+ });
119
+ }
120
+ isCreateClassCall(method) {
121
+ if (method.name.simpleName === 'createClass' && method.select) {
122
+ if (method.select.element.kind === java_1.J.Kind.Identifier) {
123
+ return method.select.element.simpleName === 'React';
124
+ }
125
+ }
126
+ if (method.name.simpleName === 'createReactClass' && !method.select) {
127
+ return true;
128
+ }
129
+ return false;
130
+ }
131
+ hasMixins(body) {
132
+ for (const stmt of body.statements) {
133
+ const s = stmt.element;
134
+ if (s.kind === javascript_1.JS.Kind.PropertyAssignment) {
135
+ const prop = s;
136
+ if (this.getPropertyKeyName(prop) === 'mixins')
137
+ return true;
138
+ }
139
+ }
140
+ return false;
141
+ }
142
+ getPropertyKeyName(prop) {
143
+ const keyExpr = prop.name.element;
144
+ if (keyExpr.kind === java_1.J.Kind.Identifier) {
145
+ return keyExpr.simpleName;
146
+ }
147
+ return undefined;
148
+ }
149
+ getMemberIndent(body) {
150
+ var _a;
151
+ for (const stmt of body.statements) {
152
+ if ((_a = stmt.element) === null || _a === void 0 ? void 0 : _a.prefix)
153
+ return stmt.element.prefix;
154
+ }
155
+ return undefined;
156
+ }
157
+ transformMembers(body, memberIndent, ctx) {
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ const members = [];
160
+ for (const stmt of body.statements) {
161
+ const s = stmt.element;
162
+ if (s.kind === java_1.J.Kind.MethodDeclaration) {
163
+ const method = s;
164
+ const name = method.name.simpleName;
165
+ if (name === 'getInitialState') {
166
+ const stateInit = yield this.convertGetInitialState(method, memberIndent, ctx);
167
+ if (stateInit)
168
+ members.push(Object.assign(Object.assign({}, stmt), { element: stateInit }));
169
+ }
170
+ else if (name === 'getDefaultProps') {
171
+ const defaultProps = yield this.convertGetDefaultProps(method, memberIndent, ctx);
172
+ if (defaultProps)
173
+ members.push(Object.assign(Object.assign({}, stmt), { element: defaultProps }));
174
+ }
175
+ else if (LIFECYCLE_METHODS.has(name)) {
176
+ members.push(stmt);
177
+ }
178
+ else {
179
+ const arrowProp = yield this.convertToArrowProperty(method, memberIndent, ctx);
180
+ if (arrowProp) {
181
+ members.push(Object.assign(Object.assign({}, stmt), { element: arrowProp }));
182
+ }
183
+ else {
184
+ members.push(stmt);
185
+ }
186
+ }
187
+ }
188
+ else if (s.kind === javascript_1.JS.Kind.PropertyAssignment) {
189
+ const prop = s;
190
+ const keyName = this.getPropertyKeyName(prop);
191
+ if (keyName === 'propTypes' || keyName === 'contextTypes' || keyName === 'childContextTypes') {
192
+ const staticProp = yield this.convertToStaticProperty(prop, keyName, memberIndent, ctx);
193
+ if (staticProp) {
194
+ members.push(Object.assign(Object.assign({}, stmt), { element: staticProp }));
195
+ }
196
+ else {
197
+ members.push(stmt);
198
+ }
199
+ }
200
+ else if (keyName === 'displayName' || keyName === 'statics' || keyName === 'mixins') {
201
+ }
202
+ else {
203
+ members.push(stmt);
204
+ }
205
+ }
206
+ }
207
+ return members;
208
+ });
209
+ }
210
+ convertGetInitialState(method, indent, ctx) {
211
+ return __awaiter(this, void 0, void 0, function* () {
212
+ if (!method.body)
213
+ return undefined;
214
+ const stmts = method.body.statements;
215
+ if (stmts.length !== 1)
216
+ return undefined;
217
+ const firstStmt = stmts[0].element;
218
+ if (firstStmt.kind !== java_1.J.Kind.Return)
219
+ return undefined;
220
+ const returnStmt = firstStmt;
221
+ if (!returnStmt.expression)
222
+ return undefined;
223
+ const result = yield (0, javascript_1.template) `state = ${returnStmt.expression}`.apply(method, this.cursor);
224
+ if (result && indent) {
225
+ return Object.assign(Object.assign({}, result), { prefix: indent });
226
+ }
227
+ return result;
228
+ });
229
+ }
230
+ convertGetDefaultProps(method, indent, ctx) {
231
+ return __awaiter(this, void 0, void 0, function* () {
232
+ if (!method.body)
233
+ return undefined;
234
+ const stmts = method.body.statements;
235
+ if (stmts.length !== 1)
236
+ return undefined;
237
+ const firstStmt = stmts[0].element;
238
+ if (firstStmt.kind !== java_1.J.Kind.Return)
239
+ return undefined;
240
+ const returnStmt = firstStmt;
241
+ if (!returnStmt.expression)
242
+ return undefined;
243
+ const result = yield (0, javascript_1.template) `static defaultProps = ${returnStmt.expression}`.apply(method, this.cursor);
244
+ if (result && indent) {
245
+ return Object.assign(Object.assign({}, result), { prefix: indent });
246
+ }
247
+ return result;
248
+ });
249
+ }
250
+ convertToArrowProperty(method, indent, ctx) {
251
+ return __awaiter(this, void 0, void 0, function* () {
252
+ var _a, _b;
253
+ if (!method.body)
254
+ return undefined;
255
+ const name = method.name.simpleName;
256
+ const params = (_b = (_a = method.parameters) === null || _a === void 0 ? void 0 : _a.elements) !== null && _b !== void 0 ? _b : [];
257
+ let paramsSource = '';
258
+ if (params.length > 0) {
259
+ const paramStrs = yield Promise.all(params.map((p) => __awaiter(this, void 0, void 0, function* () { return (yield (0, rewrite_1.printer)(this.cursor).print(p.element)).trim(); })));
260
+ paramsSource = paramStrs.join(', ');
261
+ }
262
+ const stub = yield (0, javascript_1.template) `${(0, javascript_1.raw)(name)} = (${(0, javascript_1.raw)(paramsSource)}) => {}`.apply(method, this.cursor);
263
+ if (!stub)
264
+ return undefined;
265
+ const s = stub;
266
+ const result = Object.assign(Object.assign({}, s), { assignment: Object.assign(Object.assign({}, s.assignment), { element: Object.assign(Object.assign({}, s.assignment.element), { lambda: Object.assign(Object.assign({}, s.assignment.element.lambda), { body: method.body }) }) }) });
267
+ if (result && indent) {
268
+ return Object.assign(Object.assign({}, result), { prefix: indent });
269
+ }
270
+ return result;
271
+ });
272
+ }
273
+ convertToStaticProperty(prop, name, indent, ctx) {
274
+ return __awaiter(this, void 0, void 0, function* () {
275
+ if (!prop.initializer)
276
+ return undefined;
277
+ const result = yield (0, javascript_1.template) `static ${(0, javascript_1.raw)(name)} = ${prop.initializer}`.apply(prop, this.cursor);
278
+ if (result && indent) {
279
+ return Object.assign(Object.assign({}, result), { prefix: indent });
280
+ }
281
+ return result;
282
+ });
283
+ }
284
+ }();
285
+ });
286
+ }
287
+ }
288
+ exports.CreateClassToES6 = CreateClassToES6;
289
+ //# sourceMappingURL=create-class-to-es6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-class-to-es6.js","sourceRoot":"","sources":["../../src/refactoring/create-class-to-es6.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class CreateElementToJsx extends Recipe {
3
+ readonly name = "org.openrewrite.react.refactoring.create-element-to-jsx";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
7
+ }
8
+ //# sourceMappingURL=create-element-to-jsx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-element-to-jsx.d.ts","sourceRoot":"","sources":["../../src/refactoring/create-element-to-jsx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAW,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AA6BpF,qBAAa,kBAAmB,SAAQ,MAAM;IAC1C,QAAQ,CAAC,IAAI,6DAA6D;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAoC;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAoF;IAE1G,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAqK9D"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CreateElementToJsx = void 0;
13
+ const rewrite_1 = require("@openrewrite/rewrite");
14
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
15
+ const java_1 = require("@openrewrite/rewrite/java");
16
+ class CreateElementToJsx extends rewrite_1.Recipe {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.name = "org.openrewrite.react.refactoring.create-element-to-jsx";
20
+ this.displayName = "Convert `createElement` to JSX";
21
+ this.description = "Converts `React.createElement()` calls to JSX syntax for improved readability.";
22
+ }
23
+ editor() {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ return new class extends javascript_1.JavaScriptVisitor {
26
+ visitMethodInvocation(method, ctx) {
27
+ const _super = Object.create(null, {
28
+ visitMethodInvocation: { get: () => super.visitMethodInvocation }
29
+ });
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ let m = yield _super.visitMethodInvocation.call(this, method, ctx);
32
+ if (!this.isCreateElementCall(m))
33
+ return m;
34
+ const args = m.arguments.elements;
35
+ if (args.length === 0)
36
+ return m;
37
+ const tagName = this.getTagName(args[0].element);
38
+ if (!tagName)
39
+ return m;
40
+ const propsStr = args.length > 1
41
+ ? yield this.serializeProps(args[1].element)
42
+ : '';
43
+ const childArgs = args.length > 2
44
+ ? args.slice(2).map(a => a.element)
45
+ : [];
46
+ const childrenStr = yield this.serializeChildren(childArgs);
47
+ let jsxSource;
48
+ if (childrenStr) {
49
+ jsxSource = `<${tagName}${propsStr}>${childrenStr}</${tagName}>`;
50
+ }
51
+ else {
52
+ jsxSource = `<${tagName}${propsStr} />`;
53
+ }
54
+ return yield (0, javascript_1.template) `${(0, javascript_1.raw)(jsxSource)}`.apply(m, this.cursor);
55
+ });
56
+ }
57
+ isCreateElementCall(method) {
58
+ var _a, _b;
59
+ if (method.name.simpleName !== 'createElement')
60
+ return false;
61
+ if (((_b = (_a = method.select) === null || _a === void 0 ? void 0 : _a.element) === null || _b === void 0 ? void 0 : _b.kind) === java_1.J.Kind.Identifier) {
62
+ return method.select.element.simpleName === 'React';
63
+ }
64
+ return false;
65
+ }
66
+ getTagName(expr) {
67
+ if (expr.kind === java_1.J.Kind.Literal) {
68
+ const lit = expr;
69
+ if (typeof lit.value === 'string') {
70
+ return lit.value;
71
+ }
72
+ return undefined;
73
+ }
74
+ if (expr.kind === java_1.J.Kind.Identifier) {
75
+ return expr.simpleName;
76
+ }
77
+ if (expr.kind === java_1.J.Kind.FieldAccess) {
78
+ const fa = expr;
79
+ if (fa.target.kind === java_1.J.Kind.Identifier) {
80
+ return `${fa.target.simpleName}.${fa.name.element.simpleName}`;
81
+ }
82
+ return undefined;
83
+ }
84
+ return undefined;
85
+ }
86
+ serializeProps(propsExpr) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ if (propsExpr.kind === java_1.J.Kind.Literal) {
89
+ const lit = propsExpr;
90
+ if (lit.value === null)
91
+ return '';
92
+ }
93
+ if (propsExpr.kind === java_1.J.Kind.Identifier) {
94
+ if (propsExpr.simpleName === 'undefined')
95
+ return '';
96
+ }
97
+ if (propsExpr.kind === java_1.J.Kind.NewClass) {
98
+ const obj = propsExpr;
99
+ if (!obj.body)
100
+ return '';
101
+ const attrs = [];
102
+ for (const stmt of obj.body.statements) {
103
+ const s = stmt.element;
104
+ if (s.kind === javascript_1.JS.Kind.PropertyAssignment) {
105
+ const prop = s;
106
+ const keyExpr = prop.name.element;
107
+ let key;
108
+ if (keyExpr.kind === java_1.J.Kind.Identifier) {
109
+ key = keyExpr.simpleName;
110
+ }
111
+ if (key && prop.initializer) {
112
+ const value = prop.initializer;
113
+ if (value.kind === java_1.J.Kind.Literal) {
114
+ const lit = value;
115
+ if (typeof lit.value === 'string') {
116
+ attrs.push(`${key}="${lit.value}"`);
117
+ continue;
118
+ }
119
+ }
120
+ const valueSource = yield (0, rewrite_1.printer)(this.cursor).print(value);
121
+ attrs.push(`${key}={${valueSource.trim()}}`);
122
+ }
123
+ else if (key && !prop.initializer) {
124
+ attrs.push(key);
125
+ }
126
+ }
127
+ else if (s.kind === javascript_1.JS.Kind.Spread) {
128
+ const spread = s;
129
+ const spreadSource = yield (0, rewrite_1.printer)(this.cursor).print(spread.expression);
130
+ attrs.push(`{...${spreadSource.trim()}}`);
131
+ }
132
+ }
133
+ return attrs.length > 0 ? ' ' + attrs.join(' ') : '';
134
+ }
135
+ const source = yield (0, rewrite_1.printer)(this.cursor).print(propsExpr);
136
+ return ` {...${source.trim()}}`;
137
+ });
138
+ }
139
+ serializeChildren(children) {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ if (children.length === 0)
142
+ return '';
143
+ const parts = [];
144
+ for (const child of children) {
145
+ if (child.kind === java_1.J.Kind.Literal) {
146
+ const lit = child;
147
+ if (typeof lit.value === 'string') {
148
+ const escaped = lit.value
149
+ .replace(/&/g, '&amp;')
150
+ .replace(/</g, '&lt;')
151
+ .replace(/>/g, '&gt;');
152
+ parts.push(escaped);
153
+ continue;
154
+ }
155
+ }
156
+ const source = yield (0, rewrite_1.printer)(this.cursor).print(child);
157
+ parts.push(`{${source.trim()}}`);
158
+ }
159
+ return parts.join('');
160
+ });
161
+ }
162
+ }();
163
+ });
164
+ }
165
+ }
166
+ exports.CreateElementToJsx = CreateElementToJsx;
167
+ //# sourceMappingURL=create-element-to-jsx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-element-to-jsx.js","sourceRoot":"","sources":["../../src/refactoring/create-element-to-jsx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class ManualBindToArrow extends Recipe {
3
+ readonly name = "org.openrewrite.react.refactoring.manual-bind-to-arrow";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
7
+ }
8
+ //# sourceMappingURL=manual-bind-to-arrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual-bind-to-arrow.d.ts","sourceRoot":"","sources":["../../src/refactoring/manual-bind-to-arrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AA8B3E,qBAAa,iBAAkB,SAAQ,MAAM;IACzC,QAAQ,CAAC,IAAI,4DAA4D;IACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAqD;IACjF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA2G;IAEjI,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAuG9D"}