@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.js
CHANGED
|
@@ -145,6 +145,7 @@ var ReleaseType = /* @__PURE__ */ ((ReleaseType2) => {
|
|
|
145
145
|
ReleaseType2["Major"] = "major";
|
|
146
146
|
ReleaseType2["Minor"] = "minor";
|
|
147
147
|
ReleaseType2["Patch"] = "patch";
|
|
148
|
+
ReleaseType2["Latest"] = "latest";
|
|
148
149
|
return ReleaseType2;
|
|
149
150
|
})(ReleaseType || {});
|
|
150
151
|
const types = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -170,6 +171,9 @@ const rangeFactory = (range) => {
|
|
|
170
171
|
};
|
|
171
172
|
const rangeFromReleaseType = (current, identifier) => {
|
|
172
173
|
switch (identifier) {
|
|
174
|
+
case ReleaseType.Latest: {
|
|
175
|
+
return rangeFactory(`>${current.raw}`);
|
|
176
|
+
}
|
|
173
177
|
case ReleaseType.Major: {
|
|
174
178
|
const nextMajor = semVerFactory(current.raw).inc("major");
|
|
175
179
|
return rangeFactory(`>${current.raw} <=${nextMajor.major}`);
|
|
@@ -657,6 +661,11 @@ class NPMCandidateNotFoundError extends Error {
|
|
|
657
661
|
this.target = target;
|
|
658
662
|
}
|
|
659
663
|
}
|
|
664
|
+
class AbortedError extends Error {
|
|
665
|
+
constructor(message = "Upgrade aborted") {
|
|
666
|
+
super(message);
|
|
667
|
+
}
|
|
668
|
+
}
|
|
660
669
|
const unknownToError = (e) => {
|
|
661
670
|
if (e instanceof Error) {
|
|
662
671
|
return e;
|
|
@@ -668,6 +677,7 @@ const unknownToError = (e) => {
|
|
|
668
677
|
};
|
|
669
678
|
const index$9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
670
679
|
__proto__: null,
|
|
680
|
+
AbortedError,
|
|
671
681
|
NPMCandidateNotFoundError,
|
|
672
682
|
UnexpectedError,
|
|
673
683
|
unknownToError
|
|
@@ -949,6 +959,15 @@ class Upgrader {
|
|
|
949
959
|
this.logger = null;
|
|
950
960
|
this.confirmationCallback = null;
|
|
951
961
|
}
|
|
962
|
+
getNPMPackage() {
|
|
963
|
+
return this.npmPackage;
|
|
964
|
+
}
|
|
965
|
+
getProject() {
|
|
966
|
+
return this.project;
|
|
967
|
+
}
|
|
968
|
+
getTarget() {
|
|
969
|
+
return semVerFactory(this.target.raw);
|
|
970
|
+
}
|
|
952
971
|
setRequirements(requirements) {
|
|
953
972
|
this.requirements = requirements;
|
|
954
973
|
return this;
|
|
@@ -1030,6 +1049,12 @@ class Upgrader {
|
|
|
1030
1049
|
}
|
|
1031
1050
|
return successReport();
|
|
1032
1051
|
}
|
|
1052
|
+
async confirm(message) {
|
|
1053
|
+
if (typeof this.confirmationCallback !== "function") {
|
|
1054
|
+
return true;
|
|
1055
|
+
}
|
|
1056
|
+
return this.confirmationCallback(message);
|
|
1057
|
+
}
|
|
1033
1058
|
async checkRequirements(requirements, context) {
|
|
1034
1059
|
for (const requirement of requirements) {
|
|
1035
1060
|
const { pass, error } = await requirement.test(context);
|
|
@@ -1272,6 +1297,36 @@ const REQUIRE_GIT_INSTALLED = requirementFactory(
|
|
|
1272
1297
|
const REQUIRE_GIT = requirementFactory("REQUIRE_GIT", null).addChild(
|
|
1273
1298
|
REQUIRE_GIT_INSTALLED.asOptional()
|
|
1274
1299
|
);
|
|
1300
|
+
const latest = async (upgrader, options) => {
|
|
1301
|
+
if (options.target !== ReleaseType.Latest) {
|
|
1302
|
+
return;
|
|
1303
|
+
}
|
|
1304
|
+
const npmPackage = upgrader.getNPMPackage();
|
|
1305
|
+
const target = upgrader.getTarget();
|
|
1306
|
+
const project = upgrader.getProject();
|
|
1307
|
+
const { strapiVersion: current } = project;
|
|
1308
|
+
const fTargetMajor = highlight(`v${target.major}`);
|
|
1309
|
+
const fCurrentMajor = highlight(`v${current.major}`);
|
|
1310
|
+
const fTarget = version(target);
|
|
1311
|
+
const fCurrent = version(current);
|
|
1312
|
+
const isMajorUpgrade = target.major > current.major;
|
|
1313
|
+
if (isMajorUpgrade) {
|
|
1314
|
+
options.logger.warn(
|
|
1315
|
+
`Detected a major upgrade for the "${highlight(ReleaseType.Latest)}" tag: ${fCurrent} > ${fTarget}`
|
|
1316
|
+
);
|
|
1317
|
+
const newerPackageRelease = npmPackage.findVersionsInRange(rangeFactory(`>${current.raw} <${target.major}`)).at(-1);
|
|
1318
|
+
if (newerPackageRelease) {
|
|
1319
|
+
const fLatest = version(semVerFactory(newerPackageRelease.version));
|
|
1320
|
+
options.logger.warn(
|
|
1321
|
+
`It's recommended to first upgrade to the latest version of ${fCurrentMajor} (${fLatest}) before upgrading to ${fTargetMajor}.`
|
|
1322
|
+
);
|
|
1323
|
+
}
|
|
1324
|
+
const proceedAnyway = await upgrader.confirm(`I know what I'm doing. Proceed anyway!`);
|
|
1325
|
+
if (!proceedAnyway) {
|
|
1326
|
+
throw new AbortedError();
|
|
1327
|
+
}
|
|
1328
|
+
}
|
|
1329
|
+
};
|
|
1275
1330
|
const upgrade = async (options) => {
|
|
1276
1331
|
const timer = timerFactory();
|
|
1277
1332
|
const { logger, codemodsTarget } = options;
|
|
@@ -1292,10 +1347,8 @@ const upgrade = async (options) => {
|
|
|
1292
1347
|
if (codemodsTarget !== void 0) {
|
|
1293
1348
|
upgrader.overrideCodemodsTarget(codemodsTarget);
|
|
1294
1349
|
}
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
}
|
|
1298
|
-
upgrader.addRequirement(REQUIRE_GIT.asOptional());
|
|
1350
|
+
await runUpgradePrompts(upgrader, options);
|
|
1351
|
+
addUpgradeRequirements(upgrader, options);
|
|
1299
1352
|
const upgradeReport = await upgrader.upgrade();
|
|
1300
1353
|
if (!upgradeReport.success) {
|
|
1301
1354
|
throw upgradeReport.error;
|
|
@@ -1303,6 +1356,17 @@ const upgrade = async (options) => {
|
|
|
1303
1356
|
timer.stop();
|
|
1304
1357
|
logger.info(`Completed in ${durationMs(timer.elapsedMs)}ms`);
|
|
1305
1358
|
};
|
|
1359
|
+
const runUpgradePrompts = async (upgrader, options) => {
|
|
1360
|
+
if (options.target === ReleaseType.Latest) {
|
|
1361
|
+
await latest(upgrader, options);
|
|
1362
|
+
}
|
|
1363
|
+
};
|
|
1364
|
+
const addUpgradeRequirements = (upgrader, options) => {
|
|
1365
|
+
if (options.target === ReleaseType.Major) {
|
|
1366
|
+
upgrader.addRequirement(REQUIRE_AVAILABLE_NEXT_MAJOR).addRequirement(REQUIRE_LATEST_FOR_CURRENT_MAJOR);
|
|
1367
|
+
}
|
|
1368
|
+
upgrader.addRequirement(REQUIRE_GIT.asOptional());
|
|
1369
|
+
};
|
|
1306
1370
|
const resolvePath = (cwd) => path__default.default.resolve(cwd ?? process.cwd());
|
|
1307
1371
|
const getRangeFromTarget = (currentVersion, target) => {
|
|
1308
1372
|
if (isSemverInstance(target)) {
|
|
@@ -1310,6 +1374,8 @@ const getRangeFromTarget = (currentVersion, target) => {
|
|
|
1310
1374
|
}
|
|
1311
1375
|
const { major, minor, patch } = currentVersion;
|
|
1312
1376
|
switch (target) {
|
|
1377
|
+
case ReleaseType.Latest:
|
|
1378
|
+
throw new Error("Can't use <latest> to create a codemods range: not implemented");
|
|
1313
1379
|
case ReleaseType.Major:
|
|
1314
1380
|
return rangeFactory(`${major}`);
|
|
1315
1381
|
case ReleaseType.Minor:
|