@openrewrite/rewrite 8.75.3 → 8.75.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/javascript/recipes/index.d.ts +1 -0
- package/dist/javascript/recipes/index.d.ts.map +1 -1
- package/dist/javascript/recipes/index.js +1 -0
- package/dist/javascript/recipes/index.js.map +1 -1
- package/dist/javascript/recipes/remove-dependency.d.ts +29 -0
- package/dist/javascript/recipes/remove-dependency.d.ts.map +1 -0
- package/dist/javascript/recipes/remove-dependency.js +261 -0
- package/dist/javascript/recipes/remove-dependency.js.map +1 -0
- package/dist/rewrite-javascript-version.txt +1 -0
- package/dist/rpc/request/prepare-recipe.d.ts +1 -0
- package/dist/rpc/request/prepare-recipe.d.ts.map +1 -1
- package/dist/rpc/request/prepare-recipe.js +18 -9
- package/dist/rpc/request/prepare-recipe.js.map +1 -1
- package/dist/rpc/server.js +0 -0
- package/dist/test/rewrite-test.d.ts.map +1 -1
- package/dist/test/rewrite-test.js +5 -4
- package/dist/test/rewrite-test.js.map +1 -1
- package/package.json +7 -11
- package/src/javascript/recipes/index.ts +1 -0
- package/src/javascript/recipes/remove-dependency.ts +345 -0
- package/src/rpc/request/prepare-recipe.ts +20 -9
- package/src/rpc/server.ts +0 -0
- package/src/test/rewrite-test.ts +1 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from "./add-dependency";
|
|
2
2
|
export * from "./async-callback-in-sync-array-method";
|
|
3
3
|
export * from "./auto-format";
|
|
4
|
+
export * from "./remove-dependency";
|
|
4
5
|
export * from "./upgrade-dependency-version";
|
|
5
6
|
export * from "./upgrade-transitive-dependency-version";
|
|
6
7
|
export * from "./order-imports";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/javascript/recipes/index.ts"],"names":[],"mappings":"AAgBA,cAAc,kBAAkB,CAAC;AACjC,cAAc,uCAAuC,CAAC;AACtD,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/javascript/recipes/index.ts"],"names":[],"mappings":"AAgBA,cAAc,kBAAkB,CAAC;AACjC,cAAc,uCAAuC,CAAC;AACtD,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
|
|
@@ -32,6 +32,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
32
32
|
__exportStar(require("./add-dependency"), exports);
|
|
33
33
|
__exportStar(require("./async-callback-in-sync-array-method"), exports);
|
|
34
34
|
__exportStar(require("./auto-format"), exports);
|
|
35
|
+
__exportStar(require("./remove-dependency"), exports);
|
|
35
36
|
__exportStar(require("./upgrade-dependency-version"), exports);
|
|
36
37
|
__exportStar(require("./upgrade-transitive-dependency-version"), exports);
|
|
37
38
|
__exportStar(require("./order-imports"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/javascript/recipes/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;AAEH,mDAAiC;AACjC,wEAAsD;AACtD,gDAA8B;AAC9B,+DAA6C;AAC7C,0EAAwD;AACxD,kDAAgC;AAChC,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/javascript/recipes/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;AAEH,mDAAiC;AACjC,wEAAsD;AACtD,gDAA8B;AAC9B,sDAAoC;AACpC,+DAA6C;AAC7C,0EAAwD;AACxD,kDAAgC;AAChC,kDAAgC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ScanningRecipe } from "../../recipe";
|
|
2
|
+
import { ExecutionContext } from "../../execution";
|
|
3
|
+
import { TreeVisitor } from "../../visitor";
|
|
4
|
+
import { DependencyScope, PackageManager } from "../node-resolution-result";
|
|
5
|
+
import { DependencyRecipeAccumulator } from "../package-manager";
|
|
6
|
+
interface ProjectUpdateInfo {
|
|
7
|
+
packageJsonPath: string;
|
|
8
|
+
originalPackageJson: string;
|
|
9
|
+
dependencyScopes: DependencyScope[];
|
|
10
|
+
packageManager: PackageManager;
|
|
11
|
+
configFiles?: Record<string, string>;
|
|
12
|
+
}
|
|
13
|
+
interface Accumulator extends DependencyRecipeAccumulator<ProjectUpdateInfo> {
|
|
14
|
+
originalLockFiles: Map<string, string>;
|
|
15
|
+
}
|
|
16
|
+
export declare class RemoveDependency extends ScanningRecipe<Accumulator> {
|
|
17
|
+
readonly name = "org.openrewrite.javascript.dependencies.remove-dependency";
|
|
18
|
+
readonly displayName = "Remove npm dependency";
|
|
19
|
+
readonly description = "Removes a dependency from `package.json` and updates the lock file by running the package manager.";
|
|
20
|
+
packageName: string;
|
|
21
|
+
scope?: DependencyScope;
|
|
22
|
+
initialValue(_ctx: ExecutionContext): Accumulator;
|
|
23
|
+
scanner(acc: Accumulator): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
24
|
+
editorWithData(acc: Accumulator): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
25
|
+
private runPackageManagerInstall;
|
|
26
|
+
private createModifiedPackageJson;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=remove-dependency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-dependency.d.ts","sourceRoot":"","sources":["../../../src/javascript/recipes/remove-dependency.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAS,cAAc,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAK1C,OAAO,EAEH,eAAe,EAEf,cAAc,EAEjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAGH,2BAA2B,EAQ9B,MAAM,oBAAoB,CAAC;AAG5B,UAAU,iBAAiB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,UAAU,WAAY,SAAQ,2BAA2B,CAAC,iBAAiB,CAAC;IACxE,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,qBAAa,gBAAiB,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC7D,QAAQ,CAAC,IAAI,+DAA+D;IAC5E,QAAQ,CAAC,WAAW,2BAA2B;IAC/C,QAAQ,CAAC,WAAW,wGAAwG;IAO5H,WAAW,EAAG,MAAM,CAAC;IAQrB,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW;IAO3C,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAsFtE,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;YAqDrE,wBAAwB;IA8BtC,OAAO,CAAC,yBAAyB;CAkBpC"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2026 the original author or authors.
|
|
4
|
+
* <p>
|
|
5
|
+
* Licensed under the Moderne Source Available License (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
* <p>
|
|
9
|
+
* https://docs.moderne.io/licensing/moderne-source-available-license
|
|
10
|
+
* <p>
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
34
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
35
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
36
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
37
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
38
|
+
};
|
|
39
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
40
|
+
var ownKeys = function(o) {
|
|
41
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
42
|
+
var ar = [];
|
|
43
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
44
|
+
return ar;
|
|
45
|
+
};
|
|
46
|
+
return ownKeys(o);
|
|
47
|
+
};
|
|
48
|
+
return function (mod) {
|
|
49
|
+
if (mod && mod.__esModule) return mod;
|
|
50
|
+
var result = {};
|
|
51
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
52
|
+
__setModuleDefault(result, mod);
|
|
53
|
+
return result;
|
|
54
|
+
};
|
|
55
|
+
})();
|
|
56
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
|
+
exports.RemoveDependency = void 0;
|
|
58
|
+
const recipe_1 = require("../../recipe");
|
|
59
|
+
const visitor_1 = require("../../visitor");
|
|
60
|
+
const json_1 = require("../../json");
|
|
61
|
+
const yaml_1 = require("../../yaml");
|
|
62
|
+
const text_1 = require("../../text");
|
|
63
|
+
const node_resolution_result_1 = require("../node-resolution-result");
|
|
64
|
+
const markers_1 = require("../../markers");
|
|
65
|
+
const print_1 = require("../../print");
|
|
66
|
+
const package_manager_1 = require("../package-manager");
|
|
67
|
+
const path = __importStar(require("path"));
|
|
68
|
+
class RemoveDependency extends recipe_1.ScanningRecipe {
|
|
69
|
+
constructor() {
|
|
70
|
+
super(...arguments);
|
|
71
|
+
this.name = "org.openrewrite.javascript.dependencies.remove-dependency";
|
|
72
|
+
this.displayName = "Remove npm dependency";
|
|
73
|
+
this.description = "Removes a dependency from `package.json` and updates the lock file by running the package manager.";
|
|
74
|
+
}
|
|
75
|
+
initialValue(_ctx) {
|
|
76
|
+
return Object.assign(Object.assign({}, (0, package_manager_1.createDependencyRecipeAccumulator)()), { originalLockFiles: new Map() });
|
|
77
|
+
}
|
|
78
|
+
async scanner(acc) {
|
|
79
|
+
const recipe = this;
|
|
80
|
+
const LOCK_FILE_NAMES = (0, package_manager_1.getAllLockFileNames)();
|
|
81
|
+
return new class extends visitor_1.TreeVisitor {
|
|
82
|
+
async accept(tree, ctx) {
|
|
83
|
+
if ((0, json_1.isJson)(tree) && tree.kind === json_1.Json.Kind.Document) {
|
|
84
|
+
return this.handleJsonDocument(tree, ctx);
|
|
85
|
+
}
|
|
86
|
+
if ((0, yaml_1.isYaml)(tree) && (0, yaml_1.isDocuments)(tree)) {
|
|
87
|
+
return this.handleYamlDocument(tree, ctx);
|
|
88
|
+
}
|
|
89
|
+
if ((0, text_1.isPlainText)(tree)) {
|
|
90
|
+
return this.handlePlainTextDocument(tree, ctx);
|
|
91
|
+
}
|
|
92
|
+
return tree;
|
|
93
|
+
}
|
|
94
|
+
async handleJsonDocument(doc, _ctx) {
|
|
95
|
+
var _a;
|
|
96
|
+
const basename = path.basename(doc.sourcePath);
|
|
97
|
+
if (LOCK_FILE_NAMES.includes(basename)) {
|
|
98
|
+
acc.originalLockFiles.set(doc.sourcePath, await print_1.TreePrinters.print(doc));
|
|
99
|
+
return doc;
|
|
100
|
+
}
|
|
101
|
+
if (!doc.sourcePath.endsWith('package.json')) {
|
|
102
|
+
return doc;
|
|
103
|
+
}
|
|
104
|
+
const marker = (0, node_resolution_result_1.findNodeResolutionResult)(doc);
|
|
105
|
+
if (!marker) {
|
|
106
|
+
return doc;
|
|
107
|
+
}
|
|
108
|
+
const scopesToCheck = recipe.scope ? [recipe.scope] : node_resolution_result_1.allDependencyScopes;
|
|
109
|
+
const foundScopes = [];
|
|
110
|
+
for (const scope of scopesToCheck) {
|
|
111
|
+
const deps = marker[scope];
|
|
112
|
+
if (deps === null || deps === void 0 ? void 0 : deps.some(d => d.name === recipe.packageName)) {
|
|
113
|
+
foundScopes.push(scope);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (foundScopes.length === 0) {
|
|
117
|
+
return doc;
|
|
118
|
+
}
|
|
119
|
+
const pm = (_a = marker.packageManager) !== null && _a !== void 0 ? _a : node_resolution_result_1.PackageManager.Npm;
|
|
120
|
+
const configFiles = {};
|
|
121
|
+
const npmrcContent = (0, node_resolution_result_1.serializeNpmrcConfigs)(marker.npmrcConfigs);
|
|
122
|
+
if (npmrcContent) {
|
|
123
|
+
configFiles['.npmrc'] = npmrcContent;
|
|
124
|
+
}
|
|
125
|
+
acc.projectsToUpdate.set(doc.sourcePath, {
|
|
126
|
+
packageJsonPath: doc.sourcePath,
|
|
127
|
+
originalPackageJson: await print_1.TreePrinters.print(doc),
|
|
128
|
+
dependencyScopes: foundScopes,
|
|
129
|
+
packageManager: pm,
|
|
130
|
+
configFiles: Object.keys(configFiles).length > 0 ? configFiles : undefined
|
|
131
|
+
});
|
|
132
|
+
return doc;
|
|
133
|
+
}
|
|
134
|
+
async handleYamlDocument(docs, _ctx) {
|
|
135
|
+
const basename = path.basename(docs.sourcePath);
|
|
136
|
+
if (LOCK_FILE_NAMES.includes(basename)) {
|
|
137
|
+
acc.originalLockFiles.set(docs.sourcePath, await print_1.TreePrinters.print(docs));
|
|
138
|
+
}
|
|
139
|
+
return docs;
|
|
140
|
+
}
|
|
141
|
+
async handlePlainTextDocument(text, _ctx) {
|
|
142
|
+
const basename = path.basename(text.sourcePath);
|
|
143
|
+
if (LOCK_FILE_NAMES.includes(basename)) {
|
|
144
|
+
acc.originalLockFiles.set(text.sourcePath, await print_1.TreePrinters.print(text));
|
|
145
|
+
}
|
|
146
|
+
return text;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
async editorWithData(acc) {
|
|
151
|
+
const recipe = this;
|
|
152
|
+
const jsonEditor = new class extends json_1.JsonVisitor {
|
|
153
|
+
async visitDocument(doc, ctx) {
|
|
154
|
+
const sourcePath = doc.sourcePath;
|
|
155
|
+
if (sourcePath.endsWith('package.json')) {
|
|
156
|
+
const updateInfo = acc.projectsToUpdate.get(sourcePath);
|
|
157
|
+
if (!updateInfo) {
|
|
158
|
+
return doc;
|
|
159
|
+
}
|
|
160
|
+
const failureMessage = await (0, package_manager_1.runInstallIfNeeded)(sourcePath, acc, () => recipe.runPackageManagerInstall(acc, updateInfo, ctx));
|
|
161
|
+
if (failureMessage) {
|
|
162
|
+
return (0, markers_1.markupWarn)(doc, `Failed to remove ${recipe.packageName}`, failureMessage);
|
|
163
|
+
}
|
|
164
|
+
const modifiedDoc = removeDependencyFromJson(doc, recipe.packageName, updateInfo.dependencyScopes);
|
|
165
|
+
return (0, package_manager_1.updateNodeResolutionMarker)(modifiedDoc, updateInfo, acc);
|
|
166
|
+
}
|
|
167
|
+
const lockFileName = path.basename(sourcePath);
|
|
168
|
+
if ((0, package_manager_1.getAllLockFileNames)().includes(lockFileName)) {
|
|
169
|
+
const updatedLockContent = acc.updatedLockFiles.get(sourcePath);
|
|
170
|
+
if (updatedLockContent) {
|
|
171
|
+
const parsed = await (0, package_manager_1.parseLockFileContent)(updatedLockContent, sourcePath, lockFileName);
|
|
172
|
+
return Object.assign(Object.assign({}, doc), { value: parsed.value, eof: parsed.eof });
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return doc;
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
return (0, package_manager_1.createLockFileEditor)(jsonEditor, acc);
|
|
179
|
+
}
|
|
180
|
+
async runPackageManagerInstall(acc, updateInfo, _ctx) {
|
|
181
|
+
const modifiedPackageJson = this.createModifiedPackageJson(updateInfo.originalPackageJson, updateInfo.dependencyScopes);
|
|
182
|
+
const lockFileName = (0, package_manager_1.getLockFileName)(updateInfo.packageManager);
|
|
183
|
+
const packageJsonDir = path.dirname(updateInfo.packageJsonPath);
|
|
184
|
+
const lockFilePath = packageJsonDir === '.'
|
|
185
|
+
? lockFileName
|
|
186
|
+
: path.join(packageJsonDir, lockFileName);
|
|
187
|
+
const originalLockFileContent = acc.originalLockFiles.get(lockFilePath);
|
|
188
|
+
const result = await (0, package_manager_1.runInstallInTempDir)(updateInfo.packageManager, modifiedPackageJson, {
|
|
189
|
+
originalLockFileContent,
|
|
190
|
+
configFiles: updateInfo.configFiles
|
|
191
|
+
});
|
|
192
|
+
(0, package_manager_1.storeInstallResult)(result, acc, updateInfo, modifiedPackageJson);
|
|
193
|
+
}
|
|
194
|
+
createModifiedPackageJson(originalContent, scopes) {
|
|
195
|
+
const packageJson = JSON.parse(originalContent);
|
|
196
|
+
for (const scope of scopes) {
|
|
197
|
+
if (packageJson[scope] && packageJson[scope][this.packageName]) {
|
|
198
|
+
delete packageJson[scope][this.packageName];
|
|
199
|
+
if (Object.keys(packageJson[scope]).length === 0) {
|
|
200
|
+
delete packageJson[scope];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return JSON.stringify(packageJson, null, 2);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
exports.RemoveDependency = RemoveDependency;
|
|
208
|
+
__decorate([
|
|
209
|
+
(0, recipe_1.Option)({
|
|
210
|
+
displayName: "Package name",
|
|
211
|
+
description: "The name of the npm package to remove (e.g., `lodash`, `@types/node`)",
|
|
212
|
+
example: "lodash"
|
|
213
|
+
})
|
|
214
|
+
], RemoveDependency.prototype, "packageName", void 0);
|
|
215
|
+
__decorate([
|
|
216
|
+
(0, recipe_1.Option)({
|
|
217
|
+
displayName: "Scope",
|
|
218
|
+
description: "The dependency scope to remove from. If not specified, the dependency is removed from all scopes where it is found.",
|
|
219
|
+
example: "dependencies",
|
|
220
|
+
required: false
|
|
221
|
+
})
|
|
222
|
+
], RemoveDependency.prototype, "scope", void 0);
|
|
223
|
+
function removeDependencyFromJson(doc, packageName, scopes) {
|
|
224
|
+
if (!(0, json_1.isObject)(doc.value)) {
|
|
225
|
+
return doc;
|
|
226
|
+
}
|
|
227
|
+
const targetScopes = new Set(scopes);
|
|
228
|
+
const rootObj = doc.value;
|
|
229
|
+
let changed = false;
|
|
230
|
+
const result = [];
|
|
231
|
+
for (const rp of rootObj.members) {
|
|
232
|
+
const member = rp.element;
|
|
233
|
+
const keyName = (0, json_1.getMemberKeyName)(member);
|
|
234
|
+
if (!keyName || !targetScopes.has(keyName) || !(0, json_1.isObject)(member.value)) {
|
|
235
|
+
result.push(rp);
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
const scopeObj = member.value;
|
|
239
|
+
const filtered = scopeObj.members.filter(depRp => (0, json_1.getMemberKeyName)(depRp.element) !== packageName);
|
|
240
|
+
if (filtered.length === scopeObj.members.length) {
|
|
241
|
+
result.push(rp);
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
changed = true;
|
|
245
|
+
if (filtered.length === 0) {
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
const lastOriginalAfter = scopeObj.members[scopeObj.members.length - 1].after;
|
|
249
|
+
filtered[filtered.length - 1] = Object.assign(Object.assign({}, filtered[filtered.length - 1]), { after: lastOriginalAfter });
|
|
250
|
+
result.push(Object.assign(Object.assign({}, rp), { element: Object.assign(Object.assign({}, member), { value: Object.assign(Object.assign({}, scopeObj), { members: filtered }) }) }));
|
|
251
|
+
}
|
|
252
|
+
if (!changed) {
|
|
253
|
+
return doc;
|
|
254
|
+
}
|
|
255
|
+
if (result.length > 0 && result.length < rootObj.members.length) {
|
|
256
|
+
const originalLastAfter = rootObj.members[rootObj.members.length - 1].after;
|
|
257
|
+
result[result.length - 1] = Object.assign(Object.assign({}, result[result.length - 1]), { after: originalLastAfter });
|
|
258
|
+
}
|
|
259
|
+
return Object.assign(Object.assign({}, doc), { value: Object.assign(Object.assign({}, rootObj), { members: result }) });
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=remove-dependency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-dependency.js","sourceRoot":"","sources":["../../../src/javascript/recipes/remove-dependency.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAoD;AAEpD,2CAA0C;AAE1C,qCAAiF;AACjF,qCAAqD;AACrD,qCAAkD;AAClD,sEAMmC;AACnC,2CAAyC;AACzC,uCAAyC;AACzC,wDAW4B;AAC5B,2CAA6B;AAc7B,MAAa,gBAAiB,SAAQ,uBAA2B;IAAjE;;QACa,SAAI,GAAG,2DAA2D,CAAC;QACnE,gBAAW,GAAG,uBAAuB,CAAC;QACtC,gBAAW,GAAG,oGAAoG,CAAC;IAmNhI,CAAC;IAlMG,YAAY,CAAC,IAAsB;QAC/B,uCACO,IAAA,mDAAiC,GAAqB,KACzD,iBAAiB,EAAE,IAAI,GAAG,EAAE,IAC9B;IACN,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAgB;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC;QACpB,MAAM,eAAe,GAAG,IAAA,qCAAmB,GAAE,CAAC;QAE9C,OAAO,IAAI,KAAM,SAAQ,qBAAmC;YAC9C,KAAK,CAAC,MAAM,CAAC,IAAU,EAAE,GAAqB;gBACpD,IAAI,IAAA,aAAM,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnD,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAqB,EAAE,GAAG,CAAC,CAAC;gBAC/D,CAAC;gBACD,IAAI,IAAA,aAAM,EAAC,IAAI,CAAC,IAAI,IAAA,kBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,IAAA,kBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;oBACpB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAiB,EAAE,GAAG,CAAC,CAAC;gBAChE,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YAEO,KAAK,CAAC,kBAAkB,CAAC,GAAkB,EAAE,IAAsB;;gBACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAE/C,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,oBAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;oBACzE,OAAO,GAAG,CAAC;gBACf,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC3C,OAAO,GAAG,CAAC;gBACf,CAAC;gBAED,MAAM,MAAM,GAAG,IAAA,iDAAwB,EAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACV,OAAO,GAAG,CAAC;gBACf,CAAC;gBAED,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,4CAAmB,CAAC;gBAC1E,MAAM,WAAW,GAAsB,EAAE,CAAC;gBAE1C,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;oBAChC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3B,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;wBACjD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC;gBAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,OAAO,GAAG,CAAC;gBACf,CAAC;gBAED,MAAM,EAAE,GAAG,MAAA,MAAM,CAAC,cAAc,mCAAI,uCAAc,CAAC,GAAG,CAAC;gBAEvD,MAAM,WAAW,GAA2B,EAAE,CAAC;gBAC/C,MAAM,YAAY,GAAG,IAAA,8CAAqB,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAChE,IAAI,YAAY,EAAE,CAAC;oBACf,WAAW,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;gBACzC,CAAC;gBAED,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;oBACrC,eAAe,EAAE,GAAG,CAAC,UAAU;oBAC/B,mBAAmB,EAAE,MAAM,oBAAY,CAAC,KAAK,CAAC,GAAG,CAAC;oBAClD,gBAAgB,EAAE,WAAW;oBAC7B,cAAc,EAAE,EAAE;oBAClB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;iBAC7E,CAAC,CAAC;gBAEH,OAAO,GAAG,CAAC;YACf,CAAC;YAEO,KAAK,CAAC,kBAAkB,CAAC,IAAoB,EAAE,IAAsB;gBACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChD,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,oBAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/E,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YAEO,KAAK,CAAC,uBAAuB,CAAC,IAAe,EAAE,IAAsB;gBACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChD,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,oBAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/E,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;SACJ,CAAC;IACN,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAgB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC;QAEpB,MAAM,UAAU,GAAG,IAAI,KAAM,SAAQ,kBAA6B;YACpD,KAAK,CAAC,aAAa,CAAC,GAAkB,EAAE,GAAqB;gBACnE,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;gBAElC,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBACtC,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACxD,IAAI,CAAC,UAAU,EAAE,CAAC;wBACd,OAAO,GAAG,CAAC;oBACf,CAAC;oBAED,MAAM,cAAc,GAAG,MAAM,IAAA,oCAAkB,EAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,CAClE,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CACxD,CAAC;oBACF,IAAI,cAAc,EAAE,CAAC;wBACjB,OAAO,IAAA,oBAAU,EACb,GAAG,EACH,oBAAoB,MAAM,CAAC,WAAW,EAAE,EACxC,cAAc,CACjB,CAAC;oBACN,CAAC;oBAED,MAAM,WAAW,GAAG,wBAAwB,CACxC,GAAG,EACH,MAAM,CAAC,WAAW,EAClB,UAAU,CAAC,gBAAgB,CAC9B,CAAC;oBAEF,OAAO,IAAA,4CAA0B,EAAC,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;gBACpE,CAAC;gBAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,IAAA,qCAAmB,GAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC/C,MAAM,kBAAkB,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAChE,IAAI,kBAAkB,EAAE,CAAC;wBACrB,MAAM,MAAM,GAAG,MAAM,IAAA,sCAAoB,EAAC,kBAAkB,EAAE,UAAU,EAAE,YAAY,CAAkB,CAAC;wBACzG,OAAO,gCACA,GAAG,KACN,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,GAAG,EAAE,MAAM,CAAC,GAAG,GACD,CAAC;oBACvB,CAAC;gBACL,CAAC;gBAED,OAAO,GAAG,CAAC;YACf,CAAC;SACJ,CAAC;QAEF,OAAO,IAAA,sCAAoB,EAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAClC,GAAgB,EAChB,UAA6B,EAC7B,IAAsB;QAEtB,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CACtD,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,gBAAgB,CAC9B,CAAC;QAEF,MAAM,YAAY,GAAG,IAAA,iCAAe,EAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,cAAc,KAAK,GAAG;YACvC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAE9C,MAAM,uBAAuB,GAAG,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAExE,MAAM,MAAM,GAAG,MAAM,IAAA,qCAAmB,EACpC,UAAU,CAAC,cAAc,EACzB,mBAAmB,EACnB;YACI,uBAAuB;YACvB,WAAW,EAAE,UAAU,CAAC,WAAW;SACtC,CACJ,CAAC;QAEF,IAAA,oCAAkB,EAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACrE,CAAC;IAEO,yBAAyB,CAC7B,eAAuB,EACvB,MAAyB;QAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAEhD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7D,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE5C,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/C,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;CACJ;AAtND,4CAsNC;AA5MG;IALC,IAAA,eAAM,EAAC;QACJ,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,uEAAuE;QACpF,OAAO,EAAE,QAAQ;KACpB,CAAC;qDACmB;AAQrB;IANC,IAAA,eAAM,EAAC;QACJ,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,qHAAqH;QAClI,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,KAAK;KAClB,CAAC;+CACsB;AAsM5B,SAAS,wBAAwB,CAC7B,GAAkB,EAClB,WAAmB,EACnB,MAAyB;IAEzB,IAAI,CAAC,IAAA,eAAQ,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,MAAM,GAA6B,EAAE,CAAC;IAE5C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAsB,CAAC;QACzC,MAAM,OAAO,GAAG,IAAA,uBAAgB,EAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAA,eAAQ,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,SAAS;QACb,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7C,IAAA,uBAAgB,EAAC,KAAK,CAAC,OAAsB,CAAC,KAAK,WAAW,CACjE,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,SAAS;QACb,CAAC;QAED,OAAO,GAAG,IAAI,CAAC;QAEf,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,SAAS;QACb,CAAC;QAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,mCACtB,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAChC,KAAK,EAAE,iBAAiB,GAC3B,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,gCACL,EAAE,KACL,OAAO,kCACA,MAAM,KACT,KAAK,EAAE,gCAAI,QAAQ,KAAE,OAAO,EAAE,QAAQ,GAAgB,MAEnC,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9D,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,mCAClB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAC5B,KAAK,EAAE,iBAAiB,GAC3B,CAAC;IACN,CAAC;IAED,uCACO,GAAG,KACN,KAAK,EAAE,gCAAI,OAAO,KAAE,OAAO,EAAE,MAAM,GAAgB,IACrD;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8.75.4
|
|
@@ -6,6 +6,7 @@ export declare class PrepareRecipe {
|
|
|
6
6
|
private readonly options?;
|
|
7
7
|
constructor(id: string, options?: any | undefined);
|
|
8
8
|
static handle(connection: MessageConnection, marketplace: RecipeMarketplace, preparedRecipes: Map<String, Recipe>, metricsCsv?: string): void;
|
|
9
|
+
private static installSubRecipes;
|
|
9
10
|
/**
|
|
10
11
|
* For preconditions that can be evaluated on the remote peer, let the remote peer
|
|
11
12
|
* evaluate them and know that we will only have to do the visit work if the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-recipe.d.ts","sourceRoot":"","sources":["../../../src/rpc/request/prepare-recipe.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,MAAM,EAAE,gBAAgB,EAAiB,MAAM,cAAc,CAAC;AAOtE,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,aAAa;IACV,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAU,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAArC,EAAE,EAAE,MAAM,EAAmB,OAAO,CAAC,EAAE,GAAG,YAAA;IAGvE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,UAAU,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"prepare-recipe.d.ts","sourceRoot":"","sources":["../../../src/rpc/request/prepare-recipe.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,MAAM,EAAE,gBAAgB,EAAiB,MAAM,cAAc,CAAC;AAOtE,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,aAAa;IACV,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAU,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAArC,EAAE,EAAE,MAAM,EAAmB,OAAO,CAAC,EAAE,GAAG,YAAA;IAGvE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,UAAU,CAAC,EAAE,MAAM;mBA4CZ,iBAAiB;IAStC;;;;OAIG;mBACkB,qBAAqB;mBAuCrB,uBAAuB;CA+B/C;AAED,MAAM,WAAW,qBAAqB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,gBAAgB,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,YAAY,EAAE,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,YAAY,EAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,EAAE,CAAA;CACtB"}
|
|
@@ -78,6 +78,7 @@ class PrepareRecipe {
|
|
|
78
78
|
const scanPreconditions = [];
|
|
79
79
|
recipe = await this.optimizePreconditions(recipe, "scan", scanPreconditions);
|
|
80
80
|
preparedRecipes.set(id, recipe);
|
|
81
|
+
await this.installSubRecipes(recipe, marketplace);
|
|
81
82
|
const result = {
|
|
82
83
|
id: id,
|
|
83
84
|
descriptor: await recipe.descriptor(),
|
|
@@ -89,6 +90,14 @@ class PrepareRecipe {
|
|
|
89
90
|
return result;
|
|
90
91
|
}));
|
|
91
92
|
}
|
|
93
|
+
static async installSubRecipes(recipe, marketplace) {
|
|
94
|
+
for (const subRecipe of await recipe.recipeList()) {
|
|
95
|
+
if (!marketplace.findRecipe(subRecipe.name)) {
|
|
96
|
+
await marketplace.install(subRecipe.constructor, []);
|
|
97
|
+
await this.installSubRecipes(subRecipe, marketplace);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
92
101
|
/**
|
|
93
102
|
* For preconditions that can be evaluated on the remote peer, let the remote peer
|
|
94
103
|
* evaluate them and know that we will only have to do the visit work if the
|
|
@@ -123,21 +132,21 @@ class PrepareRecipe {
|
|
|
123
132
|
}
|
|
124
133
|
});
|
|
125
134
|
}
|
|
126
|
-
this.visitorTypePrecondition(preconditions, visitor.v);
|
|
135
|
+
await this.visitorTypePrecondition(preconditions, visitor.v);
|
|
127
136
|
}
|
|
128
137
|
else {
|
|
129
|
-
this.visitorTypePrecondition(preconditions, visitor);
|
|
138
|
+
await this.visitorTypePrecondition(preconditions, visitor);
|
|
130
139
|
}
|
|
131
140
|
return recipe;
|
|
132
141
|
}
|
|
133
|
-
static visitorTypePrecondition(preconditions, v) {
|
|
142
|
+
static async visitorTypePrecondition(preconditions, v) {
|
|
134
143
|
let treeType;
|
|
135
|
-
// Use
|
|
136
|
-
const { JsonVisitor } =
|
|
137
|
-
const { JavaScriptVisitor } =
|
|
138
|
-
const { JavaVisitor } =
|
|
139
|
-
const { PlainTextVisitor } =
|
|
140
|
-
const { YamlVisitor } =
|
|
144
|
+
// Use dynamic import to defer loading and avoid circular dependencies
|
|
145
|
+
const { JsonVisitor } = await import("../../json/index.js");
|
|
146
|
+
const { JavaScriptVisitor } = await import("../../javascript/index.js");
|
|
147
|
+
const { JavaVisitor } = await import("../../java/index.js");
|
|
148
|
+
const { PlainTextVisitor } = await import("../../text/index.js");
|
|
149
|
+
const { YamlVisitor } = await import("../../yaml/index.js");
|
|
141
150
|
if (v instanceof JsonVisitor) {
|
|
142
151
|
treeType = "org.openrewrite.json.tree.Json";
|
|
143
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-recipe.js","sourceRoot":"","sources":["../../../src/rpc/request/prepare-recipe.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prepare-recipe.js","sourceRoot":"","sources":["../../../src/rpc/request/prepare-recipe.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc/server.js
CHANGED
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewrite-test.d.ts","sourceRoot":"","sources":["../../src/test/rewrite-test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rewrite-test.d.ts","sourceRoot":"","sources":["../../src/test/rewrite-test.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AACjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAc,WAAW,EAAC,MAAM,YAAY,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AASnC,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,UAAU;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,MAAM,CAAC;IAC1C,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,GAAG,EAAE,MAAM,CAAA;CACd;AAED,qBAAa,UAAU;IACnB,0BAA0B,EAAE,OAAO,CAAO;IAC1C,cAAc,EAAE,OAAO,CAAQ;IAE/B,MAAM,EAAE,MAAM,CAAmB;IAEjC;;;OAGG;IACH,gBAAgB,EAAE,gBAAgB,CAA0B;IAE5D;;OAEG;IACH,sBAAsB,EAAE,gBAAgB,CAAyB;IAEjE,OAAO,CAAC,mBAAmB,CAA+C;IAE1E,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;IAIrD,UAAU,CAAC,GAAG,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAuEnJ,qBAAqB;YASrB,2BAA2B;YAO3B,yBAAyB;YAwCzB,oBAAoB;YAapB,WAAW;IAezB;;OAEG;YACW,KAAK;YAiBL,mDAAmD;CAMpE;AAoBD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;AAEnG;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAyCxC;AAED,wBAAgB,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,GAAG,eAAe,CAchE;AAGD,qBAAa,WAAY,SAAQ,MAAM;IAKvB,OAAO,CAAC,OAAO;IAJ3B,IAAI,SAA0B;IAC9B,WAAW,SAAW;IACtB,WAAW,SAAY;gBAEH,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;IAI5C,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAGjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAElE"}
|
|
@@ -26,6 +26,7 @@ exports.fromVisitor = fromVisitor;
|
|
|
26
26
|
* See the License for the specific language governing permissions and
|
|
27
27
|
* limitations under the License.
|
|
28
28
|
*/
|
|
29
|
+
const vitest_1 = require("vitest");
|
|
29
30
|
const recipe_1 = require("../recipe");
|
|
30
31
|
const execution_1 = require("../execution");
|
|
31
32
|
const visitor_1 = require("../visitor");
|
|
@@ -144,7 +145,7 @@ class RecipeSpec {
|
|
|
144
145
|
async expectParsePrintIdempotence(parsed) {
|
|
145
146
|
for (const [spec, sourceFile] of parsed) {
|
|
146
147
|
const beforeSource = dedent(spec.before);
|
|
147
|
-
expect(await print_1.TreePrinters.print(sourceFile)).toEqual(beforeSource);
|
|
148
|
+
(0, vitest_1.expect)(await print_1.TreePrinters.print(sourceFile)).toEqual(beforeSource);
|
|
148
149
|
}
|
|
149
150
|
}
|
|
150
151
|
async expectResultsToMatchAfter(specs, changeset, parsed) {
|
|
@@ -200,12 +201,12 @@ class RecipeSpec {
|
|
|
200
201
|
if (!after) {
|
|
201
202
|
throw new Error('Expected for recipe to have produced a change for file:\n' + (0, util_1.trimIndent)(spec.before));
|
|
202
203
|
}
|
|
203
|
-
expect(after).toBeDefined();
|
|
204
|
+
(0, vitest_1.expect)(after).toBeDefined();
|
|
204
205
|
await new ValidateWhitespaceVisitor().visit(after, this.executionContext);
|
|
205
206
|
const actualAfter = await print_1.TreePrinters.print(after);
|
|
206
207
|
const afterSource = typeof spec.after === "function" ?
|
|
207
208
|
spec.after(actualAfter) : spec.after;
|
|
208
|
-
expect(actualAfter).toEqual(afterSource);
|
|
209
|
+
(0, vitest_1.expect)(actualAfter).toEqual(afterSource);
|
|
209
210
|
if (spec.afterRecipe) {
|
|
210
211
|
await spec.afterRecipe(after);
|
|
211
212
|
}
|
|
@@ -253,7 +254,7 @@ exports.RecipeSpec = RecipeSpec;
|
|
|
253
254
|
class ValidateWhitespaceVisitor extends javascript_1.JavaScriptVisitor {
|
|
254
255
|
async visitSpace(space, p) {
|
|
255
256
|
const ret = super.visitSpace(space, p);
|
|
256
|
-
expect(space.whitespace).toMatch(/^\s*$/);
|
|
257
|
+
(0, vitest_1.expect)(space.whitespace).toMatch(/^\s*$/);
|
|
257
258
|
return ret;
|
|
258
259
|
}
|
|
259
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewrite-test.js","sourceRoot":"","sources":["../../src/test/rewrite-test.ts"],"names":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"rewrite-test.js","sourceRoot":"","sources":["../../src/test/rewrite-test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openrewrite/rewrite",
|
|
3
|
-
"version": "8.75.
|
|
3
|
+
"version": "8.75.4",
|
|
4
4
|
"license": "Moderne Source Available License",
|
|
5
5
|
"description": "OpenRewrite JavaScript.",
|
|
6
6
|
"repository": {
|
|
@@ -55,10 +55,10 @@
|
|
|
55
55
|
"postbuild": "bun -e \"require('fs').chmodSync('dist/rpc/server.js', 0o755)\" && npm link",
|
|
56
56
|
"typecheck": "tsc --noEmit -p tsconfig.test.json",
|
|
57
57
|
"dev": "tsc --watch -p tsconfig.json",
|
|
58
|
-
"test": "npm run typecheck && npm run build &&
|
|
59
|
-
"testhelper": "
|
|
58
|
+
"test": "npm run typecheck && npm run build && vitest run",
|
|
59
|
+
"testhelper": "vitest run",
|
|
60
60
|
"build:fixtures": "tsc --build fixtures/tsconfig.json",
|
|
61
|
-
"ci:test": "npm run typecheck &&
|
|
61
|
+
"ci:test": "npm run typecheck && vitest run",
|
|
62
62
|
"start": "npm run build && node ./dist/rpc/server.js"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"jsonc-parser": "^3.3.1",
|
|
70
70
|
"mutative": "^1.3.0",
|
|
71
71
|
"picomatch": "^4.0.3",
|
|
72
|
-
"semver": "^7.7.
|
|
72
|
+
"semver": "^7.7.4",
|
|
73
73
|
"tmp-promise": "^3.0.3",
|
|
74
74
|
"typescript": "^5.8.3",
|
|
75
75
|
"vscode-jsonrpc": "^8.2.1",
|
|
@@ -78,16 +78,12 @@
|
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"@types/benchmark": "^2.1.5",
|
|
80
80
|
"@types/diff": "^5.2.2",
|
|
81
|
-
"@types/jest": "^29.5.13",
|
|
82
81
|
"@types/picomatch": "^4.0.2",
|
|
83
|
-
"@types/tmp": "^0.2.6",
|
|
84
82
|
"@types/semver": "^7.7.1",
|
|
83
|
+
"@types/tmp": "^0.2.6",
|
|
85
84
|
"benchmark": "^2.1.4",
|
|
86
85
|
"bun": "^1.3.5",
|
|
87
|
-
"
|
|
88
|
-
"jest-junit": "^16.0.0",
|
|
89
|
-
"ts-jest": "^29.2.5",
|
|
90
|
-
"ts-node": "^10.9.2"
|
|
86
|
+
"vitest": "^4.0.18"
|
|
91
87
|
},
|
|
92
88
|
"optionalDependencies": {
|
|
93
89
|
"prettier": "^3.7.4"
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
export * from "./add-dependency";
|
|
18
18
|
export * from "./async-callback-in-sync-array-method";
|
|
19
19
|
export * from "./auto-format";
|
|
20
|
+
export * from "./remove-dependency";
|
|
20
21
|
export * from "./upgrade-dependency-version";
|
|
21
22
|
export * from "./upgrade-transitive-dependency-version";
|
|
22
23
|
export * from "./order-imports";
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 the original author or authors.
|
|
3
|
+
* <p>
|
|
4
|
+
* Licensed under the Moderne Source Available License (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
* <p>
|
|
8
|
+
* https://docs.moderne.io/licensing/moderne-source-available-license
|
|
9
|
+
* <p>
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import {Option, ScanningRecipe} from "../../recipe";
|
|
18
|
+
import {ExecutionContext} from "../../execution";
|
|
19
|
+
import {TreeVisitor} from "../../visitor";
|
|
20
|
+
import {Tree} from "../../tree";
|
|
21
|
+
import {getMemberKeyName, isJson, isObject, Json, JsonVisitor} from "../../json";
|
|
22
|
+
import {isDocuments, isYaml, Yaml} from "../../yaml";
|
|
23
|
+
import {isPlainText, PlainText} from "../../text";
|
|
24
|
+
import {
|
|
25
|
+
allDependencyScopes,
|
|
26
|
+
DependencyScope,
|
|
27
|
+
findNodeResolutionResult,
|
|
28
|
+
PackageManager,
|
|
29
|
+
serializeNpmrcConfigs
|
|
30
|
+
} from "../node-resolution-result";
|
|
31
|
+
import {markupWarn} from "../../markers";
|
|
32
|
+
import {TreePrinters} from "../../print";
|
|
33
|
+
import {
|
|
34
|
+
createDependencyRecipeAccumulator,
|
|
35
|
+
createLockFileEditor,
|
|
36
|
+
DependencyRecipeAccumulator,
|
|
37
|
+
getAllLockFileNames,
|
|
38
|
+
getLockFileName,
|
|
39
|
+
parseLockFileContent,
|
|
40
|
+
runInstallIfNeeded,
|
|
41
|
+
runInstallInTempDir,
|
|
42
|
+
storeInstallResult,
|
|
43
|
+
updateNodeResolutionMarker
|
|
44
|
+
} from "../package-manager";
|
|
45
|
+
import * as path from "path";
|
|
46
|
+
|
|
47
|
+
interface ProjectUpdateInfo {
|
|
48
|
+
packageJsonPath: string;
|
|
49
|
+
originalPackageJson: string;
|
|
50
|
+
dependencyScopes: DependencyScope[];
|
|
51
|
+
packageManager: PackageManager;
|
|
52
|
+
configFiles?: Record<string, string>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
interface Accumulator extends DependencyRecipeAccumulator<ProjectUpdateInfo> {
|
|
56
|
+
originalLockFiles: Map<string, string>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export class RemoveDependency extends ScanningRecipe<Accumulator> {
|
|
60
|
+
readonly name = "org.openrewrite.javascript.dependencies.remove-dependency";
|
|
61
|
+
readonly displayName = "Remove npm dependency";
|
|
62
|
+
readonly description = "Removes a dependency from `package.json` and updates the lock file by running the package manager.";
|
|
63
|
+
|
|
64
|
+
@Option({
|
|
65
|
+
displayName: "Package name",
|
|
66
|
+
description: "The name of the npm package to remove (e.g., `lodash`, `@types/node`)",
|
|
67
|
+
example: "lodash"
|
|
68
|
+
})
|
|
69
|
+
packageName!: string;
|
|
70
|
+
|
|
71
|
+
@Option({
|
|
72
|
+
displayName: "Scope",
|
|
73
|
+
description: "The dependency scope to remove from. If not specified, the dependency is removed from all scopes where it is found.",
|
|
74
|
+
example: "dependencies",
|
|
75
|
+
required: false
|
|
76
|
+
})
|
|
77
|
+
scope?: DependencyScope;
|
|
78
|
+
|
|
79
|
+
initialValue(_ctx: ExecutionContext): Accumulator {
|
|
80
|
+
return {
|
|
81
|
+
...createDependencyRecipeAccumulator<ProjectUpdateInfo>(),
|
|
82
|
+
originalLockFiles: new Map()
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
async scanner(acc: Accumulator): Promise<TreeVisitor<any, ExecutionContext>> {
|
|
87
|
+
const recipe = this;
|
|
88
|
+
const LOCK_FILE_NAMES = getAllLockFileNames();
|
|
89
|
+
|
|
90
|
+
return new class extends TreeVisitor<Tree, ExecutionContext> {
|
|
91
|
+
protected async accept(tree: Tree, ctx: ExecutionContext): Promise<Tree | undefined> {
|
|
92
|
+
if (isJson(tree) && tree.kind === Json.Kind.Document) {
|
|
93
|
+
return this.handleJsonDocument(tree as Json.Document, ctx);
|
|
94
|
+
}
|
|
95
|
+
if (isYaml(tree) && isDocuments(tree)) {
|
|
96
|
+
return this.handleYamlDocument(tree, ctx);
|
|
97
|
+
}
|
|
98
|
+
if (isPlainText(tree)) {
|
|
99
|
+
return this.handlePlainTextDocument(tree as PlainText, ctx);
|
|
100
|
+
}
|
|
101
|
+
return tree;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
private async handleJsonDocument(doc: Json.Document, _ctx: ExecutionContext): Promise<Json | undefined> {
|
|
105
|
+
const basename = path.basename(doc.sourcePath);
|
|
106
|
+
|
|
107
|
+
if (LOCK_FILE_NAMES.includes(basename)) {
|
|
108
|
+
acc.originalLockFiles.set(doc.sourcePath, await TreePrinters.print(doc));
|
|
109
|
+
return doc;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (!doc.sourcePath.endsWith('package.json')) {
|
|
113
|
+
return doc;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const marker = findNodeResolutionResult(doc);
|
|
117
|
+
if (!marker) {
|
|
118
|
+
return doc;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const scopesToCheck = recipe.scope ? [recipe.scope] : allDependencyScopes;
|
|
122
|
+
const foundScopes: DependencyScope[] = [];
|
|
123
|
+
|
|
124
|
+
for (const scope of scopesToCheck) {
|
|
125
|
+
const deps = marker[scope];
|
|
126
|
+
if (deps?.some(d => d.name === recipe.packageName)) {
|
|
127
|
+
foundScopes.push(scope);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (foundScopes.length === 0) {
|
|
132
|
+
return doc;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const pm = marker.packageManager ?? PackageManager.Npm;
|
|
136
|
+
|
|
137
|
+
const configFiles: Record<string, string> = {};
|
|
138
|
+
const npmrcContent = serializeNpmrcConfigs(marker.npmrcConfigs);
|
|
139
|
+
if (npmrcContent) {
|
|
140
|
+
configFiles['.npmrc'] = npmrcContent;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
acc.projectsToUpdate.set(doc.sourcePath, {
|
|
144
|
+
packageJsonPath: doc.sourcePath,
|
|
145
|
+
originalPackageJson: await TreePrinters.print(doc),
|
|
146
|
+
dependencyScopes: foundScopes,
|
|
147
|
+
packageManager: pm,
|
|
148
|
+
configFiles: Object.keys(configFiles).length > 0 ? configFiles : undefined
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
return doc;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
private async handleYamlDocument(docs: Yaml.Documents, _ctx: ExecutionContext): Promise<Yaml.Documents | undefined> {
|
|
155
|
+
const basename = path.basename(docs.sourcePath);
|
|
156
|
+
if (LOCK_FILE_NAMES.includes(basename)) {
|
|
157
|
+
acc.originalLockFiles.set(docs.sourcePath, await TreePrinters.print(docs));
|
|
158
|
+
}
|
|
159
|
+
return docs;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
private async handlePlainTextDocument(text: PlainText, _ctx: ExecutionContext): Promise<PlainText | undefined> {
|
|
163
|
+
const basename = path.basename(text.sourcePath);
|
|
164
|
+
if (LOCK_FILE_NAMES.includes(basename)) {
|
|
165
|
+
acc.originalLockFiles.set(text.sourcePath, await TreePrinters.print(text));
|
|
166
|
+
}
|
|
167
|
+
return text;
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
async editorWithData(acc: Accumulator): Promise<TreeVisitor<any, ExecutionContext>> {
|
|
173
|
+
const recipe = this;
|
|
174
|
+
|
|
175
|
+
const jsonEditor = new class extends JsonVisitor<ExecutionContext> {
|
|
176
|
+
protected async visitDocument(doc: Json.Document, ctx: ExecutionContext): Promise<Json | undefined> {
|
|
177
|
+
const sourcePath = doc.sourcePath;
|
|
178
|
+
|
|
179
|
+
if (sourcePath.endsWith('package.json')) {
|
|
180
|
+
const updateInfo = acc.projectsToUpdate.get(sourcePath);
|
|
181
|
+
if (!updateInfo) {
|
|
182
|
+
return doc;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const failureMessage = await runInstallIfNeeded(sourcePath, acc, () =>
|
|
186
|
+
recipe.runPackageManagerInstall(acc, updateInfo, ctx)
|
|
187
|
+
);
|
|
188
|
+
if (failureMessage) {
|
|
189
|
+
return markupWarn(
|
|
190
|
+
doc,
|
|
191
|
+
`Failed to remove ${recipe.packageName}`,
|
|
192
|
+
failureMessage
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const modifiedDoc = removeDependencyFromJson(
|
|
197
|
+
doc,
|
|
198
|
+
recipe.packageName,
|
|
199
|
+
updateInfo.dependencyScopes
|
|
200
|
+
);
|
|
201
|
+
|
|
202
|
+
return updateNodeResolutionMarker(modifiedDoc, updateInfo, acc);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const lockFileName = path.basename(sourcePath);
|
|
206
|
+
if (getAllLockFileNames().includes(lockFileName)) {
|
|
207
|
+
const updatedLockContent = acc.updatedLockFiles.get(sourcePath);
|
|
208
|
+
if (updatedLockContent) {
|
|
209
|
+
const parsed = await parseLockFileContent(updatedLockContent, sourcePath, lockFileName) as Json.Document;
|
|
210
|
+
return {
|
|
211
|
+
...doc,
|
|
212
|
+
value: parsed.value,
|
|
213
|
+
eof: parsed.eof
|
|
214
|
+
} as Json.Document;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
return doc;
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
return createLockFileEditor(jsonEditor, acc);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
private async runPackageManagerInstall(
|
|
226
|
+
acc: Accumulator,
|
|
227
|
+
updateInfo: ProjectUpdateInfo,
|
|
228
|
+
_ctx: ExecutionContext
|
|
229
|
+
): Promise<void> {
|
|
230
|
+
const modifiedPackageJson = this.createModifiedPackageJson(
|
|
231
|
+
updateInfo.originalPackageJson,
|
|
232
|
+
updateInfo.dependencyScopes
|
|
233
|
+
);
|
|
234
|
+
|
|
235
|
+
const lockFileName = getLockFileName(updateInfo.packageManager);
|
|
236
|
+
const packageJsonDir = path.dirname(updateInfo.packageJsonPath);
|
|
237
|
+
const lockFilePath = packageJsonDir === '.'
|
|
238
|
+
? lockFileName
|
|
239
|
+
: path.join(packageJsonDir, lockFileName);
|
|
240
|
+
|
|
241
|
+
const originalLockFileContent = acc.originalLockFiles.get(lockFilePath);
|
|
242
|
+
|
|
243
|
+
const result = await runInstallInTempDir(
|
|
244
|
+
updateInfo.packageManager,
|
|
245
|
+
modifiedPackageJson,
|
|
246
|
+
{
|
|
247
|
+
originalLockFileContent,
|
|
248
|
+
configFiles: updateInfo.configFiles
|
|
249
|
+
}
|
|
250
|
+
);
|
|
251
|
+
|
|
252
|
+
storeInstallResult(result, acc, updateInfo, modifiedPackageJson);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
private createModifiedPackageJson(
|
|
256
|
+
originalContent: string,
|
|
257
|
+
scopes: DependencyScope[]
|
|
258
|
+
): string {
|
|
259
|
+
const packageJson = JSON.parse(originalContent);
|
|
260
|
+
|
|
261
|
+
for (const scope of scopes) {
|
|
262
|
+
if (packageJson[scope] && packageJson[scope][this.packageName]) {
|
|
263
|
+
delete packageJson[scope][this.packageName];
|
|
264
|
+
|
|
265
|
+
if (Object.keys(packageJson[scope]).length === 0) {
|
|
266
|
+
delete packageJson[scope];
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
return JSON.stringify(packageJson, null, 2);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
function removeDependencyFromJson(
|
|
276
|
+
doc: Json.Document,
|
|
277
|
+
packageName: string,
|
|
278
|
+
scopes: DependencyScope[]
|
|
279
|
+
): Json.Document {
|
|
280
|
+
if (!isObject(doc.value)) {
|
|
281
|
+
return doc;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
const targetScopes = new Set<string>(scopes);
|
|
285
|
+
const rootObj = doc.value;
|
|
286
|
+
let changed = false;
|
|
287
|
+
const result: Json.RightPadded<Json>[] = [];
|
|
288
|
+
|
|
289
|
+
for (const rp of rootObj.members) {
|
|
290
|
+
const member = rp.element as Json.Member;
|
|
291
|
+
const keyName = getMemberKeyName(member);
|
|
292
|
+
|
|
293
|
+
if (!keyName || !targetScopes.has(keyName) || !isObject(member.value)) {
|
|
294
|
+
result.push(rp);
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
const scopeObj = member.value;
|
|
299
|
+
const filtered = scopeObj.members.filter(depRp =>
|
|
300
|
+
getMemberKeyName(depRp.element as Json.Member) !== packageName
|
|
301
|
+
);
|
|
302
|
+
|
|
303
|
+
if (filtered.length === scopeObj.members.length) {
|
|
304
|
+
result.push(rp);
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
changed = true;
|
|
309
|
+
|
|
310
|
+
if (filtered.length === 0) {
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
const lastOriginalAfter = scopeObj.members[scopeObj.members.length - 1].after;
|
|
315
|
+
filtered[filtered.length - 1] = {
|
|
316
|
+
...filtered[filtered.length - 1],
|
|
317
|
+
after: lastOriginalAfter
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
result.push({
|
|
321
|
+
...rp,
|
|
322
|
+
element: {
|
|
323
|
+
...member,
|
|
324
|
+
value: {...scopeObj, members: filtered} as Json.Object
|
|
325
|
+
}
|
|
326
|
+
} as Json.RightPadded<Json>);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
if (!changed) {
|
|
330
|
+
return doc;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
if (result.length > 0 && result.length < rootObj.members.length) {
|
|
334
|
+
const originalLastAfter = rootObj.members[rootObj.members.length - 1].after;
|
|
335
|
+
result[result.length - 1] = {
|
|
336
|
+
...result[result.length - 1],
|
|
337
|
+
after: originalLastAfter
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
return {
|
|
342
|
+
...doc,
|
|
343
|
+
value: {...rootObj, members: result} as Json.Object
|
|
344
|
+
};
|
|
345
|
+
}
|
|
@@ -58,6 +58,8 @@ export class PrepareRecipe {
|
|
|
58
58
|
|
|
59
59
|
preparedRecipes.set(id, recipe);
|
|
60
60
|
|
|
61
|
+
await this.installSubRecipes(recipe, marketplace);
|
|
62
|
+
|
|
61
63
|
const result = {
|
|
62
64
|
id: id,
|
|
63
65
|
descriptor: await recipe.descriptor(),
|
|
@@ -73,6 +75,15 @@ export class PrepareRecipe {
|
|
|
73
75
|
);
|
|
74
76
|
}
|
|
75
77
|
|
|
78
|
+
private static async installSubRecipes(recipe: Recipe, marketplace: RecipeMarketplace) {
|
|
79
|
+
for (const subRecipe of await recipe.recipeList()) {
|
|
80
|
+
if (!marketplace.findRecipe(subRecipe.name)) {
|
|
81
|
+
await marketplace.install(subRecipe.constructor as any, []);
|
|
82
|
+
await this.installSubRecipes(subRecipe, marketplace);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
76
87
|
/**
|
|
77
88
|
* For preconditions that can be evaluated on the remote peer, let the remote peer
|
|
78
89
|
* evaluate them and know that we will only have to do the visit work if the
|
|
@@ -110,22 +121,22 @@ export class PrepareRecipe {
|
|
|
110
121
|
}
|
|
111
122
|
)
|
|
112
123
|
}
|
|
113
|
-
this.visitorTypePrecondition(preconditions, visitor.v);
|
|
124
|
+
await this.visitorTypePrecondition(preconditions, visitor.v);
|
|
114
125
|
} else {
|
|
115
|
-
this.visitorTypePrecondition(preconditions, visitor!);
|
|
126
|
+
await this.visitorTypePrecondition(preconditions, visitor!);
|
|
116
127
|
}
|
|
117
128
|
return recipe;
|
|
118
129
|
}
|
|
119
130
|
|
|
120
|
-
private static visitorTypePrecondition(preconditions: Precondition[], v: TreeVisitor<any, ExecutionContext>): Precondition[] {
|
|
131
|
+
private static async visitorTypePrecondition(preconditions: Precondition[], v: TreeVisitor<any, ExecutionContext>): Promise<Precondition[]> {
|
|
121
132
|
let treeType: string | undefined;
|
|
122
133
|
|
|
123
|
-
// Use
|
|
124
|
-
const {JsonVisitor} =
|
|
125
|
-
const {JavaScriptVisitor} =
|
|
126
|
-
const {JavaVisitor} =
|
|
127
|
-
const {PlainTextVisitor} =
|
|
128
|
-
const {YamlVisitor} =
|
|
134
|
+
// Use dynamic import to defer loading and avoid circular dependencies
|
|
135
|
+
const {JsonVisitor} = await import("../../json/index.js");
|
|
136
|
+
const {JavaScriptVisitor} = await import("../../javascript/index.js");
|
|
137
|
+
const {JavaVisitor} = await import("../../java/index.js");
|
|
138
|
+
const {PlainTextVisitor} = await import("../../text/index.js");
|
|
139
|
+
const {YamlVisitor} = await import("../../yaml/index.js");
|
|
129
140
|
|
|
130
141
|
if (v instanceof JsonVisitor) {
|
|
131
142
|
treeType = "org.openrewrite.json.tree.Json";
|
package/src/rpc/server.ts
CHANGED
|
File without changes
|
package/src/test/rewrite-test.ts
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import {expect} from "vitest";
|
|
16
17
|
import {Recipe} from "../recipe";
|
|
17
18
|
import {ExecutionContext} from "../execution";
|
|
18
19
|
import {noopVisitor, TreeVisitor} from "../visitor";
|