@strapi/upgrade 0.0.0-next.3c5400321681b66eb35ab84c11113a78c1d9386e → 0.0.0-next.3db8f1fc613b89bf7742dc5746bf21a8d8ba0d04
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 +98 -26
- package/dist/cli.js.map +1 -1
- package/dist/index.js +70 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +70 -4
- package/dist/index.mjs.map +1 -1
- package/dist/modules/error/utils.d.ts +3 -0
- package/dist/modules/error/utils.d.ts.map +1 -1
- package/dist/modules/upgrader/types.d.ts +6 -0
- package/dist/modules/upgrader/types.d.ts.map +1 -1
- package/dist/modules/upgrader/upgrader.d.ts +4 -0
- package/dist/modules/upgrader/upgrader.d.ts.map +1 -1
- package/dist/modules/version/range.d.ts.map +1 -1
- package/dist/modules/version/types.d.ts +2 -1
- package/dist/modules/version/types.d.ts.map +1 -1
- package/dist/tasks/codemods/utils.d.ts.map +1 -1
- package/dist/tasks/upgrade/prompts/index.d.ts +2 -0
- package/dist/tasks/upgrade/prompts/index.d.ts.map +1 -0
- package/dist/tasks/upgrade/prompts/latest.d.ts +9 -0
- package/dist/tasks/upgrade/prompts/latest.d.ts.map +1 -0
- package/dist/tasks/upgrade/upgrade.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/index.mjs
CHANGED
|
@@ -134,6 +134,7 @@ var ReleaseType = /* @__PURE__ */ ((ReleaseType2) => {
|
|
|
134
134
|
ReleaseType2["Major"] = "major";
|
|
135
135
|
ReleaseType2["Minor"] = "minor";
|
|
136
136
|
ReleaseType2["Patch"] = "patch";
|
|
137
|
+
ReleaseType2["Latest"] = "latest";
|
|
137
138
|
return ReleaseType2;
|
|
138
139
|
})(ReleaseType || {});
|
|
139
140
|
const types = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -159,6 +160,9 @@ const rangeFactory = (range) => {
|
|
|
159
160
|
};
|
|
160
161
|
const rangeFromReleaseType = (current, identifier) => {
|
|
161
162
|
switch (identifier) {
|
|
163
|
+
case ReleaseType.Latest: {
|
|
164
|
+
return rangeFactory(`>${current.raw}`);
|
|
165
|
+
}
|
|
162
166
|
case ReleaseType.Major: {
|
|
163
167
|
const nextMajor = semVerFactory(current.raw).inc("major");
|
|
164
168
|
return rangeFactory(`>${current.raw} <=${nextMajor.major}`);
|
|
@@ -646,6 +650,11 @@ class NPMCandidateNotFoundError extends Error {
|
|
|
646
650
|
this.target = target;
|
|
647
651
|
}
|
|
648
652
|
}
|
|
653
|
+
class AbortedError extends Error {
|
|
654
|
+
constructor(message = "Upgrade aborted") {
|
|
655
|
+
super(message);
|
|
656
|
+
}
|
|
657
|
+
}
|
|
649
658
|
const unknownToError = (e) => {
|
|
650
659
|
if (e instanceof Error) {
|
|
651
660
|
return e;
|
|
@@ -657,6 +666,7 @@ const unknownToError = (e) => {
|
|
|
657
666
|
};
|
|
658
667
|
const index$9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
659
668
|
__proto__: null,
|
|
669
|
+
AbortedError,
|
|
660
670
|
NPMCandidateNotFoundError,
|
|
661
671
|
UnexpectedError,
|
|
662
672
|
unknownToError
|
|
@@ -938,6 +948,15 @@ class Upgrader {
|
|
|
938
948
|
this.logger = null;
|
|
939
949
|
this.confirmationCallback = null;
|
|
940
950
|
}
|
|
951
|
+
getNPMPackage() {
|
|
952
|
+
return this.npmPackage;
|
|
953
|
+
}
|
|
954
|
+
getProject() {
|
|
955
|
+
return this.project;
|
|
956
|
+
}
|
|
957
|
+
getTarget() {
|
|
958
|
+
return semVerFactory(this.target.raw);
|
|
959
|
+
}
|
|
941
960
|
setRequirements(requirements) {
|
|
942
961
|
this.requirements = requirements;
|
|
943
962
|
return this;
|
|
@@ -1019,6 +1038,12 @@ class Upgrader {
|
|
|
1019
1038
|
}
|
|
1020
1039
|
return successReport();
|
|
1021
1040
|
}
|
|
1041
|
+
async confirm(message) {
|
|
1042
|
+
if (typeof this.confirmationCallback !== "function") {
|
|
1043
|
+
return true;
|
|
1044
|
+
}
|
|
1045
|
+
return this.confirmationCallback(message);
|
|
1046
|
+
}
|
|
1022
1047
|
async checkRequirements(requirements, context) {
|
|
1023
1048
|
for (const requirement of requirements) {
|
|
1024
1049
|
const { pass, error } = await requirement.test(context);
|
|
@@ -1261,6 +1286,36 @@ const REQUIRE_GIT_INSTALLED = requirementFactory(
|
|
|
1261
1286
|
const REQUIRE_GIT = requirementFactory("REQUIRE_GIT", null).addChild(
|
|
1262
1287
|
REQUIRE_GIT_INSTALLED.asOptional()
|
|
1263
1288
|
);
|
|
1289
|
+
const latest = async (upgrader, options) => {
|
|
1290
|
+
if (options.target !== ReleaseType.Latest) {
|
|
1291
|
+
return;
|
|
1292
|
+
}
|
|
1293
|
+
const npmPackage = upgrader.getNPMPackage();
|
|
1294
|
+
const target = upgrader.getTarget();
|
|
1295
|
+
const project = upgrader.getProject();
|
|
1296
|
+
const { strapiVersion: current } = project;
|
|
1297
|
+
const fTargetMajor = highlight(`v${target.major}`);
|
|
1298
|
+
const fCurrentMajor = highlight(`v${current.major}`);
|
|
1299
|
+
const fTarget = version(target);
|
|
1300
|
+
const fCurrent = version(current);
|
|
1301
|
+
const isMajorUpgrade = target.major > current.major;
|
|
1302
|
+
if (isMajorUpgrade) {
|
|
1303
|
+
options.logger.warn(
|
|
1304
|
+
`Detected a major upgrade for the "${highlight(ReleaseType.Latest)}" tag: ${fCurrent} > ${fTarget}`
|
|
1305
|
+
);
|
|
1306
|
+
const newerPackageRelease = npmPackage.findVersionsInRange(rangeFactory(`>${current.raw} <${target.major}`)).at(-1);
|
|
1307
|
+
if (newerPackageRelease) {
|
|
1308
|
+
const fLatest = version(semVerFactory(newerPackageRelease.version));
|
|
1309
|
+
options.logger.warn(
|
|
1310
|
+
`It's recommended to first upgrade to the latest version of ${fCurrentMajor} (${fLatest}) before upgrading to ${fTargetMajor}.`
|
|
1311
|
+
);
|
|
1312
|
+
}
|
|
1313
|
+
const proceedAnyway = await upgrader.confirm(`I know what I'm doing. Proceed anyway!`);
|
|
1314
|
+
if (!proceedAnyway) {
|
|
1315
|
+
throw new AbortedError();
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1318
|
+
};
|
|
1264
1319
|
const upgrade = async (options) => {
|
|
1265
1320
|
const timer = timerFactory();
|
|
1266
1321
|
const { logger, codemodsTarget } = options;
|
|
@@ -1281,10 +1336,8 @@ const upgrade = async (options) => {
|
|
|
1281
1336
|
if (codemodsTarget !== void 0) {
|
|
1282
1337
|
upgrader.overrideCodemodsTarget(codemodsTarget);
|
|
1283
1338
|
}
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
}
|
|
1287
|
-
upgrader.addRequirement(REQUIRE_GIT.asOptional());
|
|
1339
|
+
await runUpgradePrompts(upgrader, options);
|
|
1340
|
+
addUpgradeRequirements(upgrader, options);
|
|
1288
1341
|
const upgradeReport = await upgrader.upgrade();
|
|
1289
1342
|
if (!upgradeReport.success) {
|
|
1290
1343
|
throw upgradeReport.error;
|
|
@@ -1292,6 +1345,17 @@ const upgrade = async (options) => {
|
|
|
1292
1345
|
timer.stop();
|
|
1293
1346
|
logger.info(`Completed in ${durationMs(timer.elapsedMs)}ms`);
|
|
1294
1347
|
};
|
|
1348
|
+
const runUpgradePrompts = async (upgrader, options) => {
|
|
1349
|
+
if (options.target === ReleaseType.Latest) {
|
|
1350
|
+
await latest(upgrader, options);
|
|
1351
|
+
}
|
|
1352
|
+
};
|
|
1353
|
+
const addUpgradeRequirements = (upgrader, options) => {
|
|
1354
|
+
if (options.target === ReleaseType.Major) {
|
|
1355
|
+
upgrader.addRequirement(REQUIRE_AVAILABLE_NEXT_MAJOR).addRequirement(REQUIRE_LATEST_FOR_CURRENT_MAJOR);
|
|
1356
|
+
}
|
|
1357
|
+
upgrader.addRequirement(REQUIRE_GIT.asOptional());
|
|
1358
|
+
};
|
|
1295
1359
|
const resolvePath = (cwd) => path$1.resolve(cwd ?? process.cwd());
|
|
1296
1360
|
const getRangeFromTarget = (currentVersion, target) => {
|
|
1297
1361
|
if (isSemverInstance(target)) {
|
|
@@ -1299,6 +1363,8 @@ const getRangeFromTarget = (currentVersion, target) => {
|
|
|
1299
1363
|
}
|
|
1300
1364
|
const { major, minor, patch } = currentVersion;
|
|
1301
1365
|
switch (target) {
|
|
1366
|
+
case ReleaseType.Latest:
|
|
1367
|
+
throw new Error("Can't use <latest> to create a codemods range: not implemented");
|
|
1302
1368
|
case ReleaseType.Major:
|
|
1303
1369
|
return rangeFactory(`${major}`);
|
|
1304
1370
|
case ReleaseType.Minor:
|