@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.
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +130 -0
- package/dist/index.js.map +1 -0
- package/dist/migration/change-component-prop-value.d.ts +20 -0
- package/dist/migration/change-component-prop-value.d.ts.map +1 -0
- package/dist/migration/change-component-prop-value.js +217 -0
- package/dist/migration/change-component-prop-value.js.map +1 -0
- package/dist/react-native/view-prop-types.d.ts +8 -0
- package/dist/react-native/view-prop-types.d.ts.map +1 -0
- package/dist/react-native/view-prop-types.js +65 -0
- package/dist/react-native/view-prop-types.js.map +1 -0
- package/dist/react16/error-boundaries.d.ts +8 -0
- package/dist/react16/error-boundaries.d.ts.map +1 -0
- package/dist/react16/error-boundaries.js +42 -0
- package/dist/react16/error-boundaries.js.map +1 -0
- package/dist/react16/find-dom-node.d.ts +8 -0
- package/dist/react16/find-dom-node.d.ts.map +1 -0
- package/dist/react16/find-dom-node.js +48 -0
- package/dist/react16/find-dom-node.js.map +1 -0
- package/dist/react16/react-dom-factories.d.ts +8 -0
- package/dist/react16/react-dom-factories.d.ts.map +1 -0
- package/dist/react16/react-dom-factories.js +72 -0
- package/dist/react16/react-dom-factories.js.map +1 -0
- package/dist/react16/react-prop-types.d.ts +8 -0
- package/dist/react16/react-prop-types.d.ts.map +1 -0
- package/dist/react16/react-prop-types.js +69 -0
- package/dist/react16/react-prop-types.js.map +1 -0
- package/dist/react16/react-to-react-dom.d.ts +8 -0
- package/dist/react16/react-to-react-dom.d.ts.map +1 -0
- package/dist/react16/react-to-react-dom.js +97 -0
- package/dist/react16/react-to-react-dom.js.map +1 -0
- package/dist/react16/replace-create-factory.d.ts +8 -0
- package/dist/react16/replace-create-factory.d.ts.map +1 -0
- package/dist/react16/replace-create-factory.js +69 -0
- package/dist/react16/replace-create-factory.js.map +1 -0
- package/dist/react16/upgrade-to-react-16.d.ts +8 -0
- package/dist/react16/upgrade-to-react-16.d.ts.map +1 -0
- package/dist/react16/upgrade-to-react-16.js +41 -0
- package/dist/react16/upgrade-to-react-16.js.map +1 -0
- package/dist/react17/remove-event-persist.d.ts +8 -0
- package/dist/react17/remove-event-persist.d.ts.map +1 -0
- package/dist/react17/remove-event-persist.js +114 -0
- package/dist/react17/remove-event-persist.js.map +1 -0
- package/dist/react17/rename-unsafe-lifecycles.d.ts +8 -0
- package/dist/react17/rename-unsafe-lifecycles.d.ts.map +1 -0
- package/dist/react17/rename-unsafe-lifecycles.js +48 -0
- package/dist/react17/rename-unsafe-lifecycles.js.map +1 -0
- package/dist/react17/update-react-imports.d.ts +8 -0
- package/dist/react17/update-react-imports.d.ts.map +1 -0
- package/dist/react17/update-react-imports.js +40 -0
- package/dist/react17/update-react-imports.js.map +1 -0
- package/dist/react17/upgrade-to-react-17.d.ts +8 -0
- package/dist/react17/upgrade-to-react-17.d.ts.map +1 -0
- package/dist/react17/upgrade-to-react-17.js +37 -0
- package/dist/react17/upgrade-to-react-17.js.map +1 -0
- package/dist/react18/remove-unstable-batched-updates.d.ts +8 -0
- package/dist/react18/remove-unstable-batched-updates.d.ts.map +1 -0
- package/dist/react18/remove-unstable-batched-updates.js +170 -0
- package/dist/react18/remove-unstable-batched-updates.js.map +1 -0
- package/dist/react18/replace-reactdom-render.d.ts +8 -0
- package/dist/react18/replace-reactdom-render.d.ts.map +1 -0
- package/dist/react18/replace-reactdom-render.js +55 -0
- package/dist/react18/replace-reactdom-render.js.map +1 -0
- package/dist/react18/replace-render-callback.d.ts +8 -0
- package/dist/react18/replace-render-callback.d.ts.map +1 -0
- package/dist/react18/replace-render-callback.js +60 -0
- package/dist/react18/replace-render-callback.js.map +1 -0
- package/dist/react18/replace-unmount-component-at-node.d.ts +8 -0
- package/dist/react18/replace-unmount-component-at-node.d.ts.map +1 -0
- package/dist/react18/replace-unmount-component-at-node.js +54 -0
- package/dist/react18/replace-unmount-component-at-node.js.map +1 -0
- package/dist/react18/upgrade-to-react-18.d.ts +8 -0
- package/dist/react18/upgrade-to-react-18.d.ts.map +1 -0
- package/dist/react18/upgrade-to-react-18.js +39 -0
- package/dist/react18/upgrade-to-react-18.js.map +1 -0
- package/dist/react19/deprecated-react-types.d.ts +8 -0
- package/dist/react19/deprecated-react-types.d.ts.map +1 -0
- package/dist/react19/deprecated-react-types.js +135 -0
- package/dist/react19/deprecated-react-types.js.map +1 -0
- package/dist/react19/find-context-consumer.d.ts +9 -0
- package/dist/react19/find-context-consumer.d.ts.map +1 -0
- package/dist/react19/find-context-consumer.js +128 -0
- package/dist/react19/find-context-consumer.js.map +1 -0
- package/dist/react19/find-deprecated-reactdom-apis.d.ts +9 -0
- package/dist/react19/find-deprecated-reactdom-apis.d.ts.map +1 -0
- package/dist/react19/find-deprecated-reactdom-apis.js +132 -0
- package/dist/react19/find-deprecated-reactdom-apis.js.map +1 -0
- package/dist/react19/find-element-ref.d.ts +9 -0
- package/dist/react19/find-element-ref.d.ts.map +1 -0
- package/dist/react19/find-element-ref.js +88 -0
- package/dist/react19/find-element-ref.js.map +1 -0
- package/dist/react19/find-legacy-context-api.d.ts +9 -0
- package/dist/react19/find-legacy-context-api.d.ts.map +1 -0
- package/dist/react19/find-legacy-context-api.js +163 -0
- package/dist/react19/find-legacy-context-api.js.map +1 -0
- package/dist/react19/no-implicit-ref-callback-return.d.ts +8 -0
- package/dist/react19/no-implicit-ref-callback-return.d.ts.map +1 -0
- package/dist/react19/no-implicit-ref-callback-return.js +107 -0
- package/dist/react19/no-implicit-ref-callback-return.js.map +1 -0
- package/dist/react19/remove-context-provider.d.ts +8 -0
- package/dist/react19/remove-context-provider.d.ts.map +1 -0
- package/dist/react19/remove-context-provider.js +59 -0
- package/dist/react19/remove-context-provider.js.map +1 -0
- package/dist/react19/remove-forward-ref.d.ts +8 -0
- package/dist/react19/remove-forward-ref.d.ts.map +1 -0
- package/dist/react19/remove-forward-ref.js +73 -0
- package/dist/react19/remove-forward-ref.js.map +1 -0
- package/dist/react19/remove-prop-types.d.ts +8 -0
- package/dist/react19/remove-prop-types.d.ts.map +1 -0
- package/dist/react19/remove-prop-types.js +76 -0
- package/dist/react19/remove-prop-types.js.map +1 -0
- package/dist/react19/remove-react-fc.d.ts +8 -0
- package/dist/react19/remove-react-fc.d.ts.map +1 -0
- package/dist/react19/remove-react-fc.js +149 -0
- package/dist/react19/remove-react-fc.js.map +1 -0
- package/dist/react19/replace-act-import.d.ts +9 -0
- package/dist/react19/replace-act-import.d.ts.map +1 -0
- package/dist/react19/replace-act-import.js +34 -0
- package/dist/react19/replace-act-import.js.map +1 -0
- package/dist/react19/replace-default-props.d.ts +8 -0
- package/dist/react19/replace-default-props.d.ts.map +1 -0
- package/dist/react19/replace-default-props.js +195 -0
- package/dist/react19/replace-default-props.js.map +1 -0
- package/dist/react19/replace-react-shallow-renderer.d.ts +8 -0
- package/dist/react19/replace-react-shallow-renderer.d.ts.map +1 -0
- package/dist/react19/replace-react-shallow-renderer.js +69 -0
- package/dist/react19/replace-react-shallow-renderer.js.map +1 -0
- package/dist/react19/replace-reactdom-hydrate.d.ts +8 -0
- package/dist/react19/replace-reactdom-hydrate.d.ts.map +1 -0
- package/dist/react19/replace-reactdom-hydrate.js +55 -0
- package/dist/react19/replace-reactdom-hydrate.js.map +1 -0
- package/dist/react19/replace-string-ref.d.ts +8 -0
- package/dist/react19/replace-string-ref.d.ts.map +1 -0
- package/dist/react19/replace-string-ref.js +75 -0
- package/dist/react19/replace-string-ref.js.map +1 -0
- package/dist/react19/replace-use-form-state.d.ts +8 -0
- package/dist/react19/replace-use-form-state.d.ts.map +1 -0
- package/dist/react19/replace-use-form-state.js +54 -0
- package/dist/react19/replace-use-form-state.js.map +1 -0
- package/dist/react19/upgrade-to-react-19.d.ts +8 -0
- package/dist/react19/upgrade-to-react-19.d.ts.map +1 -0
- package/dist/react19/upgrade-to-react-19.js +59 -0
- package/dist/react19/upgrade-to-react-19.js.map +1 -0
- package/dist/react19/use-context-hook.d.ts +8 -0
- package/dist/react19/use-context-hook.d.ts.map +1 -0
- package/dist/react19/use-context-hook.js +54 -0
- package/dist/react19/use-context-hook.js.map +1 -0
- package/dist/react19/use-ref-required-initial.d.ts +8 -0
- package/dist/react19/use-ref-required-initial.d.ts.map +1 -0
- package/dist/react19/use-ref-required-initial.js +74 -0
- package/dist/react19/use-ref-required-initial.js.map +1 -0
- package/dist/refactoring/class-to-functional.d.ts +8 -0
- package/dist/refactoring/class-to-functional.d.ts.map +1 -0
- package/dist/refactoring/class-to-functional.js +205 -0
- package/dist/refactoring/class-to-functional.js.map +1 -0
- package/dist/refactoring/create-class-to-es6.d.ts +8 -0
- package/dist/refactoring/create-class-to-es6.d.ts.map +1 -0
- package/dist/refactoring/create-class-to-es6.js +289 -0
- package/dist/refactoring/create-class-to-es6.js.map +1 -0
- package/dist/refactoring/create-element-to-jsx.d.ts +8 -0
- package/dist/refactoring/create-element-to-jsx.d.ts.map +1 -0
- package/dist/refactoring/create-element-to-jsx.js +167 -0
- package/dist/refactoring/create-element-to-jsx.js.map +1 -0
- package/dist/refactoring/manual-bind-to-arrow.d.ts +8 -0
- package/dist/refactoring/manual-bind-to-arrow.d.ts.map +1 -0
- package/dist/refactoring/manual-bind-to-arrow.js +134 -0
- package/dist/refactoring/manual-bind-to-arrow.js.map +1 -0
- package/dist/refactoring/pure-render-mixin.d.ts +8 -0
- package/dist/refactoring/pure-render-mixin.d.ts.map +1 -0
- package/dist/refactoring/pure-render-mixin.js +253 -0
- package/dist/refactoring/pure-render-mixin.js.map +1 -0
- package/dist/refactoring/sort-comp.d.ts +8 -0
- package/dist/refactoring/sort-comp.d.ts.map +1 -0
- package/dist/refactoring/sort-comp.js +128 -0
- package/dist/refactoring/sort-comp.js.map +1 -0
- package/dist/search/find-hook-usage.d.ts +9 -0
- package/dist/search/find-hook-usage.d.ts.map +1 -0
- package/dist/search/find-hook-usage.js +262 -0
- package/dist/search/find-hook-usage.js.map +1 -0
- package/dist/search/find-prop-usage.d.ts +15 -0
- package/dist/search/find-prop-usage.d.ts.map +1 -0
- package/dist/search/find-prop-usage.js +177 -0
- package/dist/search/find-prop-usage.js.map +1 -0
- package/dist/search/find-react-component.d.ts +15 -0
- package/dist/search/find-react-component.d.ts.map +1 -0
- package/dist/search/find-react-component.js +260 -0
- package/dist/search/find-react-component.js.map +1 -0
- package/dist/search/find-server-rendering-usage.d.ts +9 -0
- package/dist/search/find-server-rendering-usage.d.ts.map +1 -0
- package/dist/search/find-server-rendering-usage.js +131 -0
- package/dist/search/find-server-rendering-usage.js.map +1 -0
- package/dist/simplify-object-pattern-property.d.ts +8 -0
- package/dist/simplify-object-pattern-property.d.ts.map +1 -0
- package/dist/simplify-object-pattern-property.js +59 -0
- package/dist/simplify-object-pattern-property.js.map +1 -0
- package/dist/simplify-react-imports.d.ts +8 -0
- package/dist/simplify-react-imports.d.ts.map +1 -0
- package/dist/simplify-react-imports.js +199 -0
- package/dist/simplify-react-imports.js.map +1 -0
- package/package.json +39 -0
- package/src/index.ts +149 -0
- package/src/migration/change-component-prop-value.ts +268 -0
- package/src/react-native/view-prop-types.ts +63 -0
- package/src/react16/error-boundaries.ts +46 -0
- package/src/react16/find-dom-node.ts +55 -0
- package/src/react16/react-dom-factories.ts +99 -0
- package/src/react16/react-prop-types.ts +71 -0
- package/src/react16/react-to-react-dom.ts +104 -0
- package/src/react16/replace-create-factory.ts +96 -0
- package/src/react16/upgrade-to-react-16.ts +37 -0
- package/src/react17/remove-event-persist.ts +121 -0
- package/src/react17/rename-unsafe-lifecycles.ts +57 -0
- package/src/react17/update-react-imports.ts +50 -0
- package/src/react17/upgrade-to-react-17.ts +30 -0
- package/src/react18/remove-unstable-batched-updates.ts +192 -0
- package/src/react18/replace-reactdom-render.ts +68 -0
- package/src/react18/replace-render-callback.ts +66 -0
- package/src/react18/replace-unmount-component-at-node.ts +66 -0
- package/src/react18/upgrade-to-react-18.ts +33 -0
- package/src/react19/deprecated-react-types.ts +120 -0
- package/src/react19/find-context-consumer.ts +127 -0
- package/src/react19/find-deprecated-reactdom-apis.ts +125 -0
- package/src/react19/find-element-ref.ts +86 -0
- package/src/react19/find-legacy-context-api.ts +157 -0
- package/src/react19/no-implicit-ref-callback-return.ts +123 -0
- package/src/react19/remove-context-provider.ts +87 -0
- package/src/react19/remove-forward-ref.ts +69 -0
- package/src/react19/remove-prop-types.ts +86 -0
- package/src/react19/remove-react-fc.ts +247 -0
- package/src/react19/replace-act-import.ts +36 -0
- package/src/react19/replace-default-props.ts +220 -0
- package/src/react19/replace-react-shallow-renderer.ts +75 -0
- package/src/react19/replace-reactdom-hydrate.ts +67 -0
- package/src/react19/replace-string-ref.ts +89 -0
- package/src/react19/replace-use-form-state.ts +66 -0
- package/src/react19/upgrade-to-react-19.ts +66 -0
- package/src/react19/use-context-hook.ts +67 -0
- package/src/react19/use-ref-required-initial.ts +75 -0
- package/src/refactoring/class-to-functional.ts +229 -0
- package/src/refactoring/create-class-to-es6.ts +309 -0
- package/src/refactoring/create-element-to-jsx.ts +200 -0
- package/src/refactoring/manual-bind-to-arrow.ts +139 -0
- package/src/refactoring/pure-render-mixin.ts +346 -0
- package/src/refactoring/sort-comp.ts +135 -0
- package/src/search/find-hook-usage.ts +226 -0
- package/src/search/find-prop-usage.ts +176 -0
- package/src/search/find-react-component.ts +254 -0
- package/src/search/find-server-rendering-usage.ts +120 -0
- package/src/simplify-object-pattern-property.ts +71 -0
- 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":";;;;;;;;;;;;AAAA,kDAA2E;AAC3E,gEAAkE;AAClE,oDAA4C;AAE5C,MAAM,iBAAiB,GAAG;IACtB,aAAa;IACb,WAAW;IACX,cAAc;IACd,mBAAmB;IACnB,QAAQ;IACR,SAAS;IACT,cAAc;IACd,aAAa;IACb,iBAAiB;IACjB,OAAO;IACP,iBAAiB;IACjB,iBAAiB;IACjB,0BAA0B;IAC1B,oBAAoB;IACpB,2BAA2B;IAC3B,mBAAmB;IACnB,2BAA2B;IAC3B,kCAAkC;IAClC,uBAAuB;IACvB,qBAAqB;IACrB,4BAA4B;IAC5B,yBAAyB;IACzB,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;CACzB,CAAC;AAeF,MAAa,QAAS,SAAQ,gBAAM;IAApC;;QACa,SAAI,GAAG,6CAA6C,CAAC;QACrD,gBAAW,GAAW,8BAA8B,CAAC;QACrD,gBAAW,GAAW,2FAA2F,CAAC;IAsF/H,CAAC;IApFS,MAAM;;YACR,OAAO,IAAI,KAAM,SAAQ,8BAAmC;gBACzC,qBAAqB,CAAC,SAA6B,EAAE,GAAqB;;;;;wBACrF,IAAI,EAAE,GAAG,MAAM,OAAM,qBAAqB,YAAC,SAAS,EAAE,GAAG,CAAuB,CAAC;wBAEjF,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;4BAC7C,OAAO,EAAE,CAAC;wBACd,CAAC;wBAED,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;wBACjC,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;4BACpC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;4BAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;4BAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;4BACnD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;4BACnD,IAAI,MAAM,KAAK,MAAM;gCAAE,OAAO,MAAM,GAAG,MAAM,CAAC;4BAC9C,OAAO,CAAC,CAAC;wBACb,CAAC,CAAC,CAAC;wBAGH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACtD,IAAI,CAAC,OAAO;4BAAE,OAAO,EAAE,CAAC;wBAExB,OAAO,gCACA,EAAE,KACL,IAAI,kCACG,EAAE,CAAC,IAAI,KACV,UAAU,EAAE,MAAM,MAEI,CAAC;oBACnC,CAAC;iBAAA;gBAEO,aAAa,CAAC,IAAmB;oBACrC,IAAI,CAAC,IAAI;wBAAE,OAAO,EAAE,CAAC;oBACrB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACzC,OAAQ,IAA4B,CAAC,IAAI,CAAC,UAAU,CAAC;oBACzD,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC5C,MAAM,IAAI,GAAG,IAA8B,CAAC;wBAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;4BAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gCAClC,OAAQ,IAAqB,CAAC,UAAU,CAAC;4BAC7C,CAAC;wBACL,CAAC;oBACL,CAAC;oBACD,OAAO,EAAE,CAAC;gBACd,CAAC;gBAEO,QAAQ,CAAC,IAAmB;;oBAChC,IAAI,CAAC,IAAI;wBAAE,OAAO,KAAK,CAAC;oBACxB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACzC,MAAM,MAAM,GAAG,IAA2B,CAAC;wBAC3C,OAAO,MAAA,MAAA,MAAM,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,mCAAI,KAAK,CAAC;oBACxE,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC5C,MAAM,IAAI,GAAG,IAA8B,CAAC;wBAC5C,OAAO,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,mCAAI,KAAK,CAAC;oBACtE,CAAC;oBACD,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAEO,YAAY,CAAC,IAAY,EAAE,IAAmB;oBAElD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAAE,OAAO,CAAC,CAAC;oBAGlC,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACvD,IAAI,cAAc,IAAI,CAAC;wBAAE,OAAO,GAAG,GAAG,cAAc,CAAC;oBAGrD,IAAI,IAAI,KAAK,QAAQ;wBAAE,OAAO,GAAG,CAAC;oBAGlC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;wBAAE,OAAO,GAAG,CAAC;oBAGtC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;wBAAE,OAAO,GAAG,CAAC;oBAG7C,OAAO,GAAG,CAAC;gBACf,CAAC;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AAzFD,4BAyFC"}
|
|
@@ -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"}
|