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