@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,134 @@
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.ManualBindToArrow = 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 ManualBindToArrow extends rewrite_1.Recipe {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.name = "org.openrewrite.react.refactoring.manual-bind-to-arrow";
20
+ this.displayName = "Convert manual `.bind(this)` to arrow functions";
21
+ this.description = "Converts `this.method = this.method.bind(this)` in constructors to class field arrow function syntax.";
22
+ }
23
+ editor() {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ return new class extends javascript_1.JavaScriptVisitor {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.boundMethods = new Set();
29
+ }
30
+ visitClassDeclaration(classDecl, ctx) {
31
+ const _super = Object.create(null, {
32
+ visitClassDeclaration: { get: () => super.visitClassDeclaration }
33
+ });
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ this.boundMethods.clear();
36
+ yield this.findBindStatements(classDecl);
37
+ if (this.boundMethods.size === 0) {
38
+ return classDecl;
39
+ }
40
+ return yield _super.visitClassDeclaration.call(this, classDecl, ctx);
41
+ });
42
+ }
43
+ findBindStatements(classDecl) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const body = classDecl.body;
46
+ if (!body)
47
+ return;
48
+ for (const stmt of body.statements) {
49
+ const s = stmt.element;
50
+ if (!s)
51
+ continue;
52
+ if (s.kind === java_1.J.Kind.MethodDeclaration) {
53
+ const method = s;
54
+ if (method.name.simpleName === 'constructor') {
55
+ if (method.body) {
56
+ for (const bodyStmt of method.body.statements) {
57
+ const bs = bodyStmt.element;
58
+ if (!bs)
59
+ continue;
60
+ this.checkForBindStatement(bs);
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
66
+ });
67
+ }
68
+ checkForBindStatement(stmt) {
69
+ var _a;
70
+ if (stmt.kind !== java_1.J.Kind.Assignment)
71
+ return;
72
+ const assignment = stmt;
73
+ if (assignment.variable.kind !== java_1.J.Kind.FieldAccess)
74
+ return;
75
+ const lhs = assignment.variable;
76
+ if (lhs.target.kind !== java_1.J.Kind.Identifier)
77
+ return;
78
+ if (lhs.target.simpleName !== 'this')
79
+ return;
80
+ const methodName = lhs.name.element.simpleName;
81
+ const rhs = assignment.assignment.element;
82
+ if (!rhs || rhs.kind !== java_1.J.Kind.MethodInvocation)
83
+ return;
84
+ const call = rhs;
85
+ if (call.name.simpleName !== 'bind')
86
+ return;
87
+ if (!call.select)
88
+ return;
89
+ const select = (_a = call.select.element) !== null && _a !== void 0 ? _a : call.select;
90
+ if (select.kind !== java_1.J.Kind.FieldAccess)
91
+ return;
92
+ const selectFa = select;
93
+ if (selectFa.target.kind !== java_1.J.Kind.Identifier)
94
+ return;
95
+ if (selectFa.target.simpleName !== 'this')
96
+ return;
97
+ if (selectFa.name.element.simpleName !== methodName)
98
+ return;
99
+ this.boundMethods.add(methodName);
100
+ }
101
+ visitMethodDeclaration(method, ctx) {
102
+ const _super = Object.create(null, {
103
+ visitMethodDeclaration: { get: () => super.visitMethodDeclaration }
104
+ });
105
+ return __awaiter(this, void 0, void 0, function* () {
106
+ let m = yield _super.visitMethodDeclaration.call(this, method, ctx);
107
+ if (m.name.simpleName === 'constructor' && m.body && this.boundMethods.size > 0) {
108
+ const filteredStatements = m.body.statements.filter(stmt => {
109
+ const s = stmt.element;
110
+ if (!s || s.kind !== java_1.J.Kind.Assignment)
111
+ return true;
112
+ const assignment = s;
113
+ if (assignment.variable.kind !== java_1.J.Kind.FieldAccess)
114
+ return true;
115
+ const fa = assignment.variable;
116
+ if (fa.target.kind !== java_1.J.Kind.Identifier)
117
+ return true;
118
+ if (fa.target.simpleName !== 'this')
119
+ return true;
120
+ return !this.boundMethods.has(fa.name.element.simpleName);
121
+ });
122
+ if (filteredStatements.length !== m.body.statements.length) {
123
+ m = Object.assign(Object.assign({}, m), { body: Object.assign(Object.assign({}, m.body), { statements: filteredStatements }) });
124
+ }
125
+ }
126
+ return m;
127
+ });
128
+ }
129
+ }();
130
+ });
131
+ }
132
+ }
133
+ exports.ManualBindToArrow = ManualBindToArrow;
134
+ //# sourceMappingURL=manual-bind-to-arrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual-bind-to-arrow.js","sourceRoot":"","sources":["../../src/refactoring/manual-bind-to-arrow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class PureRenderMixin extends Recipe {
3
+ readonly name = "org.openrewrite.react.refactoring.pure-render-mixin";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
7
+ }
8
+ //# sourceMappingURL=pure-render-mixin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pure-render-mixin.d.ts","sourceRoot":"","sources":["../../src/refactoring/pure-render-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AA6B3E,qBAAa,eAAgB,SAAQ,MAAM;IACvC,QAAQ,CAAC,IAAI,yDAAyD;IACtE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA8B;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAoH;IAE1I,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAuT9D"}
@@ -0,0 +1,253 @@
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.PureRenderMixin = 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 PureRenderMixin extends rewrite_1.Recipe {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.name = "org.openrewrite.react.refactoring.pure-render-mixin";
20
+ this.displayName = "Remove `PureRenderMixin`";
21
+ this.description = "Removes `PureRenderMixin` from `React.createClass` mixins and adds an explicit `shouldComponentUpdate` method.";
22
+ }
23
+ editor() {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ return new class extends javascript_1.JavaScriptVisitor {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.transformed = false;
29
+ }
30
+ visitJsCompilationUnit(cu, ctx) {
31
+ const _super = Object.create(null, {
32
+ visitJsCompilationUnit: { get: () => super.visitJsCompilationUnit }
33
+ });
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ this.transformed = false;
36
+ const result = yield _super.visitJsCompilationUnit.call(this, cu, ctx);
37
+ if (this.transformed) {
38
+ (0, javascript_1.maybeRemoveImport)(this, "react-addons-pure-render-mixin", "default");
39
+ }
40
+ return result;
41
+ });
42
+ }
43
+ visitMethodInvocation(method, ctx) {
44
+ const _super = Object.create(null, {
45
+ visitMethodInvocation: { get: () => super.visitMethodInvocation }
46
+ });
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ let m = yield _super.visitMethodInvocation.call(this, method, ctx);
49
+ if (!this.isCreateClassCall(m))
50
+ return m;
51
+ const args = m.arguments.elements;
52
+ if (args.length === 0)
53
+ return m;
54
+ const specArg = args[0].element;
55
+ if (specArg.kind !== java_1.J.Kind.NewClass)
56
+ return m;
57
+ const specObj = specArg;
58
+ if (!specObj.body)
59
+ return m;
60
+ const mixinsInfo = this.findPureRenderMixin(specObj.body);
61
+ if (!mixinsInfo)
62
+ return m;
63
+ if (this.hasShouldComponentUpdate(specObj.body))
64
+ return m;
65
+ const memberIndent = this.getMemberIndent(specObj.body);
66
+ const existingMethod = this.findAnyMethod(specObj.body);
67
+ if (!existingMethod)
68
+ return m;
69
+ const returnExpr = yield (0, javascript_1.template) `React.addons.shallowCompare(this, nextProps, nextState)`.apply(specObj, this.cursor);
70
+ if (!returnExpr)
71
+ return m;
72
+ const nextPropsId = yield (0, javascript_1.template) `nextProps`.apply(specObj, this.cursor);
73
+ const nextStateId = yield (0, javascript_1.template) `nextState`.apply(specObj, this.cursor);
74
+ if (!nextPropsId || !nextStateId)
75
+ return m;
76
+ const scuMethod = this.buildMethodFromTemplate(existingMethod, 'shouldComponentUpdate', [nextPropsId, nextStateId], returnExpr);
77
+ const newStatements = this.buildNewStatements(specObj.body.statements, mixinsInfo, scuMethod, memberIndent);
78
+ this.transformed = true;
79
+ return Object.assign(Object.assign({}, m), { arguments: Object.assign(Object.assign({}, m.arguments), { elements: [
80
+ Object.assign(Object.assign({}, args[0]), { element: Object.assign(Object.assign({}, specObj), { body: Object.assign(Object.assign({}, specObj.body), { statements: newStatements }) }) }),
81
+ ...args.slice(1)
82
+ ] }) });
83
+ });
84
+ }
85
+ isCreateClassCall(method) {
86
+ var _a;
87
+ if (method.name.simpleName === 'createClass' && method.select) {
88
+ const select = (_a = method.select.element) !== null && _a !== void 0 ? _a : method.select;
89
+ if (select.kind === java_1.J.Kind.Identifier) {
90
+ return select.simpleName === 'React';
91
+ }
92
+ }
93
+ if (method.name.simpleName === 'createReactClass' && !method.select) {
94
+ return true;
95
+ }
96
+ return false;
97
+ }
98
+ findPureRenderMixin(body) {
99
+ var _a;
100
+ for (let i = 0; i < body.statements.length; i++) {
101
+ const s = body.statements[i].element;
102
+ if (s.kind !== javascript_1.JS.Kind.PropertyAssignment)
103
+ continue;
104
+ const prop = s;
105
+ const keyExpr = prop.name.element;
106
+ if (keyExpr.kind !== java_1.J.Kind.Identifier)
107
+ continue;
108
+ if (keyExpr.simpleName !== 'mixins')
109
+ continue;
110
+ if (!prop.initializer)
111
+ continue;
112
+ const init = prop.initializer;
113
+ if (init.kind !== java_1.J.Kind.NewArray)
114
+ continue;
115
+ const arr = init;
116
+ if (!arr.initializer)
117
+ continue;
118
+ const elements = (_a = arr.initializer.elements) !== null && _a !== void 0 ? _a : [];
119
+ const hasPRM = elements.some((el) => {
120
+ var _a;
121
+ const elem = (_a = el.element) !== null && _a !== void 0 ? _a : el;
122
+ return elem.kind === java_1.J.Kind.Identifier &&
123
+ elem.simpleName === 'PureRenderMixin';
124
+ });
125
+ if (hasPRM) {
126
+ return {
127
+ stmtIndex: i,
128
+ isOnlyMixin: elements.length === 1
129
+ };
130
+ }
131
+ }
132
+ return undefined;
133
+ }
134
+ hasShouldComponentUpdate(body) {
135
+ return body.statements.some(stmt => {
136
+ const s = stmt.element;
137
+ if (s.kind === java_1.J.Kind.MethodDeclaration) {
138
+ return s.name.simpleName === 'shouldComponentUpdate';
139
+ }
140
+ return false;
141
+ });
142
+ }
143
+ findAnyMethod(body) {
144
+ var _a;
145
+ for (const stmt of body.statements) {
146
+ if (((_a = stmt.element) === null || _a === void 0 ? void 0 : _a.kind) === java_1.J.Kind.MethodDeclaration) {
147
+ return stmt.element;
148
+ }
149
+ }
150
+ return undefined;
151
+ }
152
+ buildMethodFromTemplate(existingMethod, name, params, returnExpr) {
153
+ var _a, _b, _c, _d, _e, _f;
154
+ const nameId = Object.assign(Object.assign({}, existingMethod.name), { simpleName: name });
155
+ const emptySpace = { kind: 'org.openrewrite.java.tree.Space', whitespace: '', comments: [] };
156
+ const singleSpace = { kind: 'org.openrewrite.java.tree.Space', whitespace: ' ', comments: [] };
157
+ const emptyMarkers = existingMethod.markers;
158
+ const paramElements = params.map((param, i) => ({
159
+ kind: 'org.openrewrite.java.tree.JRightPadded',
160
+ element: i > 0 ? Object.assign(Object.assign({}, param), { prefix: singleSpace }) : param,
161
+ after: emptySpace,
162
+ markers: emptyMarkers,
163
+ }));
164
+ const bodyPrefix = (_b = (_a = existingMethod.body) === null || _a === void 0 ? void 0 : _a.prefix) !== null && _b !== void 0 ? _b : existingMethod.prefix;
165
+ const returnExprWithSpace = Object.assign(Object.assign({}, returnExpr), { prefix: singleSpace });
166
+ const returnStmt = {
167
+ kind: java_1.J.Kind.Return,
168
+ id: returnExpr.id,
169
+ prefix: {
170
+ kind: 'org.openrewrite.java.tree.Space',
171
+ whitespace: '\n ',
172
+ comments: []
173
+ },
174
+ markers: emptyMarkers,
175
+ expression: returnExprWithSpace,
176
+ };
177
+ const body = {
178
+ kind: java_1.J.Kind.Block,
179
+ id: (_d = (_c = existingMethod.body) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : existingMethod.id,
180
+ prefix: bodyPrefix,
181
+ markers: existingMethod.markers,
182
+ static: (_f = (_e = existingMethod.body) === null || _e === void 0 ? void 0 : _e.static) !== null && _f !== void 0 ? _f : {
183
+ kind: 'org.openrewrite.java.tree.JRightPadded',
184
+ element: false,
185
+ after: { kind: 'org.openrewrite.java.tree.Space', whitespace: '', comments: [] },
186
+ markers: existingMethod.markers,
187
+ },
188
+ statements: [{
189
+ kind: 'org.openrewrite.java.tree.JRightPadded',
190
+ element: returnStmt,
191
+ after: { kind: 'org.openrewrite.java.tree.Space', whitespace: '', comments: [] },
192
+ markers: existingMethod.markers,
193
+ }],
194
+ end: {
195
+ kind: 'org.openrewrite.java.tree.Space',
196
+ whitespace: '\n ',
197
+ comments: []
198
+ },
199
+ };
200
+ const parameters = Object.assign(Object.assign({}, existingMethod.parameters), { elements: paramElements });
201
+ return Object.assign(Object.assign({}, existingMethod), { name: nameId, parameters: parameters, body: body });
202
+ }
203
+ getMemberIndent(body) {
204
+ var _a;
205
+ for (const stmt of body.statements) {
206
+ if ((_a = stmt.element) === null || _a === void 0 ? void 0 : _a.prefix)
207
+ return stmt.element.prefix;
208
+ }
209
+ return undefined;
210
+ }
211
+ buildNewStatements(statements, mixinsInfo, scuMethod, indent) {
212
+ const result = [];
213
+ let scuInserted = false;
214
+ for (let i = 0; i < statements.length; i++) {
215
+ if (i === mixinsInfo.stmtIndex) {
216
+ if (mixinsInfo.isOnlyMixin) {
217
+ continue;
218
+ }
219
+ else {
220
+ const stmt = statements[i];
221
+ const prop = stmt.element;
222
+ const arr = prop.initializer;
223
+ const filteredElements = arr.initializer.elements.filter((el) => {
224
+ var _a;
225
+ const elem = (_a = el.element) !== null && _a !== void 0 ? _a : el;
226
+ return !(elem.kind === java_1.J.Kind.Identifier &&
227
+ elem.simpleName === 'PureRenderMixin');
228
+ });
229
+ result.push(Object.assign(Object.assign({}, stmt), { element: Object.assign(Object.assign({}, prop), { initializer: Object.assign(Object.assign({}, arr), { initializer: Object.assign(Object.assign({}, arr.initializer), { elements: filteredElements }) }) }) }));
230
+ continue;
231
+ }
232
+ }
233
+ const s = statements[i].element;
234
+ if (!scuInserted && s.kind === java_1.J.Kind.MethodDeclaration &&
235
+ s.name.simpleName === 'render') {
236
+ const scuStmt = Object.assign(Object.assign({}, statements[i]), { element: indent ? Object.assign(Object.assign({}, scuMethod), { prefix: indent }) : scuMethod });
237
+ result.push(scuStmt);
238
+ scuInserted = true;
239
+ }
240
+ result.push(statements[i]);
241
+ }
242
+ if (!scuInserted) {
243
+ const lastStmt = statements[statements.length - 1];
244
+ result.push(Object.assign(Object.assign({}, lastStmt), { element: indent ? Object.assign(Object.assign({}, scuMethod), { prefix: indent }) : scuMethod }));
245
+ }
246
+ return result;
247
+ }
248
+ }();
249
+ });
250
+ }
251
+ }
252
+ exports.PureRenderMixin = PureRenderMixin;
253
+ //# sourceMappingURL=pure-render-mixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pure-render-mixin.js","sourceRoot":"","sources":["../../src/refactoring/pure-render-mixin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class SortComp extends Recipe {
3
+ readonly name = "org.openrewrite.react.refactoring.sort-comp";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
7
+ }
8
+ //# sourceMappingURL=sort-comp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-comp.d.ts","sourceRoot":"","sources":["../../src/refactoring/sort-comp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AA6C3E,qBAAa,QAAS,SAAQ,MAAM;IAChC,QAAQ,CAAC,IAAI,iDAAiD;IAC9D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAkC;IAC9D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA+F;IAErH,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAoF9D"}
@@ -0,0 +1,128 @@
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.SortComp = 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 = [
17
+ 'displayName',
18
+ 'propTypes',
19
+ 'contextTypes',
20
+ 'childContextTypes',
21
+ 'mixins',
22
+ 'statics',
23
+ 'defaultProps',
24
+ 'constructor',
25
+ 'getDefaultProps',
26
+ 'state',
27
+ 'getInitialState',
28
+ 'getChildContext',
29
+ 'getDerivedStateFromProps',
30
+ 'componentWillMount',
31
+ 'UNSAFE_componentWillMount',
32
+ 'componentDidMount',
33
+ 'componentWillReceiveProps',
34
+ 'UNSAFE_componentWillReceiveProps',
35
+ 'shouldComponentUpdate',
36
+ 'componentWillUpdate',
37
+ 'UNSAFE_componentWillUpdate',
38
+ 'getSnapshotBeforeUpdate',
39
+ 'componentDidUpdate',
40
+ 'componentDidCatch',
41
+ 'componentWillUnmount',
42
+ ];
43
+ class SortComp extends rewrite_1.Recipe {
44
+ constructor() {
45
+ super(...arguments);
46
+ this.name = "org.openrewrite.react.refactoring.sort-comp";
47
+ this.displayName = "Sort React component methods";
48
+ this.description = "Reorders React component methods to follow the recommended lifecycle ordering convention.";
49
+ }
50
+ editor() {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ return new class extends javascript_1.JavaScriptVisitor {
53
+ visitClassDeclaration(classDecl, ctx) {
54
+ const _super = Object.create(null, {
55
+ visitClassDeclaration: { get: () => super.visitClassDeclaration }
56
+ });
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ let cd = yield _super.visitClassDeclaration.call(this, classDecl, ctx);
59
+ if (!cd.body || cd.body.statements.length <= 1) {
60
+ return cd;
61
+ }
62
+ const stmts = cd.body.statements;
63
+ const sorted = [...stmts].sort((a, b) => {
64
+ const nameA = this.getMethodName(a.element);
65
+ const nameB = this.getMethodName(b.element);
66
+ const orderA = this.getSortOrder(nameA, a.element);
67
+ const orderB = this.getSortOrder(nameB, b.element);
68
+ if (orderA !== orderB)
69
+ return orderA - orderB;
70
+ return 0;
71
+ });
72
+ const changed = sorted.some((s, i) => s !== stmts[i]);
73
+ if (!changed)
74
+ return cd;
75
+ return Object.assign(Object.assign({}, cd), { body: Object.assign(Object.assign({}, cd.body), { statements: sorted }) });
76
+ });
77
+ }
78
+ getMethodName(node) {
79
+ if (!node)
80
+ return '';
81
+ if (node.kind === java_1.J.Kind.MethodDeclaration) {
82
+ return node.name.simpleName;
83
+ }
84
+ if (node.kind === java_1.J.Kind.VariableDeclarations) {
85
+ const vars = node;
86
+ if (vars.variables.length > 0) {
87
+ const name = vars.variables[0].element.name;
88
+ if (name.kind === java_1.J.Kind.Identifier) {
89
+ return name.simpleName;
90
+ }
91
+ }
92
+ }
93
+ return '';
94
+ }
95
+ isStatic(node) {
96
+ var _a, _b, _c, _d;
97
+ if (!node)
98
+ return false;
99
+ if (node.kind === java_1.J.Kind.MethodDeclaration) {
100
+ const method = node;
101
+ return (_b = (_a = method.modifiers) === null || _a === void 0 ? void 0 : _a.some(m => m.keyword === 'static')) !== null && _b !== void 0 ? _b : false;
102
+ }
103
+ if (node.kind === java_1.J.Kind.VariableDeclarations) {
104
+ const vars = node;
105
+ return (_d = (_c = vars.modifiers) === null || _c === void 0 ? void 0 : _c.some(m => m.keyword === 'static')) !== null && _d !== void 0 ? _d : false;
106
+ }
107
+ return false;
108
+ }
109
+ getSortOrder(name, node) {
110
+ if (this.isStatic(node))
111
+ return 0;
112
+ const lifecycleIndex = LIFECYCLE_METHODS.indexOf(name);
113
+ if (lifecycleIndex >= 0)
114
+ return 100 + lifecycleIndex;
115
+ if (name === 'render')
116
+ return 500;
117
+ if (/^on[A-Z]/.test(name))
118
+ return 200;
119
+ if (/^(get|set)[A-Z]/.test(name))
120
+ return 300;
121
+ return 400;
122
+ }
123
+ }();
124
+ });
125
+ }
126
+ }
127
+ exports.SortComp = SortComp;
128
+ //# sourceMappingURL=sort-comp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-comp.js","sourceRoot":"","sources":["../../src/refactoring/sort-comp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
2
+ export declare class FindHookUsage extends Recipe {
3
+ readonly name = "org.openrewrite.react.search.find-hook-usage";
4
+ readonly displayName: string;
5
+ readonly description: string;
6
+ private dataTable;
7
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
8
+ }
9
+ //# sourceMappingURL=find-hook-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-hook-usage.d.ts","sourceRoot":"","sources":["../../src/search/find-hook-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,gBAAgB,EAAqB,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AA2DjH,qBAAa,aAAc,SAAQ,MAAM;IACrC,QAAQ,CAAC,IAAI,kDAAkD;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA2B;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAA6G;IAEzI,OAAO,CAAC,SAAS,CAKf;IAEI,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA0J9D"}