@strapi/upgrade 5.0.0-beta.1 → 5.0.0-beta.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/cli.js +1452 -5
- package/dist/cli.js.map +1 -1
- package/dist/index.js +228 -92
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +229 -93
- package/dist/index.mjs.map +1 -1
- package/dist/modules/codemod/codemod.d.ts +4 -2
- package/dist/modules/codemod/codemod.d.ts.map +1 -1
- package/dist/modules/codemod/types.d.ts +8 -1
- package/dist/modules/codemod/types.d.ts.map +1 -1
- package/dist/modules/codemod-repository/constants.d.ts.map +1 -1
- package/dist/modules/codemod-repository/repository.d.ts +5 -5
- package/dist/modules/codemod-repository/repository.d.ts.map +1 -1
- package/dist/modules/codemod-repository/types.d.ts +7 -3
- package/dist/modules/codemod-repository/types.d.ts.map +1 -1
- package/dist/modules/codemod-runner/codemod-runner.d.ts +6 -3
- package/dist/modules/codemod-runner/codemod-runner.d.ts.map +1 -1
- package/dist/modules/codemod-runner/index.d.ts +1 -0
- package/dist/modules/codemod-runner/index.d.ts.map +1 -1
- package/dist/modules/codemod-runner/types.d.ts +1 -0
- package/dist/modules/codemod-runner/types.d.ts.map +1 -1
- package/dist/modules/format/formats.d.ts +5 -0
- package/dist/modules/format/formats.d.ts.map +1 -1
- package/dist/modules/project/project.d.ts +1 -1
- package/dist/modules/project/project.d.ts.map +1 -1
- package/dist/modules/project/types.d.ts +1 -0
- package/dist/modules/project/types.d.ts.map +1 -1
- package/dist/modules/project/utils.d.ts +1 -1
- package/dist/modules/project/utils.d.ts.map +1 -1
- package/dist/modules/upgrader/upgrader.d.ts.map +1 -1
- package/dist/modules/version/range.d.ts +2 -0
- package/dist/modules/version/range.d.ts.map +1 -1
- package/dist/tasks/codemods/index.d.ts +2 -1
- package/dist/tasks/codemods/index.d.ts.map +1 -1
- package/dist/tasks/codemods/list-codemods.d.ts +3 -0
- package/dist/tasks/codemods/list-codemods.d.ts.map +1 -0
- package/dist/tasks/codemods/run-codemods.d.ts +3 -0
- package/dist/tasks/codemods/run-codemods.d.ts.map +1 -0
- package/dist/tasks/codemods/types.d.ts +9 -3
- package/dist/tasks/codemods/types.d.ts.map +1 -1
- package/dist/tasks/codemods/utils.d.ts +6 -0
- package/dist/tasks/codemods/utils.d.ts.map +1 -0
- package/dist/tasks/index.d.ts +1 -1
- package/dist/tasks/index.d.ts.map +1 -1
- package/package.json +7 -7
- package/resources/codemods/5.0.0/entity-service-document-service.code.ts +374 -0
- package/resources/codemods/5.0.0/strapi-public-interface.code.ts +126 -0
- package/resources/codemods/5.0.0/utils-public-interface.code.ts +320 -0
- package/dist/_chunks/codemod-runner-aVWS9EOj.js +0 -798
- package/dist/_chunks/codemod-runner-aVWS9EOj.js.map +0 -1
- package/dist/_chunks/codemods-FxCTNGki.js +0 -105
- package/dist/_chunks/codemods-FxCTNGki.js.map +0 -1
- package/dist/_chunks/index-qYtax-pz.js +0 -103
- package/dist/_chunks/index-qYtax-pz.js.map +0 -1
- package/dist/_chunks/upgrade-_IPNaAR-.js +0 -361
- package/dist/_chunks/upgrade-_IPNaAR-.js.map +0 -1
- package/dist/tasks/codemods/codemods.d.ts +0 -3
- package/dist/tasks/codemods/codemods.d.ts.map +0 -1
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const prompts = require("prompts");
|
|
4
|
-
const codemodRunner = require("./codemod-runner-aVWS9EOj.js");
|
|
5
|
-
const path = require("node:path");
|
|
6
|
-
const chalk = require("chalk");
|
|
7
|
-
const semver = require("semver");
|
|
8
|
-
const utils = require("@strapi/utils");
|
|
9
|
-
const assert = require("node:assert");
|
|
10
|
-
require("fs-extra");
|
|
11
|
-
const index = require("./index-qYtax-pz.js");
|
|
12
|
-
require("glob");
|
|
13
|
-
require("jscodeshift/src/Runner");
|
|
14
|
-
require("lodash/fp");
|
|
15
|
-
require("esbuild-register/dist/node");
|
|
16
|
-
require("cli-table3");
|
|
17
|
-
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
18
|
-
const prompts__default = /* @__PURE__ */ _interopDefault(prompts);
|
|
19
|
-
const path__default = /* @__PURE__ */ _interopDefault(path);
|
|
20
|
-
const chalk__default = /* @__PURE__ */ _interopDefault(chalk);
|
|
21
|
-
const semver__default = /* @__PURE__ */ _interopDefault(semver);
|
|
22
|
-
const assert__default = /* @__PURE__ */ _interopDefault(assert);
|
|
23
|
-
const REQUIRE_AVAILABLE_NEXT_MAJOR = codemodRunner.requirementFactory(
|
|
24
|
-
"REQUIRE_AVAILABLE_NEXT_MAJOR",
|
|
25
|
-
(context) => {
|
|
26
|
-
const { project, target } = context;
|
|
27
|
-
const currentMajor = project.strapiVersion.major;
|
|
28
|
-
const targetedMajor = target.major;
|
|
29
|
-
if (targetedMajor === currentMajor) {
|
|
30
|
-
throw new Error(`You're already on the latest major version (v${currentMajor})`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
);
|
|
34
|
-
const REQUIRE_LATEST_FOR_CURRENT_MAJOR = codemodRunner.requirementFactory(
|
|
35
|
-
"REQUIRE_LATEST_FOR_CURRENT_MAJOR",
|
|
36
|
-
(context) => {
|
|
37
|
-
const { project, target, npmVersionsMatches } = context;
|
|
38
|
-
if (npmVersionsMatches.length !== 1) {
|
|
39
|
-
const invalidVersions = npmVersionsMatches.slice(0, -1);
|
|
40
|
-
const invalidVersionsAsSemVer = invalidVersions.map((v) => v.version);
|
|
41
|
-
const nbInvalidVersions = npmVersionsMatches.length;
|
|
42
|
-
const currentMajor = project.strapiVersion.major;
|
|
43
|
-
throw new Error(
|
|
44
|
-
`Doing a major upgrade requires to be on the latest v${currentMajor} version, but found ${nbInvalidVersions} versions between the current one and ${target}: ${invalidVersionsAsSemVer}`
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
);
|
|
49
|
-
class Upgrader {
|
|
50
|
-
project;
|
|
51
|
-
npmPackage;
|
|
52
|
-
target;
|
|
53
|
-
codemodsTarget;
|
|
54
|
-
isDry;
|
|
55
|
-
logger;
|
|
56
|
-
requirements;
|
|
57
|
-
confirmationCallback;
|
|
58
|
-
constructor(project, target, npmPackage) {
|
|
59
|
-
this.project = project;
|
|
60
|
-
this.npmPackage = npmPackage;
|
|
61
|
-
this.target = target;
|
|
62
|
-
this.syncCodemodsTarget();
|
|
63
|
-
this.isDry = false;
|
|
64
|
-
this.requirements = [];
|
|
65
|
-
this.logger = null;
|
|
66
|
-
this.confirmationCallback = null;
|
|
67
|
-
}
|
|
68
|
-
setRequirements(requirements) {
|
|
69
|
-
this.requirements = requirements;
|
|
70
|
-
return this;
|
|
71
|
-
}
|
|
72
|
-
setTarget(target) {
|
|
73
|
-
this.target = target;
|
|
74
|
-
return this;
|
|
75
|
-
}
|
|
76
|
-
syncCodemodsTarget() {
|
|
77
|
-
this.codemodsTarget = index.semVerFactory(
|
|
78
|
-
`${this.target.major}.${this.target.minor}.${this.target.patch}`
|
|
79
|
-
);
|
|
80
|
-
this.logger?.debug(
|
|
81
|
-
`The codemods target has been synced with the upgrade target. The codemod runner will now look for ${codemodRunner.version(
|
|
82
|
-
this.codemodsTarget
|
|
83
|
-
)}`
|
|
84
|
-
);
|
|
85
|
-
return this;
|
|
86
|
-
}
|
|
87
|
-
overrideCodemodsTarget(target) {
|
|
88
|
-
this.codemodsTarget = target;
|
|
89
|
-
this.logger?.debug(
|
|
90
|
-
`Overriding the codemods target. The codemod runner will now look for ${codemodRunner.version(target)}`
|
|
91
|
-
);
|
|
92
|
-
return this;
|
|
93
|
-
}
|
|
94
|
-
setLogger(logger) {
|
|
95
|
-
this.logger = logger;
|
|
96
|
-
return this;
|
|
97
|
-
}
|
|
98
|
-
onConfirm(callback) {
|
|
99
|
-
this.confirmationCallback = callback;
|
|
100
|
-
return this;
|
|
101
|
-
}
|
|
102
|
-
dry(enabled = true) {
|
|
103
|
-
this.isDry = enabled;
|
|
104
|
-
return this;
|
|
105
|
-
}
|
|
106
|
-
addRequirement(requirement) {
|
|
107
|
-
this.requirements.push(requirement);
|
|
108
|
-
const fRequired = requirement.isRequired ? "(required)" : "(optional)";
|
|
109
|
-
this.logger?.debug(
|
|
110
|
-
`Added a new requirement to the upgrade: ${codemodRunner.highlight(requirement.name)} ${fRequired}`
|
|
111
|
-
);
|
|
112
|
-
return this;
|
|
113
|
-
}
|
|
114
|
-
async upgrade() {
|
|
115
|
-
this.logger?.info(
|
|
116
|
-
`Upgrading from ${codemodRunner.version(this.project.strapiVersion)} to ${codemodRunner.version(this.target)}`
|
|
117
|
-
);
|
|
118
|
-
if (this.isDry) {
|
|
119
|
-
this.logger?.warn(
|
|
120
|
-
"Running the upgrade in dry mode. No files will be modified during the process."
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
const range = codemodRunner.rangeFromVersions(this.project.strapiVersion, this.target);
|
|
124
|
-
const codemodsRange = codemodRunner.rangeFromVersions(this.project.strapiVersion, this.codemodsTarget);
|
|
125
|
-
const npmVersionsMatches = this.npmPackage?.findVersionsInRange(range) ?? [];
|
|
126
|
-
this.logger?.debug(
|
|
127
|
-
`Found ${codemodRunner.highlight(npmVersionsMatches.length)} versions satisfying ${codemodRunner.versionRange(range)}`
|
|
128
|
-
);
|
|
129
|
-
try {
|
|
130
|
-
this.logger?.info(codemodRunner.upgradeStep("Checking requirement", [1, 4]));
|
|
131
|
-
await this.checkRequirements(this.requirements, {
|
|
132
|
-
npmVersionsMatches,
|
|
133
|
-
project: this.project,
|
|
134
|
-
target: this.target
|
|
135
|
-
});
|
|
136
|
-
this.logger?.info(codemodRunner.upgradeStep("Applying the latest code modifications", [2, 4]));
|
|
137
|
-
await this.runCodemods(codemodsRange);
|
|
138
|
-
this.logger?.debug("Refreshing project information...");
|
|
139
|
-
this.project.refresh();
|
|
140
|
-
this.logger?.info(codemodRunner.upgradeStep("Upgrading Strapi dependencies", [3, 4]));
|
|
141
|
-
await this.updateDependencies();
|
|
142
|
-
this.logger?.info(codemodRunner.upgradeStep("Installing dependencies", [4, 4]));
|
|
143
|
-
await this.installDependencies();
|
|
144
|
-
} catch (e) {
|
|
145
|
-
return erroredReport(codemodRunner.unknownToError(e));
|
|
146
|
-
}
|
|
147
|
-
return successReport();
|
|
148
|
-
}
|
|
149
|
-
async checkRequirements(requirements, context) {
|
|
150
|
-
for (const requirement of requirements) {
|
|
151
|
-
const { pass, error } = await requirement.test(context);
|
|
152
|
-
if (pass) {
|
|
153
|
-
await this.onSuccessfulRequirement(requirement, context);
|
|
154
|
-
} else {
|
|
155
|
-
await this.onFailedRequirement(requirement, error);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
async onSuccessfulRequirement(requirement, context) {
|
|
160
|
-
const hasChildren = requirement.children.length > 0;
|
|
161
|
-
if (hasChildren) {
|
|
162
|
-
await this.checkRequirements(requirement.children, context);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
async onFailedRequirement(requirement, originalError) {
|
|
166
|
-
const errorMessage = `Requirement failed: ${originalError.message} (${codemodRunner.highlight(
|
|
167
|
-
requirement.name
|
|
168
|
-
)})`;
|
|
169
|
-
const warningMessage = originalError.message;
|
|
170
|
-
const confirmationMessage = `Ignore optional requirement "${codemodRunner.highlight(requirement.name)}" ?`;
|
|
171
|
-
const error = new Error(errorMessage);
|
|
172
|
-
if (requirement.isRequired) {
|
|
173
|
-
throw error;
|
|
174
|
-
}
|
|
175
|
-
this.logger?.warn(warningMessage);
|
|
176
|
-
const response = await this.confirmationCallback?.(confirmationMessage);
|
|
177
|
-
if (!response) {
|
|
178
|
-
throw error;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
async updateDependencies() {
|
|
182
|
-
const { packageJSON, packageJSONPath } = this.project;
|
|
183
|
-
const json = codemodRunner.createJSONTransformAPI(packageJSON);
|
|
184
|
-
const dependencies = json.get("dependencies", {});
|
|
185
|
-
const strapiDependencies = this.getScopedStrapiDependencies(dependencies);
|
|
186
|
-
this.logger?.debug(`Found ${codemodRunner.highlight(strapiDependencies.length)} dependency(ies) to update`);
|
|
187
|
-
strapiDependencies.forEach(
|
|
188
|
-
(dependency) => this.logger?.debug(`- ${dependency[0]} (${dependency[1]} -> ${this.target})`)
|
|
189
|
-
);
|
|
190
|
-
if (strapiDependencies.length === 0) {
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
strapiDependencies.forEach(([name]) => json.set(`dependencies.${name}`, this.target.raw));
|
|
194
|
-
const updatedPackageJSON = json.root();
|
|
195
|
-
if (this.isDry) {
|
|
196
|
-
this.logger?.debug(`Skipping dependencies update (${chalk__default.default.italic("dry mode")})`);
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
await codemodRunner.saveJSON(packageJSONPath, updatedPackageJSON);
|
|
200
|
-
}
|
|
201
|
-
getScopedStrapiDependencies(dependencies) {
|
|
202
|
-
const { strapiVersion } = this.project;
|
|
203
|
-
const strapiDependencies = [];
|
|
204
|
-
for (const [name, version] of Object.entries(dependencies)) {
|
|
205
|
-
const isScopedStrapiPackage = name.startsWith(codemodRunner.SCOPED_STRAPI_PACKAGE_PREFIX);
|
|
206
|
-
const isOnCurrentStrapiVersion = index.isValidSemVer(version) && version === strapiVersion.raw;
|
|
207
|
-
if (isScopedStrapiPackage && isOnCurrentStrapiVersion) {
|
|
208
|
-
strapiDependencies.push([name, index.semVerFactory(version)]);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
return strapiDependencies;
|
|
212
|
-
}
|
|
213
|
-
async installDependencies() {
|
|
214
|
-
const projectPath = this.project.cwd;
|
|
215
|
-
const packageManagerName = await utils.packageManager.getPreferred(projectPath);
|
|
216
|
-
this.logger?.debug(`Using ${codemodRunner.highlight(packageManagerName)} as package manager`);
|
|
217
|
-
if (this.isDry) {
|
|
218
|
-
this.logger?.debug(`Skipping dependencies installation (${chalk__default.default.italic("dry mode")}`);
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
await utils.packageManager.installDependencies(projectPath, packageManagerName, {
|
|
222
|
-
stdout: this.logger?.stdout,
|
|
223
|
-
stderr: this.logger?.stderr
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
async runCodemods(range) {
|
|
227
|
-
const codemodRunner$1 = codemodRunner.codemodRunnerFactory(this.project, range);
|
|
228
|
-
codemodRunner$1.dry(this.isDry);
|
|
229
|
-
if (this.logger) {
|
|
230
|
-
codemodRunner$1.setLogger(this.logger);
|
|
231
|
-
}
|
|
232
|
-
await codemodRunner$1.run();
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
const resolveNPMTarget = (project, target, npmPackage) => {
|
|
236
|
-
if (index.isSemverInstance(target)) {
|
|
237
|
-
return npmPackage.findVersion(target);
|
|
238
|
-
}
|
|
239
|
-
if (index.isSemVerReleaseType(target)) {
|
|
240
|
-
const range = codemodRunner.rangeFromVersions(project.strapiVersion, target);
|
|
241
|
-
const npmVersionsMatches = npmPackage.findVersionsInRange(range);
|
|
242
|
-
return npmVersionsMatches.at(-1);
|
|
243
|
-
}
|
|
244
|
-
return void 0;
|
|
245
|
-
};
|
|
246
|
-
const upgraderFactory = (project, target, npmPackage) => {
|
|
247
|
-
const targetedNPMVersion = resolveNPMTarget(project, target, npmPackage);
|
|
248
|
-
if (!targetedNPMVersion) {
|
|
249
|
-
throw new Error(`Couldn't find a matching version in the NPM registry for "${target}"`);
|
|
250
|
-
}
|
|
251
|
-
const semverTarget = index.semVerFactory(targetedNPMVersion.version);
|
|
252
|
-
if (semver__default.default.eq(semverTarget, project.strapiVersion)) {
|
|
253
|
-
throw new Error(`The project is already on ${codemodRunner.version(semverTarget)}`);
|
|
254
|
-
}
|
|
255
|
-
return new Upgrader(project, semverTarget, npmPackage);
|
|
256
|
-
};
|
|
257
|
-
const successReport = () => ({ success: true, error: null });
|
|
258
|
-
const erroredReport = (error) => ({ success: false, error });
|
|
259
|
-
const STRAPI_PACKAGE_NAME = "@strapi/strapi";
|
|
260
|
-
const NPM_REGISTRY_URL = "https://registry.npmjs.org";
|
|
261
|
-
class Package {
|
|
262
|
-
name;
|
|
263
|
-
packageURL;
|
|
264
|
-
npmPackage;
|
|
265
|
-
constructor(name) {
|
|
266
|
-
this.name = name;
|
|
267
|
-
this.packageURL = `${NPM_REGISTRY_URL}/${name}`;
|
|
268
|
-
this.npmPackage = null;
|
|
269
|
-
}
|
|
270
|
-
get isLoaded() {
|
|
271
|
-
return this.npmPackage !== null;
|
|
272
|
-
}
|
|
273
|
-
assertPackageIsLoaded(npmPackage) {
|
|
274
|
-
assert__default.default(this.isLoaded, "The package is not loaded yet");
|
|
275
|
-
}
|
|
276
|
-
getVersionsDict() {
|
|
277
|
-
this.assertPackageIsLoaded(this.npmPackage);
|
|
278
|
-
return this.npmPackage.versions;
|
|
279
|
-
}
|
|
280
|
-
getVersionsAsList() {
|
|
281
|
-
this.assertPackageIsLoaded(this.npmPackage);
|
|
282
|
-
return Object.values(this.npmPackage.versions);
|
|
283
|
-
}
|
|
284
|
-
findVersionsInRange(range) {
|
|
285
|
-
const versions = this.getVersionsAsList();
|
|
286
|
-
return versions.filter((v) => range.test(v.version)).filter((v) => index.isLiteralSemVer(v.version)).sort((v1, v2) => semver__default.default.compare(v1.version, v2.version));
|
|
287
|
-
}
|
|
288
|
-
findVersion(version) {
|
|
289
|
-
const versions = this.getVersionsAsList();
|
|
290
|
-
return versions.find((npmVersion) => semver__default.default.eq(npmVersion.version, version));
|
|
291
|
-
}
|
|
292
|
-
async refresh() {
|
|
293
|
-
const response = await fetch(this.packageURL);
|
|
294
|
-
assert__default.default(response.ok, `Request failed for ${this.packageURL}`);
|
|
295
|
-
this.npmPackage = await response.json();
|
|
296
|
-
return this;
|
|
297
|
-
}
|
|
298
|
-
versionExists(version) {
|
|
299
|
-
return this.findVersion(version) !== void 0;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
const npmPackageFactory = (name) => new Package(name);
|
|
303
|
-
const upgrade$1 = async (options) => {
|
|
304
|
-
const timer = codemodRunner.timerFactory();
|
|
305
|
-
const { logger, codemodsTarget } = options;
|
|
306
|
-
const cwd = path__default.default.resolve(options.cwd ?? process.cwd());
|
|
307
|
-
const project = codemodRunner.projectFactory(cwd);
|
|
308
|
-
if (!codemodRunner.isAppProject(project)) {
|
|
309
|
-
throw new Error(
|
|
310
|
-
`The "${options.target}" upgrade can only be run on a Strapi project; for plugins, please use "codemods".`
|
|
311
|
-
);
|
|
312
|
-
}
|
|
313
|
-
const npmPackage = npmPackageFactory(STRAPI_PACKAGE_NAME);
|
|
314
|
-
await npmPackage.refresh();
|
|
315
|
-
const upgrader = upgraderFactory(project, options.target, npmPackage).dry(options.dry ?? false).onConfirm(options.confirm ?? null).setLogger(logger);
|
|
316
|
-
if (codemodsTarget !== void 0) {
|
|
317
|
-
upgrader.overrideCodemodsTarget(codemodsTarget);
|
|
318
|
-
}
|
|
319
|
-
if (options.target === index.ReleaseType.Major) {
|
|
320
|
-
upgrader.addRequirement(REQUIRE_AVAILABLE_NEXT_MAJOR).addRequirement(REQUIRE_LATEST_FOR_CURRENT_MAJOR);
|
|
321
|
-
}
|
|
322
|
-
upgrader.addRequirement(codemodRunner.REQUIRE_GIT.asOptional());
|
|
323
|
-
const upgradeReport = await upgrader.upgrade();
|
|
324
|
-
if (!upgradeReport.success) {
|
|
325
|
-
throw upgradeReport.error;
|
|
326
|
-
}
|
|
327
|
-
timer.stop();
|
|
328
|
-
logger.info(`Completed in ${codemodRunner.durationMs(timer.elapsedMs)}`);
|
|
329
|
-
};
|
|
330
|
-
const upgrade = async (options) => {
|
|
331
|
-
try {
|
|
332
|
-
const { silent, debug, yes } = options;
|
|
333
|
-
const logger = codemodRunner.loggerFactory({ silent, debug });
|
|
334
|
-
logger.warn(
|
|
335
|
-
"Please make sure you've created a backup of your codebase and files before upgrading"
|
|
336
|
-
);
|
|
337
|
-
const confirm = async (message) => {
|
|
338
|
-
if (yes) {
|
|
339
|
-
return true;
|
|
340
|
-
}
|
|
341
|
-
const { confirm: confirm2 } = await prompts__default.default({
|
|
342
|
-
name: "confirm",
|
|
343
|
-
type: "confirm",
|
|
344
|
-
message
|
|
345
|
-
});
|
|
346
|
-
return confirm2 ?? false;
|
|
347
|
-
};
|
|
348
|
-
await upgrade$1({
|
|
349
|
-
logger,
|
|
350
|
-
confirm,
|
|
351
|
-
dry: options.dry,
|
|
352
|
-
cwd: options.projectPath,
|
|
353
|
-
target: options.target,
|
|
354
|
-
codemodsTarget: options.codemodsTarget
|
|
355
|
-
});
|
|
356
|
-
} catch (err) {
|
|
357
|
-
codemodRunner.handleError(err, options.silent);
|
|
358
|
-
}
|
|
359
|
-
};
|
|
360
|
-
exports.upgrade = upgrade;
|
|
361
|
-
//# sourceMappingURL=upgrade-_IPNaAR-.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-_IPNaAR-.js","sources":["../../src/tasks/upgrade/requirements/major.ts","../../src/modules/upgrader/upgrader.ts","../../src/modules/upgrader/constants.ts","../../src/modules/npm/constants.ts","../../src/modules/npm/package.ts","../../src/tasks/upgrade/upgrade.ts","../../src/cli/commands/upgrade.ts"],"sourcesContent":["import { requirementFactory } from '../../../modules/requirement';\n\nexport const REQUIRE_AVAILABLE_NEXT_MAJOR = requirementFactory(\n 'REQUIRE_AVAILABLE_NEXT_MAJOR',\n (context) => {\n const { project, target } = context;\n\n const currentMajor = project.strapiVersion.major;\n const targetedMajor = target.major;\n\n if (targetedMajor === currentMajor) {\n throw new Error(`You're already on the latest major version (v${currentMajor})`);\n }\n }\n);\n\nexport const REQUIRE_LATEST_FOR_CURRENT_MAJOR = requirementFactory(\n 'REQUIRE_LATEST_FOR_CURRENT_MAJOR',\n (context) => {\n const { project, target, npmVersionsMatches } = context;\n\n if (npmVersionsMatches.length !== 1) {\n const invalidVersions = npmVersionsMatches.slice(0, -1);\n const invalidVersionsAsSemVer = invalidVersions.map((v) => v.version);\n const nbInvalidVersions = npmVersionsMatches.length;\n const currentMajor = project.strapiVersion.major;\n\n throw new Error(\n `Doing a major upgrade requires to be on the latest v${currentMajor} version, but found ${nbInvalidVersions} versions between the current one and ${target}: ${invalidVersionsAsSemVer}`\n );\n }\n }\n);\n","import chalk from 'chalk';\nimport semver from 'semver';\nimport { packageManager } from '@strapi/utils';\n\nimport { createJSONTransformAPI, saveJSON } from '../json';\nimport { constants as projectConstants } from '../project';\nimport {\n isSemverInstance,\n isSemVerReleaseType,\n isValidSemVer,\n rangeFromVersions,\n semVerFactory,\n} from '../version';\nimport { unknownToError } from '../error';\nimport * as f from '../format';\nimport { codemodRunnerFactory } from '../codemod-runner';\n\nimport type { Upgrader as UpgraderInterface, UpgradeReport } from './types';\nimport type { Version } from '../version';\nimport type { Logger } from '../logger';\nimport type { Requirement } from '../requirement';\nimport type { NPM } from '../npm';\nimport type { AppProject } from '../project';\nimport type { ConfirmationCallback } from '../common/types';\n\ntype DependenciesEntries = Array<[name: string, version: Version.SemVer]>;\n\nexport class Upgrader implements UpgraderInterface {\n private readonly project: AppProject;\n\n private readonly npmPackage: NPM.Package;\n\n private target: Version.SemVer;\n\n private codemodsTarget!: Version.SemVer;\n\n private isDry: boolean;\n\n private logger: Logger | null;\n\n private requirements: Requirement.Requirement[];\n\n private confirmationCallback: ConfirmationCallback | null;\n\n constructor(project: AppProject, target: Version.SemVer, npmPackage: NPM.Package) {\n this.project = project;\n this.npmPackage = npmPackage;\n\n this.target = target;\n this.syncCodemodsTarget();\n\n this.isDry = false;\n\n this.requirements = [];\n\n this.logger = null;\n this.confirmationCallback = null;\n }\n\n setRequirements(requirements: Requirement.Requirement[]) {\n this.requirements = requirements;\n return this;\n }\n\n setTarget(target: Version.SemVer) {\n this.target = target;\n return this;\n }\n\n syncCodemodsTarget() {\n // Extract the <major>.<minor>.<patch> version from the target and assign it to the codemods target\n //\n // This is useful when dealing with alphas, betas or release candidates:\n // e.g. \"5.0.0-beta.1\" becomes \"5.0.0\"\n //\n // For experimental versions (e.g. \"0.0.0-experimental.hex\"), it is necessary to\n // override the codemods target manually in order to run the appropriate ones.\n this.codemodsTarget = semVerFactory(\n `${this.target.major}.${this.target.minor}.${this.target.patch}`\n );\n\n this.logger?.debug(\n `The codemods target has been synced with the upgrade target. The codemod runner will now look for ${f.version(\n this.codemodsTarget\n )}`\n );\n\n return this;\n }\n\n overrideCodemodsTarget(target: Version.SemVer) {\n this.codemodsTarget = target;\n\n this.logger?.debug(\n `Overriding the codemods target. The codemod runner will now look for ${f.version(target)}`\n );\n\n return this;\n }\n\n setLogger(logger: Logger) {\n this.logger = logger;\n return this;\n }\n\n onConfirm(callback: ConfirmationCallback | null) {\n this.confirmationCallback = callback;\n return this;\n }\n\n dry(enabled: boolean = true) {\n this.isDry = enabled;\n return this;\n }\n\n addRequirement(requirement: Requirement.Requirement) {\n this.requirements.push(requirement);\n\n const fRequired = requirement.isRequired ? '(required)' : '(optional)';\n this.logger?.debug(\n `Added a new requirement to the upgrade: ${f.highlight(requirement.name)} ${fRequired}`\n );\n\n return this;\n }\n\n async upgrade(): Promise<UpgradeReport> {\n this.logger?.info(\n `Upgrading from ${f.version(this.project.strapiVersion)} to ${f.version(this.target)}`\n );\n\n if (this.isDry) {\n this.logger?.warn(\n 'Running the upgrade in dry mode. No files will be modified during the process.'\n );\n }\n\n const range = rangeFromVersions(this.project.strapiVersion, this.target);\n const codemodsRange = rangeFromVersions(this.project.strapiVersion, this.codemodsTarget);\n\n const npmVersionsMatches = this.npmPackage?.findVersionsInRange(range) ?? [];\n\n this.logger?.debug(\n `Found ${f.highlight(npmVersionsMatches.length)} versions satisfying ${f.versionRange(range)}`\n );\n\n try {\n this.logger?.info(f.upgradeStep('Checking requirement', [1, 4]));\n await this.checkRequirements(this.requirements, {\n npmVersionsMatches,\n project: this.project,\n target: this.target,\n });\n\n this.logger?.info(f.upgradeStep('Applying the latest code modifications', [2, 4]));\n await this.runCodemods(codemodsRange);\n\n // We need to refresh the project files to make sure we have\n // the latest version of each file (including package.json) for the next steps\n this.logger?.debug('Refreshing project information...');\n this.project.refresh();\n\n this.logger?.info(f.upgradeStep('Upgrading Strapi dependencies', [3, 4]));\n await this.updateDependencies();\n\n this.logger?.info(f.upgradeStep('Installing dependencies', [4, 4]));\n await this.installDependencies();\n } catch (e) {\n return erroredReport(unknownToError(e));\n }\n\n return successReport();\n }\n\n private async checkRequirements(\n requirements: Requirement.Requirement[],\n context: Requirement.TestContext\n ) {\n for (const requirement of requirements) {\n const { pass, error } = await requirement.test(context);\n\n if (pass) {\n await this.onSuccessfulRequirement(requirement, context);\n } else {\n await this.onFailedRequirement(requirement, error);\n }\n }\n }\n\n private async onSuccessfulRequirement(\n requirement: Requirement.Requirement,\n context: Requirement.TestContext\n ): Promise<void> {\n const hasChildren = requirement.children.length > 0;\n\n if (hasChildren) {\n await this.checkRequirements(requirement.children, context);\n }\n }\n\n private async onFailedRequirement(\n requirement: Requirement.Requirement,\n originalError: Error\n ): Promise<void> {\n const errorMessage = `Requirement failed: ${originalError.message} (${f.highlight(\n requirement.name\n )})`;\n const warningMessage = originalError.message;\n const confirmationMessage = `Ignore optional requirement \"${f.highlight(requirement.name)}\" ?`;\n\n const error = new Error(errorMessage);\n\n if (requirement.isRequired) {\n throw error;\n }\n\n this.logger?.warn(warningMessage);\n\n const response = await this.confirmationCallback?.(confirmationMessage);\n\n if (!response) {\n throw error;\n }\n }\n\n private async updateDependencies(): Promise<void> {\n const { packageJSON, packageJSONPath } = this.project;\n\n const json = createJSONTransformAPI(packageJSON);\n\n const dependencies = json.get<Record<string, string>>('dependencies', {});\n const strapiDependencies = this.getScopedStrapiDependencies(dependencies);\n\n this.logger?.debug(`Found ${f.highlight(strapiDependencies.length)} dependency(ies) to update`);\n strapiDependencies.forEach((dependency) =>\n this.logger?.debug(`- ${dependency[0]} (${dependency[1]} -> ${this.target})`)\n );\n\n if (strapiDependencies.length === 0) {\n return;\n }\n\n strapiDependencies.forEach(([name]) => json.set(`dependencies.${name}`, this.target.raw));\n\n const updatedPackageJSON = json.root();\n\n if (this.isDry) {\n this.logger?.debug(`Skipping dependencies update (${chalk.italic('dry mode')})`);\n return;\n }\n\n await saveJSON(packageJSONPath, updatedPackageJSON);\n }\n\n private getScopedStrapiDependencies(dependencies: Record<string, string>): DependenciesEntries {\n const { strapiVersion } = this.project;\n\n const strapiDependencies: DependenciesEntries = [];\n\n // Find all @strapi/* packages matching the current Strapi version\n for (const [name, version] of Object.entries(dependencies)) {\n const isScopedStrapiPackage = name.startsWith(projectConstants.SCOPED_STRAPI_PACKAGE_PREFIX);\n const isOnCurrentStrapiVersion = isValidSemVer(version) && version === strapiVersion.raw;\n\n if (isScopedStrapiPackage && isOnCurrentStrapiVersion) {\n strapiDependencies.push([name, semVerFactory(version)]);\n }\n }\n\n return strapiDependencies;\n }\n\n private async installDependencies(): Promise<void> {\n const projectPath = this.project.cwd;\n\n const packageManagerName = await packageManager.getPreferred(projectPath);\n\n this.logger?.debug(`Using ${f.highlight(packageManagerName)} as package manager`);\n\n if (this.isDry) {\n this.logger?.debug(`Skipping dependencies installation (${chalk.italic('dry mode')}`);\n return;\n }\n\n await packageManager.installDependencies(projectPath, packageManagerName, {\n stdout: this.logger?.stdout,\n stderr: this.logger?.stderr,\n });\n }\n\n private async runCodemods(range: Version.Range): Promise<void> {\n const codemodRunner = codemodRunnerFactory(this.project, range);\n codemodRunner.dry(this.isDry);\n if (this.logger) {\n codemodRunner.setLogger(this.logger);\n }\n await codemodRunner.run();\n }\n}\n\n/**\n * Resolves the NPM target version based on the given project, target, and NPM package.\n * If target is a SemVer, it directly finds it. If it's a release type (major, minor, patch),\n * it calculates the range of versions for this release type and returns the latest version within this range.\n */\nconst resolveNPMTarget = (\n project: AppProject,\n target: Version.ReleaseType | Version.SemVer,\n npmPackage: NPM.Package\n): NPM.NPMPackageVersion | undefined => {\n // Semver\n if (isSemverInstance(target)) {\n return npmPackage.findVersion(target);\n }\n\n // Release Types\n if (isSemVerReleaseType(target)) {\n const range = rangeFromVersions(project.strapiVersion, target);\n const npmVersionsMatches = npmPackage.findVersionsInRange(range);\n\n // The targeted version is the latest one that matches the given range\n return npmVersionsMatches.at(-1);\n }\n\n return undefined;\n};\n\nexport const upgraderFactory = (\n project: AppProject,\n target: Version.ReleaseType | Version.SemVer,\n npmPackage: NPM.Package\n) => {\n const targetedNPMVersion = resolveNPMTarget(project, target, npmPackage);\n if (!targetedNPMVersion) {\n throw new Error(`Couldn't find a matching version in the NPM registry for \"${target}\"`);\n }\n\n const semverTarget = semVerFactory(targetedNPMVersion.version);\n\n if (semver.eq(semverTarget, project.strapiVersion)) {\n throw new Error(`The project is already on ${f.version(semverTarget)}`);\n }\n\n return new Upgrader(project, semverTarget, npmPackage);\n};\n\nconst successReport = (): UpgradeReport => ({ success: true, error: null });\nconst erroredReport = (error: Error): UpgradeReport => ({ success: false, error });\n","export const STRAPI_PACKAGE_NAME = '@strapi/strapi';\n","export const NPM_REGISTRY_URL = 'https://registry.npmjs.org';\n","import assert from 'node:assert';\nimport semver from 'semver';\n\nimport * as constants from './constants';\nimport { isLiteralSemVer } from '../version';\n\nimport type { Package as PackageInterface, NPMPackage, NPMPackageVersion } from './types';\nimport type { Version } from '../version';\n\nexport class Package implements PackageInterface {\n name: string;\n\n packageURL: string;\n\n private npmPackage: NPMPackage | null;\n\n constructor(name: string) {\n this.name = name;\n this.packageURL = `${constants.NPM_REGISTRY_URL}/${name}`;\n this.npmPackage = null;\n }\n\n get isLoaded() {\n return this.npmPackage !== null;\n }\n\n private assertPackageIsLoaded(npmPackage: NPMPackage | null): asserts npmPackage is NPMPackage {\n assert(this.isLoaded, 'The package is not loaded yet');\n }\n\n getVersionsDict() {\n this.assertPackageIsLoaded(this.npmPackage);\n\n return this.npmPackage.versions;\n }\n\n getVersionsAsList() {\n this.assertPackageIsLoaded(this.npmPackage);\n\n return Object.values(this.npmPackage.versions);\n }\n\n findVersionsInRange(range: Version.Range) {\n const versions = this.getVersionsAsList();\n\n return (\n versions\n // Only select versions matching the upgrade range\n .filter((v) => range.test(v.version))\n // Only select supported version format (x.x.x)\n .filter((v) => isLiteralSemVer(v.version))\n // Sort in ascending order\n .sort((v1, v2) => semver.compare(v1.version, v2.version))\n );\n }\n\n findVersion(version: Version.SemVer): NPMPackageVersion | undefined {\n const versions = this.getVersionsAsList();\n\n return versions.find((npmVersion) => semver.eq(npmVersion.version, version));\n }\n\n async refresh() {\n const response = await fetch(this.packageURL);\n\n // TODO: Use a validation library to make sure the response structure is correct\n assert(response.ok, `Request failed for ${this.packageURL}`);\n\n this.npmPackage = await response.json();\n\n return this;\n }\n\n versionExists(version: Version.SemVer) {\n return this.findVersion(version) !== undefined;\n }\n}\n\nexport const npmPackageFactory = (name: string) => new Package(name);\n","import path from 'node:path';\n\nimport * as requirements from './requirements';\nimport { timerFactory } from '../../modules/timer';\nimport { upgraderFactory, constants as upgraderConstants } from '../../modules/upgrader';\nimport { npmPackageFactory } from '../../modules/npm';\nimport { projectFactory, isAppProject } from '../../modules/project';\nimport * as f from '../../modules/format';\nimport { Version } from '../../modules/version';\n\nimport type { UpgradeOptions } from './types';\n\nexport const upgrade = async (options: UpgradeOptions) => {\n const timer = timerFactory();\n const { logger, codemodsTarget } = options;\n\n // Make sure we're resolving the correct working directory based on the given input\n const cwd = path.resolve(options.cwd ?? process.cwd());\n\n const project = projectFactory(cwd);\n\n if (!isAppProject(project)) {\n throw new Error(\n `The \"${options.target}\" upgrade can only be run on a Strapi project; for plugins, please use \"codemods\".`\n );\n }\n const npmPackage = npmPackageFactory(upgraderConstants.STRAPI_PACKAGE_NAME);\n // Load all versions from the registry\n await npmPackage.refresh();\n\n const upgrader = upgraderFactory(project, options.target, npmPackage)\n .dry(options.dry ?? false)\n .onConfirm(options.confirm ?? null)\n .setLogger(logger);\n\n // Manually override the target version for codemods if it's explicitly provided\n if (codemodsTarget !== undefined) {\n upgrader.overrideCodemodsTarget(codemodsTarget);\n }\n\n // We're not adding the same requirements (e.g. \"REQUIRE_LATEST_FOR_CURRENT_MAJOR\") when manually targeting a\n // major upgrade (using a semver) as it's implied that the user knows what they're doing\n if (options.target === Version.ReleaseType.Major) {\n upgrader\n .addRequirement(requirements.major.REQUIRE_AVAILABLE_NEXT_MAJOR)\n .addRequirement(requirements.major.REQUIRE_LATEST_FOR_CURRENT_MAJOR);\n }\n\n // Make sure the git repository is in an optimal state before running the upgrade\n // Mainly used to ease rollbacks in case the upgrade is corrupted\n upgrader.addRequirement(requirements.common.REQUIRE_GIT.asOptional());\n\n // Actually run the upgrade process once configured\n // The response contains information about the final status (success/error)\n const upgradeReport = await upgrader.upgrade();\n\n if (!upgradeReport.success) {\n throw upgradeReport.error;\n }\n\n timer.stop();\n\n logger.info(`Completed in ${f.durationMs(timer.elapsedMs)}`);\n};\n","import prompts from 'prompts';\n\nimport { loggerFactory } from '../../modules/logger';\nimport { handleError } from '../errors';\nimport * as tasks from '../../tasks';\n\nimport type { UpgradeCommand } from '../types';\n\nexport const upgrade: UpgradeCommand = async (options) => {\n try {\n const { silent, debug, yes } = options;\n const logger = loggerFactory({ silent, debug });\n\n logger.warn(\n \"Please make sure you've created a backup of your codebase and files before upgrading\"\n );\n\n const confirm = async (message: string) => {\n if (yes) {\n return true;\n }\n\n const { confirm } = await prompts({\n name: 'confirm',\n type: 'confirm',\n message,\n });\n\n // If confirm is undefined (Ctrl + C), default to false\n return confirm ?? false;\n };\n\n await tasks.upgrade({\n logger,\n confirm,\n dry: options.dry,\n cwd: options.projectPath,\n target: options.target,\n codemodsTarget: options.codemodsTarget,\n });\n } catch (err) {\n handleError(err, options.silent);\n }\n};\n"],"names":["requirementFactory","semVerFactory","f.version","f.highlight","rangeFromVersions","f.versionRange","f.upgradeStep","unknownToError","createJSONTransformAPI","chalk","saveJSON","projectConstants.SCOPED_STRAPI_PACKAGE_PREFIX","isValidSemVer","packageManager","codemodRunner","codemodRunnerFactory","isSemverInstance","isSemVerReleaseType","semver","constants.NPM_REGISTRY_URL","assert","isLiteralSemVer","upgrade","timerFactory","path","projectFactory","isAppProject","upgraderConstants.STRAPI_PACKAGE_NAME","Version.ReleaseType","requirements.major.REQUIRE_AVAILABLE_NEXT_MAJOR","requirements.major.REQUIRE_LATEST_FOR_CURRENT_MAJOR","requirements.common.REQUIRE_GIT","f.durationMs","loggerFactory","confirm","prompts","tasks.upgrade","handleError"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codemods.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/codemods.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,QAAQ,YAAmB,kBAAkB,kBA0BzD,CAAC"}
|