@strapi/upgrade 5.12.0 → 5.12.2
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 +6 -203
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +5 -202
- package/dist/cli.mjs.map +1 -1
- package/dist/index.js +4 -155
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -157
- package/dist/index.mjs.map +1 -1
- package/dist/package.json.js +6 -0
- package/dist/package.json.js.map +1 -0
- package/dist/package.json.mjs +4 -0
- package/dist/package.json.mjs.map +1 -0
- package/dist/src/cli/commands/codemods.js +120 -0
- package/dist/src/cli/commands/codemods.js.map +1 -0
- package/dist/src/cli/commands/codemods.mjs +116 -0
- package/dist/src/cli/commands/codemods.mjs.map +1 -0
- package/dist/src/cli/commands/upgrade.js +99 -0
- package/dist/src/cli/commands/upgrade.js.map +1 -0
- package/dist/src/cli/commands/upgrade.mjs +96 -0
- package/dist/src/cli/commands/upgrade.mjs.map +1 -0
- package/dist/src/cli/errors.js +18 -0
- package/dist/src/cli/errors.js.map +1 -0
- package/dist/src/cli/errors.mjs +16 -0
- package/dist/src/cli/errors.mjs.map +1 -0
- package/dist/src/cli/options.js +26 -0
- package/dist/src/cli/options.js.map +1 -0
- package/dist/src/cli/options.mjs +19 -0
- package/dist/src/cli/options.mjs.map +1 -0
- package/dist/src/modules/codemod/codemod.js +44 -0
- package/dist/src/modules/codemod/codemod.js.map +1 -0
- package/dist/src/modules/codemod/codemod.mjs +41 -0
- package/dist/src/modules/codemod/codemod.mjs.map +1 -0
- package/dist/src/modules/codemod/constants.js +17 -0
- package/dist/src/modules/codemod/constants.js.map +1 -0
- package/dist/src/modules/codemod/constants.mjs +11 -0
- package/dist/src/modules/codemod/constants.mjs.map +1 -0
- package/dist/src/modules/codemod/index.js +10 -0
- package/dist/src/modules/codemod/index.js.map +1 -0
- package/dist/src/modules/codemod/index.mjs +4 -0
- package/dist/src/modules/codemod/index.mjs.map +1 -0
- package/dist/src/modules/codemod-repository/constants.js +9 -0
- package/dist/src/modules/codemod-repository/constants.js.map +1 -0
- package/dist/src/modules/codemod-repository/constants.mjs +7 -0
- package/dist/src/modules/codemod-repository/constants.mjs.map +1 -0
- package/dist/src/modules/codemod-repository/index.js +10 -0
- package/dist/src/modules/codemod-repository/index.js.map +1 -0
- package/dist/src/modules/codemod-repository/index.mjs +4 -0
- package/dist/src/modules/codemod-repository/index.mjs.map +1 -0
- package/dist/src/modules/codemod-repository/repository.js +127 -0
- package/dist/src/modules/codemod-repository/repository.js.map +1 -0
- package/dist/src/modules/codemod-repository/repository.mjs +123 -0
- package/dist/src/modules/codemod-repository/repository.mjs.map +1 -0
- package/dist/src/modules/codemod-runner/codemod-runner.js +113 -0
- package/dist/src/modules/codemod-runner/codemod-runner.js.map +1 -0
- package/dist/src/modules/codemod-runner/codemod-runner.mjs +110 -0
- package/dist/src/modules/codemod-runner/codemod-runner.mjs.map +1 -0
- package/dist/src/modules/error/index.js +11 -0
- package/dist/src/modules/error/index.js.map +1 -0
- package/dist/src/modules/error/index.mjs +2 -0
- package/dist/src/modules/error/index.mjs.map +1 -0
- package/dist/src/modules/error/utils.js +33 -0
- package/dist/src/modules/error/utils.js.map +1 -0
- package/dist/src/modules/error/utils.mjs +28 -0
- package/dist/src/modules/error/utils.mjs.map +1 -0
- package/dist/src/modules/file-scanner/index.js +8 -0
- package/dist/src/modules/file-scanner/index.js.map +1 -0
- package/dist/src/modules/file-scanner/index.mjs +2 -0
- package/dist/src/modules/file-scanner/index.mjs.map +1 -0
- package/dist/src/modules/file-scanner/scanner.js +23 -0
- package/dist/src/modules/file-scanner/scanner.js.map +1 -0
- package/dist/src/modules/file-scanner/scanner.mjs +20 -0
- package/dist/src/modules/file-scanner/scanner.mjs.map +1 -0
- package/dist/src/modules/format/formats.js +107 -0
- package/dist/src/modules/format/formats.js.map +1 -0
- package/dist/src/modules/format/formats.mjs +94 -0
- package/dist/src/modules/format/formats.mjs.map +1 -0
- package/dist/src/modules/format/index.js +19 -0
- package/dist/src/modules/format/index.js.map +1 -0
- package/dist/src/modules/format/index.mjs +2 -0
- package/dist/src/modules/format/index.mjs.map +1 -0
- package/dist/src/modules/index.js +32 -0
- package/dist/src/modules/index.js.map +1 -0
- package/dist/src/modules/index.mjs +27 -0
- package/dist/src/modules/index.mjs.map +1 -0
- package/dist/src/modules/json/file.js +16 -0
- package/dist/src/modules/json/file.js.map +1 -0
- package/dist/src/modules/json/file.mjs +13 -0
- package/dist/src/modules/json/file.mjs.map +1 -0
- package/dist/src/modules/json/transform-api.js +38 -0
- package/dist/src/modules/json/transform-api.js.map +1 -0
- package/dist/src/modules/json/transform-api.mjs +35 -0
- package/dist/src/modules/json/transform-api.mjs.map +1 -0
- package/dist/src/modules/logger/index.js +8 -0
- package/dist/src/modules/logger/index.js.map +1 -0
- package/dist/src/modules/logger/index.mjs +2 -0
- package/dist/src/modules/logger/index.mjs.map +1 -0
- package/dist/src/modules/logger/logger.js +76 -0
- package/dist/src/modules/logger/logger.js.map +1 -0
- package/dist/src/modules/logger/logger.mjs +73 -0
- package/dist/src/modules/logger/logger.mjs.map +1 -0
- package/dist/src/modules/npm/constants.js +6 -0
- package/dist/src/modules/npm/constants.js.map +1 -0
- package/dist/src/modules/npm/constants.mjs +4 -0
- package/dist/src/modules/npm/constants.mjs.map +1 -0
- package/dist/src/modules/npm/package.js +55 -0
- package/dist/src/modules/npm/package.js.map +1 -0
- package/dist/src/modules/npm/package.mjs +52 -0
- package/dist/src/modules/npm/package.mjs.map +1 -0
- package/dist/src/modules/project/constants.js +45 -0
- package/dist/src/modules/project/constants.js.map +1 -0
- package/dist/src/modules/project/constants.mjs +35 -0
- package/dist/src/modules/project/constants.mjs.map +1 -0
- package/dist/src/modules/project/index.js +15 -0
- package/dist/src/modules/project/index.js.map +1 -0
- package/dist/src/modules/project/index.mjs +5 -0
- package/dist/src/modules/project/index.mjs.map +1 -0
- package/dist/src/modules/project/project.js +208 -0
- package/dist/src/modules/project/project.js.map +1 -0
- package/dist/src/modules/project/project.mjs +203 -0
- package/dist/src/modules/project/project.mjs.map +1 -0
- package/dist/src/modules/project/utils.js +26 -0
- package/dist/src/modules/project/utils.js.map +1 -0
- package/dist/src/modules/project/utils.mjs +21 -0
- package/dist/src/modules/project/utils.mjs.map +1 -0
- package/dist/src/modules/report/index.js +9 -0
- package/dist/src/modules/report/index.js.map +1 -0
- package/dist/src/modules/report/index.mjs +2 -0
- package/dist/src/modules/report/index.mjs.map +1 -0
- package/dist/src/modules/report/report.js +13 -0
- package/dist/src/modules/report/report.js.map +1 -0
- package/dist/src/modules/report/report.mjs +10 -0
- package/dist/src/modules/report/report.mjs.map +1 -0
- package/dist/src/modules/requirement/index.js +8 -0
- package/dist/src/modules/requirement/index.js.map +1 -0
- package/dist/src/modules/requirement/index.mjs +2 -0
- package/dist/src/modules/requirement/index.mjs.map +1 -0
- package/dist/src/modules/requirement/requirement.js +55 -0
- package/dist/src/modules/requirement/requirement.js.map +1 -0
- package/dist/src/modules/requirement/requirement.mjs +52 -0
- package/dist/src/modules/requirement/requirement.mjs.map +1 -0
- package/dist/src/modules/runner/code/code.js +21 -0
- package/dist/src/modules/runner/code/code.js.map +1 -0
- package/dist/src/modules/runner/code/code.mjs +18 -0
- package/dist/src/modules/runner/code/code.mjs.map +1 -0
- package/dist/src/modules/runner/code/index.js +8 -0
- package/dist/src/modules/runner/code/index.js.map +1 -0
- package/dist/src/modules/runner/code/index.mjs +2 -0
- package/dist/src/modules/runner/code/index.mjs.map +1 -0
- package/dist/src/modules/runner/index.js +10 -0
- package/dist/src/modules/runner/index.js.map +1 -0
- package/dist/src/modules/runner/index.mjs +5 -0
- package/dist/src/modules/runner/index.mjs.map +1 -0
- package/dist/src/modules/runner/json/index.js +8 -0
- package/dist/src/modules/runner/json/index.js.map +1 -0
- package/dist/src/modules/runner/json/index.mjs +2 -0
- package/dist/src/modules/runner/json/index.mjs.map +1 -0
- package/dist/src/modules/runner/json/json.js +21 -0
- package/dist/src/modules/runner/json/json.js.map +1 -0
- package/dist/src/modules/runner/json/json.mjs +18 -0
- package/dist/src/modules/runner/json/json.mjs.map +1 -0
- package/dist/src/modules/runner/json/transform.js +85 -0
- package/dist/src/modules/runner/json/transform.js.map +1 -0
- package/dist/src/modules/runner/json/transform.mjs +83 -0
- package/dist/src/modules/runner/json/transform.mjs.map +1 -0
- package/dist/src/modules/runner/runner.js +22 -0
- package/dist/src/modules/runner/runner.js.map +1 -0
- package/dist/src/modules/runner/runner.mjs +20 -0
- package/dist/src/modules/runner/runner.mjs.map +1 -0
- package/dist/src/modules/timer/constants.js +6 -0
- package/dist/src/modules/timer/constants.js.map +1 -0
- package/dist/src/modules/timer/constants.mjs +4 -0
- package/dist/src/modules/timer/constants.mjs.map +1 -0
- package/dist/src/modules/timer/index.js +10 -0
- package/dist/src/modules/timer/index.js.map +1 -0
- package/dist/src/modules/timer/index.mjs +4 -0
- package/dist/src/modules/timer/index.mjs.map +1 -0
- package/dist/src/modules/timer/timer.js +33 -0
- package/dist/src/modules/timer/timer.js.map +1 -0
- package/dist/src/modules/timer/timer.mjs +30 -0
- package/dist/src/modules/timer/timer.mjs.map +1 -0
- package/dist/src/modules/upgrader/constants.js +6 -0
- package/dist/src/modules/upgrader/constants.js.map +1 -0
- package/dist/src/modules/upgrader/constants.mjs +4 -0
- package/dist/src/modules/upgrader/constants.mjs.map +1 -0
- package/dist/src/modules/upgrader/index.js +10 -0
- package/dist/src/modules/upgrader/index.js.map +1 -0
- package/dist/src/modules/upgrader/index.mjs +4 -0
- package/dist/src/modules/upgrader/index.mjs.map +1 -0
- package/dist/src/modules/upgrader/upgrader.js +266 -0
- package/dist/src/modules/upgrader/upgrader.js.map +1 -0
- package/dist/src/modules/upgrader/upgrader.mjs +263 -0
- package/dist/src/modules/upgrader/upgrader.mjs.map +1 -0
- package/dist/src/modules/version/index.js +20 -0
- package/dist/src/modules/version/index.js.map +1 -0
- package/dist/src/modules/version/index.mjs +5 -0
- package/dist/src/modules/version/index.mjs.map +1 -0
- package/dist/src/modules/version/range.js +81 -0
- package/dist/src/modules/version/range.js.map +1 -0
- package/dist/src/modules/version/range.mjs +75 -0
- package/dist/src/modules/version/range.mjs.map +1 -0
- package/dist/src/modules/version/semver.js +26 -0
- package/dist/src/modules/version/semver.js.map +1 -0
- package/dist/src/modules/version/semver.mjs +20 -0
- package/dist/src/modules/version/semver.mjs.map +1 -0
- package/dist/src/modules/version/types.js +12 -0
- package/dist/src/modules/version/types.js.map +1 -0
- package/dist/src/modules/version/types.mjs +12 -0
- package/dist/src/modules/version/types.mjs.map +1 -0
- package/dist/src/tasks/codemods/list-codemods.js +40 -0
- package/dist/src/tasks/codemods/list-codemods.js.map +1 -0
- package/dist/src/tasks/codemods/list-codemods.mjs +38 -0
- package/dist/src/tasks/codemods/list-codemods.mjs.map +1 -0
- package/dist/src/tasks/codemods/run-codemods.js +36 -0
- package/dist/src/tasks/codemods/run-codemods.js.map +1 -0
- package/dist/src/tasks/codemods/run-codemods.mjs +34 -0
- package/dist/src/tasks/codemods/run-codemods.mjs.map +1 -0
- package/dist/src/tasks/codemods/utils.js +54 -0
- package/dist/src/tasks/codemods/utils.js.map +1 -0
- package/dist/src/tasks/codemods/utils.mjs +50 -0
- package/dist/src/tasks/codemods/utils.mjs.map +1 -0
- package/dist/src/tasks/index.js +15 -0
- package/dist/src/tasks/index.js.map +1 -0
- package/dist/src/tasks/index.mjs +7 -0
- package/dist/src/tasks/index.mjs.map +1 -0
- package/dist/src/tasks/upgrade/prompts/latest.js +48 -0
- package/dist/src/tasks/upgrade/prompts/latest.js.map +1 -0
- package/dist/src/tasks/upgrade/prompts/latest.mjs +46 -0
- package/dist/src/tasks/upgrade/prompts/latest.mjs.map +1 -0
- package/dist/src/tasks/upgrade/requirements/common.js +40 -0
- package/dist/src/tasks/upgrade/requirements/common.js.map +1 -0
- package/dist/src/tasks/upgrade/requirements/common.mjs +35 -0
- package/dist/src/tasks/upgrade/requirements/common.mjs.map +1 -0
- package/dist/src/tasks/upgrade/requirements/major.js +29 -0
- package/dist/src/tasks/upgrade/requirements/major.js.map +1 -0
- package/dist/src/tasks/upgrade/requirements/major.mjs +26 -0
- package/dist/src/tasks/upgrade/requirements/major.mjs.map +1 -0
- package/dist/src/tasks/upgrade/upgrade.js +69 -0
- package/dist/src/tasks/upgrade/upgrade.js.map +1 -0
- package/dist/src/tasks/upgrade/upgrade.mjs +67 -0
- package/dist/src/tasks/upgrade/upgrade.mjs.map +1 -0
- package/package.json +4 -4
- package/dist/chunks/logger-DGi224NW.js +0 -1649
- package/dist/chunks/logger-DGi224NW.js.map +0 -1
- package/dist/chunks/logger-np_r7rTc.mjs +0 -1599
- package/dist/chunks/logger-np_r7rTc.mjs.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var upgrade = require('./upgrade/upgrade.js');
|
|
4
|
+
require('semver');
|
|
5
|
+
require('../modules/version/types.js');
|
|
6
|
+
require('./upgrade/requirements/common.js');
|
|
7
|
+
var runCodemods = require('./codemods/run-codemods.js');
|
|
8
|
+
var listCodemods = require('./codemods/list-codemods.js');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
exports.upgrade = upgrade.upgrade;
|
|
13
|
+
exports.runCodemods = runCodemods.runCodemods;
|
|
14
|
+
exports.listCodemods = listCodemods.listCodemods;
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { upgrade } from './upgrade/upgrade.mjs';
|
|
2
|
+
import 'semver';
|
|
3
|
+
import '../modules/version/types.mjs';
|
|
4
|
+
import './upgrade/requirements/common.mjs';
|
|
5
|
+
export { runCodemods } from './codemods/run-codemods.mjs';
|
|
6
|
+
export { listCodemods } from './codemods/list-codemods.mjs';
|
|
7
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('../../../modules/error/utils.js');
|
|
4
|
+
var formats = require('../../../modules/format/formats.js');
|
|
5
|
+
var semver = require('../../../modules/version/semver.js');
|
|
6
|
+
var range = require('../../../modules/version/range.js');
|
|
7
|
+
var types = require('../../../modules/version/types.js');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Handles the upgrade prompts when using the latest tag.
|
|
11
|
+
*
|
|
12
|
+
* - checks if an upgrade involves a major bump, warning and asking for user confirmation before proceeding
|
|
13
|
+
*/ const latest = async (upgrader, options)=>{
|
|
14
|
+
// Exit if the upgrade target isn't the latest tag
|
|
15
|
+
if (options.target !== types.ReleaseType.Latest) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
// Retrieve utilities from the upgrader instance
|
|
19
|
+
const npmPackage = upgrader.getNPMPackage();
|
|
20
|
+
const target = upgrader.getTarget();
|
|
21
|
+
const project = upgrader.getProject();
|
|
22
|
+
const { strapiVersion: current } = project;
|
|
23
|
+
// Pre-formatted strings used in logs
|
|
24
|
+
const fTargetMajor = formats.highlight(`v${target.major}`);
|
|
25
|
+
const fCurrentMajor = formats.highlight(`v${current.major}`);
|
|
26
|
+
const fTarget = formats.version(target);
|
|
27
|
+
const fCurrent = formats.version(current);
|
|
28
|
+
// Flags
|
|
29
|
+
const isMajorUpgrade = target.major > current.major;
|
|
30
|
+
// Handle potential major upgrade, warns, and asks for confirmation to proceed
|
|
31
|
+
if (isMajorUpgrade) {
|
|
32
|
+
options.logger.warn(`Detected a major upgrade for the "${formats.highlight(types.ReleaseType.Latest)}" tag: ${fCurrent} > ${fTarget}`);
|
|
33
|
+
// Find the latest release in between the current one and the next major
|
|
34
|
+
const newerPackageRelease = npmPackage.findVersionsInRange(range.rangeFactory(`>${current.raw} <${target.major}`)).at(-1);
|
|
35
|
+
// If the project isn't on the latest version for the current major, emit a warning
|
|
36
|
+
if (newerPackageRelease) {
|
|
37
|
+
const fLatest = formats.version(semver.semVerFactory(newerPackageRelease.version));
|
|
38
|
+
options.logger.warn(`It's recommended to first upgrade to the latest version of ${fCurrentMajor} (${fLatest}) before upgrading to ${fTargetMajor}.`);
|
|
39
|
+
}
|
|
40
|
+
const proceedAnyway = await upgrader.confirm(`I know what I'm doing. Proceed anyway!`);
|
|
41
|
+
if (!proceedAnyway) {
|
|
42
|
+
throw new utils.AbortedError();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
exports.latest = latest;
|
|
48
|
+
//# sourceMappingURL=latest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latest.js","sources":["../../../../../src/tasks/upgrade/prompts/latest.ts"],"sourcesContent":["import { AbortedError } from '../../../modules/error';\nimport * as f from '../../../modules/format';\n\nimport { rangeFactory, semVerFactory, Version } from '../../../modules/version';\n\nimport type { Upgrader } from '../../../modules/upgrader';\nimport type { UpgradeOptions } from '../types';\n\n/**\n * Handles the upgrade prompts when using the latest tag.\n *\n * - checks if an upgrade involves a major bump, warning and asking for user confirmation before proceeding\n */\nexport const latest = async (upgrader: Upgrader, options: UpgradeOptions) => {\n // Exit if the upgrade target isn't the latest tag\n if (options.target !== Version.ReleaseType.Latest) {\n return;\n }\n\n // Retrieve utilities from the upgrader instance\n const npmPackage = upgrader.getNPMPackage();\n const target = upgrader.getTarget();\n const project = upgrader.getProject();\n\n const { strapiVersion: current } = project;\n\n // Pre-formatted strings used in logs\n const fTargetMajor = f.highlight(`v${target.major}`);\n const fCurrentMajor = f.highlight(`v${current.major}`);\n\n const fTarget = f.version(target);\n const fCurrent = f.version(current);\n\n // Flags\n const isMajorUpgrade = target.major > current.major;\n\n // Handle potential major upgrade, warns, and asks for confirmation to proceed\n if (isMajorUpgrade) {\n options.logger.warn(\n `Detected a major upgrade for the \"${f.highlight(Version.ReleaseType.Latest)}\" tag: ${fCurrent} > ${fTarget}`\n );\n\n // Find the latest release in between the current one and the next major\n const newerPackageRelease = npmPackage\n .findVersionsInRange(rangeFactory(`>${current.raw} <${target.major}`))\n .at(-1);\n\n // If the project isn't on the latest version for the current major, emit a warning\n if (newerPackageRelease) {\n const fLatest = f.version(semVerFactory(newerPackageRelease.version));\n options.logger.warn(\n `It's recommended to first upgrade to the latest version of ${fCurrentMajor} (${fLatest}) before upgrading to ${fTargetMajor}.`\n );\n }\n\n const proceedAnyway = await upgrader.confirm(`I know what I'm doing. Proceed anyway!`);\n\n if (!proceedAnyway) {\n throw new AbortedError();\n }\n }\n};\n"],"names":["latest","upgrader","options","target","Version","Latest","npmPackage","getNPMPackage","getTarget","project","getProject","strapiVersion","current","fTargetMajor","f","major","fCurrentMajor","fTarget","fCurrent","isMajorUpgrade","logger","warn","newerPackageRelease","findVersionsInRange","rangeFactory","raw","at","fLatest","semVerFactory","version","proceedAnyway","confirm","AbortedError"],"mappings":";;;;;;;;AAQA;;;;AAIC,IACM,MAAMA,MAAS,GAAA,OAAOC,QAAoBC,EAAAA,OAAAA,GAAAA;;AAE/C,IAAA,IAAIA,QAAQC,MAAM,KAAKC,iBAAmB,CAACC,MAAM,EAAE;AACjD,QAAA;AACF;;IAGA,MAAMC,UAAAA,GAAaL,SAASM,aAAa,EAAA;IACzC,MAAMJ,MAAAA,GAASF,SAASO,SAAS,EAAA;IACjC,MAAMC,OAAAA,GAAUR,SAASS,UAAU,EAAA;AAEnC,IAAA,MAAM,EAAEC,aAAAA,EAAeC,OAAO,EAAE,GAAGH,OAAAA;;IAGnC,MAAMI,YAAAA,GAAeC,iBAAW,CAAC,CAAC,CAAC,EAAEX,MAAAA,CAAOY,KAAK,CAAC,CAAC,CAAA;IACnD,MAAMC,aAAAA,GAAgBF,iBAAW,CAAC,CAAC,CAAC,EAAEF,OAAAA,CAAQG,KAAK,CAAC,CAAC,CAAA;IAErD,MAAME,OAAAA,GAAUH,eAAS,CAACX,MAAAA,CAAAA;IAC1B,MAAMe,QAAAA,GAAWJ,eAAS,CAACF,OAAAA,CAAAA;;AAG3B,IAAA,MAAMO,cAAiBhB,GAAAA,MAAAA,CAAOY,KAAK,GAAGH,QAAQG,KAAK;;AAGnD,IAAA,IAAII,cAAgB,EAAA;QAClBjB,OAAQkB,CAAAA,MAAM,CAACC,IAAI,CACjB,CAAC,kCAAkC,EAAEP,iBAAW,CAACV,iBAAmB,CAACC,MAAM,CAAE,CAAA,OAAO,EAAEa,QAAS,CAAA,GAAG,EAAED,OAAAA,CAAQ,CAAC,CAAA;;QAI/G,MAAMK,mBAAAA,GAAsBhB,WACzBiB,mBAAmB,CAACC,mBAAa,CAAC,CAAC,EAAEZ,OAAQa,CAAAA,GAAG,CAAC,EAAE,EAAEtB,OAAOY,KAAK,CAAC,CAAC,CACnEW,CAAAA,CAAAA,EAAE,CAAC,CAAC,CAAA,CAAA;;AAGP,QAAA,IAAIJ,mBAAqB,EAAA;AACvB,YAAA,MAAMK,UAAUb,eAAS,CAACc,oBAAAA,CAAcN,oBAAoBO,OAAO,CAAA,CAAA;AACnE3B,YAAAA,OAAAA,CAAQkB,MAAM,CAACC,IAAI,CACjB,CAAC,2DAA2D,EAAEL,aAAc,CAAA,EAAE,EAAEW,OAAQ,CAAA,sBAAsB,EAAEd,YAAAA,CAAa,CAAC,CAAC,CAAA;AAEnI;AAEA,QAAA,MAAMiB,gBAAgB,MAAM7B,QAAAA,CAAS8B,OAAO,CAAC,CAAC,sCAAsC,CAAC,CAAA;AAErF,QAAA,IAAI,CAACD,aAAe,EAAA;AAClB,YAAA,MAAM,IAAIE,kBAAAA,EAAAA;AACZ;AACF;AACF;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { AbortedError } from '../../../modules/error/utils.mjs';
|
|
2
|
+
import { highlight, version } from '../../../modules/format/formats.mjs';
|
|
3
|
+
import { semVerFactory } from '../../../modules/version/semver.mjs';
|
|
4
|
+
import { rangeFactory } from '../../../modules/version/range.mjs';
|
|
5
|
+
import { ReleaseType } from '../../../modules/version/types.mjs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Handles the upgrade prompts when using the latest tag.
|
|
9
|
+
*
|
|
10
|
+
* - checks if an upgrade involves a major bump, warning and asking for user confirmation before proceeding
|
|
11
|
+
*/ const latest = async (upgrader, options)=>{
|
|
12
|
+
// Exit if the upgrade target isn't the latest tag
|
|
13
|
+
if (options.target !== ReleaseType.Latest) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
// Retrieve utilities from the upgrader instance
|
|
17
|
+
const npmPackage = upgrader.getNPMPackage();
|
|
18
|
+
const target = upgrader.getTarget();
|
|
19
|
+
const project = upgrader.getProject();
|
|
20
|
+
const { strapiVersion: current } = project;
|
|
21
|
+
// Pre-formatted strings used in logs
|
|
22
|
+
const fTargetMajor = highlight(`v${target.major}`);
|
|
23
|
+
const fCurrentMajor = highlight(`v${current.major}`);
|
|
24
|
+
const fTarget = version(target);
|
|
25
|
+
const fCurrent = version(current);
|
|
26
|
+
// Flags
|
|
27
|
+
const isMajorUpgrade = target.major > current.major;
|
|
28
|
+
// Handle potential major upgrade, warns, and asks for confirmation to proceed
|
|
29
|
+
if (isMajorUpgrade) {
|
|
30
|
+
options.logger.warn(`Detected a major upgrade for the "${highlight(ReleaseType.Latest)}" tag: ${fCurrent} > ${fTarget}`);
|
|
31
|
+
// Find the latest release in between the current one and the next major
|
|
32
|
+
const newerPackageRelease = npmPackage.findVersionsInRange(rangeFactory(`>${current.raw} <${target.major}`)).at(-1);
|
|
33
|
+
// If the project isn't on the latest version for the current major, emit a warning
|
|
34
|
+
if (newerPackageRelease) {
|
|
35
|
+
const fLatest = version(semVerFactory(newerPackageRelease.version));
|
|
36
|
+
options.logger.warn(`It's recommended to first upgrade to the latest version of ${fCurrentMajor} (${fLatest}) before upgrading to ${fTargetMajor}.`);
|
|
37
|
+
}
|
|
38
|
+
const proceedAnyway = await upgrader.confirm(`I know what I'm doing. Proceed anyway!`);
|
|
39
|
+
if (!proceedAnyway) {
|
|
40
|
+
throw new AbortedError();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export { latest };
|
|
46
|
+
//# sourceMappingURL=latest.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latest.mjs","sources":["../../../../../src/tasks/upgrade/prompts/latest.ts"],"sourcesContent":["import { AbortedError } from '../../../modules/error';\nimport * as f from '../../../modules/format';\n\nimport { rangeFactory, semVerFactory, Version } from '../../../modules/version';\n\nimport type { Upgrader } from '../../../modules/upgrader';\nimport type { UpgradeOptions } from '../types';\n\n/**\n * Handles the upgrade prompts when using the latest tag.\n *\n * - checks if an upgrade involves a major bump, warning and asking for user confirmation before proceeding\n */\nexport const latest = async (upgrader: Upgrader, options: UpgradeOptions) => {\n // Exit if the upgrade target isn't the latest tag\n if (options.target !== Version.ReleaseType.Latest) {\n return;\n }\n\n // Retrieve utilities from the upgrader instance\n const npmPackage = upgrader.getNPMPackage();\n const target = upgrader.getTarget();\n const project = upgrader.getProject();\n\n const { strapiVersion: current } = project;\n\n // Pre-formatted strings used in logs\n const fTargetMajor = f.highlight(`v${target.major}`);\n const fCurrentMajor = f.highlight(`v${current.major}`);\n\n const fTarget = f.version(target);\n const fCurrent = f.version(current);\n\n // Flags\n const isMajorUpgrade = target.major > current.major;\n\n // Handle potential major upgrade, warns, and asks for confirmation to proceed\n if (isMajorUpgrade) {\n options.logger.warn(\n `Detected a major upgrade for the \"${f.highlight(Version.ReleaseType.Latest)}\" tag: ${fCurrent} > ${fTarget}`\n );\n\n // Find the latest release in between the current one and the next major\n const newerPackageRelease = npmPackage\n .findVersionsInRange(rangeFactory(`>${current.raw} <${target.major}`))\n .at(-1);\n\n // If the project isn't on the latest version for the current major, emit a warning\n if (newerPackageRelease) {\n const fLatest = f.version(semVerFactory(newerPackageRelease.version));\n options.logger.warn(\n `It's recommended to first upgrade to the latest version of ${fCurrentMajor} (${fLatest}) before upgrading to ${fTargetMajor}.`\n );\n }\n\n const proceedAnyway = await upgrader.confirm(`I know what I'm doing. Proceed anyway!`);\n\n if (!proceedAnyway) {\n throw new AbortedError();\n }\n }\n};\n"],"names":["latest","upgrader","options","target","Version","Latest","npmPackage","getNPMPackage","getTarget","project","getProject","strapiVersion","current","fTargetMajor","f","major","fCurrentMajor","fTarget","fCurrent","isMajorUpgrade","logger","warn","newerPackageRelease","findVersionsInRange","rangeFactory","raw","at","fLatest","semVerFactory","version","proceedAnyway","confirm","AbortedError"],"mappings":";;;;;;AAQA;;;;AAIC,IACM,MAAMA,MAAS,GAAA,OAAOC,QAAoBC,EAAAA,OAAAA,GAAAA;;AAE/C,IAAA,IAAIA,QAAQC,MAAM,KAAKC,WAAmB,CAACC,MAAM,EAAE;AACjD,QAAA;AACF;;IAGA,MAAMC,UAAAA,GAAaL,SAASM,aAAa,EAAA;IACzC,MAAMJ,MAAAA,GAASF,SAASO,SAAS,EAAA;IACjC,MAAMC,OAAAA,GAAUR,SAASS,UAAU,EAAA;AAEnC,IAAA,MAAM,EAAEC,aAAAA,EAAeC,OAAO,EAAE,GAAGH,OAAAA;;IAGnC,MAAMI,YAAAA,GAAeC,SAAW,CAAC,CAAC,CAAC,EAAEX,MAAAA,CAAOY,KAAK,CAAC,CAAC,CAAA;IACnD,MAAMC,aAAAA,GAAgBF,SAAW,CAAC,CAAC,CAAC,EAAEF,OAAAA,CAAQG,KAAK,CAAC,CAAC,CAAA;IAErD,MAAME,OAAAA,GAAUH,OAAS,CAACX,MAAAA,CAAAA;IAC1B,MAAMe,QAAAA,GAAWJ,OAAS,CAACF,OAAAA,CAAAA;;AAG3B,IAAA,MAAMO,cAAiBhB,GAAAA,MAAAA,CAAOY,KAAK,GAAGH,QAAQG,KAAK;;AAGnD,IAAA,IAAII,cAAgB,EAAA;QAClBjB,OAAQkB,CAAAA,MAAM,CAACC,IAAI,CACjB,CAAC,kCAAkC,EAAEP,SAAW,CAACV,WAAmB,CAACC,MAAM,CAAE,CAAA,OAAO,EAAEa,QAAS,CAAA,GAAG,EAAED,OAAAA,CAAQ,CAAC,CAAA;;QAI/G,MAAMK,mBAAAA,GAAsBhB,WACzBiB,mBAAmB,CAACC,aAAa,CAAC,CAAC,EAAEZ,OAAQa,CAAAA,GAAG,CAAC,EAAE,EAAEtB,OAAOY,KAAK,CAAC,CAAC,CACnEW,CAAAA,CAAAA,EAAE,CAAC,CAAC,CAAA,CAAA;;AAGP,QAAA,IAAIJ,mBAAqB,EAAA;AACvB,YAAA,MAAMK,UAAUb,OAAS,CAACc,aAAAA,CAAcN,oBAAoBO,OAAO,CAAA,CAAA;AACnE3B,YAAAA,OAAAA,CAAQkB,MAAM,CAACC,IAAI,CACjB,CAAC,2DAA2D,EAAEL,aAAc,CAAA,EAAE,EAAEW,OAAQ,CAAA,sBAAsB,EAAEd,YAAAA,CAAa,CAAC,CAAC,CAAA;AAEnI;AAEA,QAAA,MAAMiB,gBAAgB,MAAM7B,QAAAA,CAAS8B,OAAO,CAAC,CAAC,sCAAsC,CAAC,CAAA;AAErF,QAAA,IAAI,CAACD,aAAe,EAAA;AAClB,YAAA,MAAM,IAAIE,YAAAA,EAAAA;AACZ;AACF;AACF;;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var simpleGit = require('simple-git');
|
|
4
|
+
var requirement = require('../../../modules/requirement/requirement.js');
|
|
5
|
+
|
|
6
|
+
const REQUIRE_GIT_CLEAN_REPOSITORY = requirement.requirementFactory('REQUIRE_GIT_CLEAN_REPOSITORY', async (context)=>{
|
|
7
|
+
const git = simpleGit({
|
|
8
|
+
baseDir: context.project.cwd
|
|
9
|
+
});
|
|
10
|
+
const status = await git.status();
|
|
11
|
+
if (!status.isClean()) {
|
|
12
|
+
throw new Error('Repository is not clean. Please commit or stash any changes before upgrading');
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
const REQUIRE_GIT_REPOSITORY = requirement.requirementFactory('REQUIRE_GIT_REPOSITORY', async (context)=>{
|
|
16
|
+
const git = simpleGit({
|
|
17
|
+
baseDir: context.project.cwd
|
|
18
|
+
});
|
|
19
|
+
const isRepo = await git.checkIsRepo();
|
|
20
|
+
if (!isRepo) {
|
|
21
|
+
throw new Error('Not a git repository (or any of the parent directories)');
|
|
22
|
+
}
|
|
23
|
+
}).addChild(REQUIRE_GIT_CLEAN_REPOSITORY.asOptional());
|
|
24
|
+
const REQUIRE_GIT_INSTALLED = requirement.requirementFactory('REQUIRE_GIT_INSTALLED', async (context)=>{
|
|
25
|
+
const git = simpleGit({
|
|
26
|
+
baseDir: context.project.cwd
|
|
27
|
+
});
|
|
28
|
+
try {
|
|
29
|
+
await git.version();
|
|
30
|
+
} catch {
|
|
31
|
+
throw new Error('Git is not installed');
|
|
32
|
+
}
|
|
33
|
+
}).addChild(REQUIRE_GIT_REPOSITORY.asOptional());
|
|
34
|
+
const REQUIRE_GIT = requirement.requirementFactory('REQUIRE_GIT', null).addChild(REQUIRE_GIT_INSTALLED.asOptional());
|
|
35
|
+
|
|
36
|
+
exports.REQUIRE_GIT = REQUIRE_GIT;
|
|
37
|
+
exports.REQUIRE_GIT_CLEAN_REPOSITORY = REQUIRE_GIT_CLEAN_REPOSITORY;
|
|
38
|
+
exports.REQUIRE_GIT_INSTALLED = REQUIRE_GIT_INSTALLED;
|
|
39
|
+
exports.REQUIRE_GIT_REPOSITORY = REQUIRE_GIT_REPOSITORY;
|
|
40
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sources":["../../../../../src/tasks/upgrade/requirements/common.ts"],"sourcesContent":["import simpleGit from 'simple-git';\n\nimport { requirementFactory } from '../../../modules/requirement';\n\nexport const REQUIRE_GIT_CLEAN_REPOSITORY = requirementFactory(\n 'REQUIRE_GIT_CLEAN_REPOSITORY',\n async (context) => {\n const git = simpleGit({ baseDir: context.project.cwd });\n\n const status = await git.status();\n\n if (!status.isClean()) {\n throw new Error(\n 'Repository is not clean. Please commit or stash any changes before upgrading'\n );\n }\n }\n);\n\nexport const REQUIRE_GIT_REPOSITORY = requirementFactory(\n 'REQUIRE_GIT_REPOSITORY',\n async (context) => {\n const git = simpleGit({ baseDir: context.project.cwd });\n\n const isRepo = await git.checkIsRepo();\n\n if (!isRepo) {\n throw new Error('Not a git repository (or any of the parent directories)');\n }\n }\n).addChild(REQUIRE_GIT_CLEAN_REPOSITORY.asOptional());\n\nexport const REQUIRE_GIT_INSTALLED = requirementFactory(\n 'REQUIRE_GIT_INSTALLED',\n async (context) => {\n const git = simpleGit({ baseDir: context.project.cwd });\n\n try {\n await git.version();\n } catch {\n throw new Error('Git is not installed');\n }\n }\n).addChild(REQUIRE_GIT_REPOSITORY.asOptional());\n\nexport const REQUIRE_GIT = requirementFactory('REQUIRE_GIT', null).addChild(\n REQUIRE_GIT_INSTALLED.asOptional()\n);\n"],"names":["REQUIRE_GIT_CLEAN_REPOSITORY","requirementFactory","context","git","simpleGit","baseDir","project","cwd","status","isClean","Error","REQUIRE_GIT_REPOSITORY","isRepo","checkIsRepo","addChild","asOptional","REQUIRE_GIT_INSTALLED","version","REQUIRE_GIT"],"mappings":";;;;;AAIaA,MAAAA,4BAAAA,GAA+BC,8BAC1C,CAAA,8BAAA,EACA,OAAOC,OAAAA,GAAAA;AACL,IAAA,MAAMC,MAAMC,SAAU,CAAA;QAAEC,OAASH,EAAAA,OAAAA,CAAQI,OAAO,CAACC;AAAI,KAAA,CAAA;IAErD,MAAMC,MAAAA,GAAS,MAAML,GAAAA,CAAIK,MAAM,EAAA;IAE/B,IAAI,CAACA,MAAOC,CAAAA,OAAO,EAAI,EAAA;AACrB,QAAA,MAAM,IAAIC,KACR,CAAA,8EAAA,CAAA;AAEJ;AACF,CACA;AAEWC,MAAAA,sBAAAA,GAAyBV,8BACpC,CAAA,wBAAA,EACA,OAAOC,OAAAA,GAAAA;AACL,IAAA,MAAMC,MAAMC,SAAU,CAAA;QAAEC,OAASH,EAAAA,OAAAA,CAAQI,OAAO,CAACC;AAAI,KAAA,CAAA;IAErD,MAAMK,MAAAA,GAAS,MAAMT,GAAAA,CAAIU,WAAW,EAAA;AAEpC,IAAA,IAAI,CAACD,MAAQ,EAAA;AACX,QAAA,MAAM,IAAIF,KAAM,CAAA,yDAAA,CAAA;AAClB;AACF,CAAA,CAAA,CACAI,QAAQ,CAACd,4BAA6Be,CAAAA,UAAU,EAAI;AAEzCC,MAAAA,qBAAAA,GAAwBf,8BACnC,CAAA,uBAAA,EACA,OAAOC,OAAAA,GAAAA;AACL,IAAA,MAAMC,MAAMC,SAAU,CAAA;QAAEC,OAASH,EAAAA,OAAAA,CAAQI,OAAO,CAACC;AAAI,KAAA,CAAA;IAErD,IAAI;AACF,QAAA,MAAMJ,IAAIc,OAAO,EAAA;AACnB,KAAA,CAAE,OAAM;AACN,QAAA,MAAM,IAAIP,KAAM,CAAA,sBAAA,CAAA;AAClB;AACF,CAAA,CAAA,CACAI,QAAQ,CAACH,sBAAuBI,CAAAA,UAAU,EAAI;AAEzC,MAAMG,cAAcjB,8BAAmB,CAAA,aAAA,EAAe,MAAMa,QAAQ,CACzEE,qBAAsBD,CAAAA,UAAU,EAChC;;;;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import simpleGit from 'simple-git';
|
|
2
|
+
import { requirementFactory } from '../../../modules/requirement/requirement.mjs';
|
|
3
|
+
|
|
4
|
+
const REQUIRE_GIT_CLEAN_REPOSITORY = requirementFactory('REQUIRE_GIT_CLEAN_REPOSITORY', async (context)=>{
|
|
5
|
+
const git = simpleGit({
|
|
6
|
+
baseDir: context.project.cwd
|
|
7
|
+
});
|
|
8
|
+
const status = await git.status();
|
|
9
|
+
if (!status.isClean()) {
|
|
10
|
+
throw new Error('Repository is not clean. Please commit or stash any changes before upgrading');
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
const REQUIRE_GIT_REPOSITORY = requirementFactory('REQUIRE_GIT_REPOSITORY', async (context)=>{
|
|
14
|
+
const git = simpleGit({
|
|
15
|
+
baseDir: context.project.cwd
|
|
16
|
+
});
|
|
17
|
+
const isRepo = await git.checkIsRepo();
|
|
18
|
+
if (!isRepo) {
|
|
19
|
+
throw new Error('Not a git repository (or any of the parent directories)');
|
|
20
|
+
}
|
|
21
|
+
}).addChild(REQUIRE_GIT_CLEAN_REPOSITORY.asOptional());
|
|
22
|
+
const REQUIRE_GIT_INSTALLED = requirementFactory('REQUIRE_GIT_INSTALLED', async (context)=>{
|
|
23
|
+
const git = simpleGit({
|
|
24
|
+
baseDir: context.project.cwd
|
|
25
|
+
});
|
|
26
|
+
try {
|
|
27
|
+
await git.version();
|
|
28
|
+
} catch {
|
|
29
|
+
throw new Error('Git is not installed');
|
|
30
|
+
}
|
|
31
|
+
}).addChild(REQUIRE_GIT_REPOSITORY.asOptional());
|
|
32
|
+
const REQUIRE_GIT = requirementFactory('REQUIRE_GIT', null).addChild(REQUIRE_GIT_INSTALLED.asOptional());
|
|
33
|
+
|
|
34
|
+
export { REQUIRE_GIT, REQUIRE_GIT_CLEAN_REPOSITORY, REQUIRE_GIT_INSTALLED, REQUIRE_GIT_REPOSITORY };
|
|
35
|
+
//# sourceMappingURL=common.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.mjs","sources":["../../../../../src/tasks/upgrade/requirements/common.ts"],"sourcesContent":["import simpleGit from 'simple-git';\n\nimport { requirementFactory } from '../../../modules/requirement';\n\nexport const REQUIRE_GIT_CLEAN_REPOSITORY = requirementFactory(\n 'REQUIRE_GIT_CLEAN_REPOSITORY',\n async (context) => {\n const git = simpleGit({ baseDir: context.project.cwd });\n\n const status = await git.status();\n\n if (!status.isClean()) {\n throw new Error(\n 'Repository is not clean. Please commit or stash any changes before upgrading'\n );\n }\n }\n);\n\nexport const REQUIRE_GIT_REPOSITORY = requirementFactory(\n 'REQUIRE_GIT_REPOSITORY',\n async (context) => {\n const git = simpleGit({ baseDir: context.project.cwd });\n\n const isRepo = await git.checkIsRepo();\n\n if (!isRepo) {\n throw new Error('Not a git repository (or any of the parent directories)');\n }\n }\n).addChild(REQUIRE_GIT_CLEAN_REPOSITORY.asOptional());\n\nexport const REQUIRE_GIT_INSTALLED = requirementFactory(\n 'REQUIRE_GIT_INSTALLED',\n async (context) => {\n const git = simpleGit({ baseDir: context.project.cwd });\n\n try {\n await git.version();\n } catch {\n throw new Error('Git is not installed');\n }\n }\n).addChild(REQUIRE_GIT_REPOSITORY.asOptional());\n\nexport const REQUIRE_GIT = requirementFactory('REQUIRE_GIT', null).addChild(\n REQUIRE_GIT_INSTALLED.asOptional()\n);\n"],"names":["REQUIRE_GIT_CLEAN_REPOSITORY","requirementFactory","context","git","simpleGit","baseDir","project","cwd","status","isClean","Error","REQUIRE_GIT_REPOSITORY","isRepo","checkIsRepo","addChild","asOptional","REQUIRE_GIT_INSTALLED","version","REQUIRE_GIT"],"mappings":";;;AAIaA,MAAAA,4BAAAA,GAA+BC,kBAC1C,CAAA,8BAAA,EACA,OAAOC,OAAAA,GAAAA;AACL,IAAA,MAAMC,MAAMC,SAAU,CAAA;QAAEC,OAASH,EAAAA,OAAAA,CAAQI,OAAO,CAACC;AAAI,KAAA,CAAA;IAErD,MAAMC,MAAAA,GAAS,MAAML,GAAAA,CAAIK,MAAM,EAAA;IAE/B,IAAI,CAACA,MAAOC,CAAAA,OAAO,EAAI,EAAA;AACrB,QAAA,MAAM,IAAIC,KACR,CAAA,8EAAA,CAAA;AAEJ;AACF,CACA;AAEWC,MAAAA,sBAAAA,GAAyBV,kBACpC,CAAA,wBAAA,EACA,OAAOC,OAAAA,GAAAA;AACL,IAAA,MAAMC,MAAMC,SAAU,CAAA;QAAEC,OAASH,EAAAA,OAAAA,CAAQI,OAAO,CAACC;AAAI,KAAA,CAAA;IAErD,MAAMK,MAAAA,GAAS,MAAMT,GAAAA,CAAIU,WAAW,EAAA;AAEpC,IAAA,IAAI,CAACD,MAAQ,EAAA;AACX,QAAA,MAAM,IAAIF,KAAM,CAAA,yDAAA,CAAA;AAClB;AACF,CAAA,CAAA,CACAI,QAAQ,CAACd,4BAA6Be,CAAAA,UAAU,EAAI;AAEzCC,MAAAA,qBAAAA,GAAwBf,kBACnC,CAAA,uBAAA,EACA,OAAOC,OAAAA,GAAAA;AACL,IAAA,MAAMC,MAAMC,SAAU,CAAA;QAAEC,OAASH,EAAAA,OAAAA,CAAQI,OAAO,CAACC;AAAI,KAAA,CAAA;IAErD,IAAI;AACF,QAAA,MAAMJ,IAAIc,OAAO,EAAA;AACnB,KAAA,CAAE,OAAM;AACN,QAAA,MAAM,IAAIP,KAAM,CAAA,sBAAA,CAAA;AAClB;AACF,CAAA,CAAA,CACAI,QAAQ,CAACH,sBAAuBI,CAAAA,UAAU,EAAI;AAEzC,MAAMG,cAAcjB,kBAAmB,CAAA,aAAA,EAAe,MAAMa,QAAQ,CACzEE,qBAAsBD,CAAAA,UAAU,EAChC;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var requirement = require('../../../modules/requirement/requirement.js');
|
|
4
|
+
var semver = require('../../../modules/version/semver.js');
|
|
5
|
+
require('semver');
|
|
6
|
+
require('../../../modules/version/types.js');
|
|
7
|
+
|
|
8
|
+
const REQUIRE_AVAILABLE_NEXT_MAJOR = requirement.requirementFactory('REQUIRE_AVAILABLE_NEXT_MAJOR', (context)=>{
|
|
9
|
+
const { project, target } = context;
|
|
10
|
+
const currentMajor = project.strapiVersion.major;
|
|
11
|
+
const targetedMajor = target.major;
|
|
12
|
+
if (targetedMajor === currentMajor) {
|
|
13
|
+
throw new Error(`You're already on the latest major version (v${currentMajor})`);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
const REQUIRE_LATEST_FOR_CURRENT_MAJOR = requirement.requirementFactory('REQUIRE_LATEST_FOR_CURRENT_MAJOR', (context)=>{
|
|
17
|
+
const { project, target, npmVersionsMatches } = context;
|
|
18
|
+
const { major: currentMajor } = project.strapiVersion;
|
|
19
|
+
const invalidMatches = npmVersionsMatches.filter((match)=>semver.semVerFactory(match.version).major === currentMajor);
|
|
20
|
+
if (invalidMatches.length > 0) {
|
|
21
|
+
const invalidVersions = invalidMatches.map((match)=>match.version);
|
|
22
|
+
const invalidVersionsCount = invalidVersions.length;
|
|
23
|
+
throw new Error(`Doing a major upgrade requires to be on the latest v${currentMajor} version, but found ${invalidVersionsCount} versions between the current one and ${target}. Please upgrade to ${invalidVersions.at(-1)} and try again.`);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
exports.REQUIRE_AVAILABLE_NEXT_MAJOR = REQUIRE_AVAILABLE_NEXT_MAJOR;
|
|
28
|
+
exports.REQUIRE_LATEST_FOR_CURRENT_MAJOR = REQUIRE_LATEST_FOR_CURRENT_MAJOR;
|
|
29
|
+
//# sourceMappingURL=major.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"major.js","sources":["../../../../../src/tasks/upgrade/requirements/major.ts"],"sourcesContent":["import { requirementFactory } from '../../../modules/requirement';\nimport { semVerFactory } from '../../../modules/version';\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 const { major: currentMajor } = project.strapiVersion;\n\n const invalidMatches = npmVersionsMatches.filter(\n (match) => semVerFactory(match.version).major === currentMajor\n );\n\n if (invalidMatches.length > 0) {\n const invalidVersions = invalidMatches.map((match) => match.version);\n const invalidVersionsCount = invalidVersions.length;\n\n throw new Error(\n `Doing a major upgrade requires to be on the latest v${currentMajor} version, but found ${invalidVersionsCount} versions between the current one and ${target}. Please upgrade to ${invalidVersions.at(-1)} and try again.`\n );\n }\n }\n);\n"],"names":["REQUIRE_AVAILABLE_NEXT_MAJOR","requirementFactory","context","project","target","currentMajor","strapiVersion","major","targetedMajor","Error","REQUIRE_LATEST_FOR_CURRENT_MAJOR","npmVersionsMatches","invalidMatches","filter","match","semVerFactory","version","length","invalidVersions","map","invalidVersionsCount","at"],"mappings":";;;;;;;AAGaA,MAAAA,4BAAAA,GAA+BC,8BAC1C,CAAA,8BAAA,EACA,CAACC,OAAAA,GAAAA;AACC,IAAA,MAAM,EAAEC,OAAO,EAAEC,MAAM,EAAE,GAAGF,OAAAA;AAE5B,IAAA,MAAMG,YAAeF,GAAAA,OAAAA,CAAQG,aAAa,CAACC,KAAK;IAChD,MAAMC,aAAAA,GAAgBJ,OAAOG,KAAK;AAElC,IAAA,IAAIC,kBAAkBH,YAAc,EAAA;AAClC,QAAA,MAAM,IAAII,KAAM,CAAA,CAAC,6CAA6C,EAAEJ,YAAAA,CAAa,CAAC,CAAC,CAAA;AACjF;AACF,CACA;AAEWK,MAAAA,gCAAAA,GAAmCT,8BAC9C,CAAA,kCAAA,EACA,CAACC,OAAAA,GAAAA;AACC,IAAA,MAAM,EAAEC,OAAO,EAAEC,MAAM,EAAEO,kBAAkB,EAAE,GAAGT,OAAAA;AAChD,IAAA,MAAM,EAAEK,KAAOF,EAAAA,YAAY,EAAE,GAAGF,QAAQG,aAAa;IAErD,MAAMM,cAAAA,GAAiBD,kBAAmBE,CAAAA,MAAM,CAC9C,CAACC,KAAUC,GAAAA,oBAAAA,CAAcD,KAAME,CAAAA,OAAO,CAAET,CAAAA,KAAK,KAAKF,YAAAA,CAAAA;IAGpD,IAAIO,cAAAA,CAAeK,MAAM,GAAG,CAAG,EAAA;AAC7B,QAAA,MAAMC,kBAAkBN,cAAeO,CAAAA,GAAG,CAAC,CAACL,KAAAA,GAAUA,MAAME,OAAO,CAAA;QACnE,MAAMI,oBAAAA,GAAuBF,gBAAgBD,MAAM;QAEnD,MAAM,IAAIR,MACR,CAAC,oDAAoD,EAAEJ,YAAa,CAAA,oBAAoB,EAAEe,oBAAqB,CAAA,sCAAsC,EAAEhB,MAAO,CAAA,oBAAoB,EAAEc,eAAgBG,CAAAA,EAAE,CAAC,CAAC,CAAA,CAAA,CAAG,eAAe,CAAC,CAAA;AAE/N;AACF,CACA;;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { requirementFactory } from '../../../modules/requirement/requirement.mjs';
|
|
2
|
+
import { semVerFactory } from '../../../modules/version/semver.mjs';
|
|
3
|
+
import 'semver';
|
|
4
|
+
import '../../../modules/version/types.mjs';
|
|
5
|
+
|
|
6
|
+
const REQUIRE_AVAILABLE_NEXT_MAJOR = requirementFactory('REQUIRE_AVAILABLE_NEXT_MAJOR', (context)=>{
|
|
7
|
+
const { project, target } = context;
|
|
8
|
+
const currentMajor = project.strapiVersion.major;
|
|
9
|
+
const targetedMajor = target.major;
|
|
10
|
+
if (targetedMajor === currentMajor) {
|
|
11
|
+
throw new Error(`You're already on the latest major version (v${currentMajor})`);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
const REQUIRE_LATEST_FOR_CURRENT_MAJOR = requirementFactory('REQUIRE_LATEST_FOR_CURRENT_MAJOR', (context)=>{
|
|
15
|
+
const { project, target, npmVersionsMatches } = context;
|
|
16
|
+
const { major: currentMajor } = project.strapiVersion;
|
|
17
|
+
const invalidMatches = npmVersionsMatches.filter((match)=>semVerFactory(match.version).major === currentMajor);
|
|
18
|
+
if (invalidMatches.length > 0) {
|
|
19
|
+
const invalidVersions = invalidMatches.map((match)=>match.version);
|
|
20
|
+
const invalidVersionsCount = invalidVersions.length;
|
|
21
|
+
throw new Error(`Doing a major upgrade requires to be on the latest v${currentMajor} version, but found ${invalidVersionsCount} versions between the current one and ${target}. Please upgrade to ${invalidVersions.at(-1)} and try again.`);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export { REQUIRE_AVAILABLE_NEXT_MAJOR, REQUIRE_LATEST_FOR_CURRENT_MAJOR };
|
|
26
|
+
//# sourceMappingURL=major.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"major.mjs","sources":["../../../../../src/tasks/upgrade/requirements/major.ts"],"sourcesContent":["import { requirementFactory } from '../../../modules/requirement';\nimport { semVerFactory } from '../../../modules/version';\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 const { major: currentMajor } = project.strapiVersion;\n\n const invalidMatches = npmVersionsMatches.filter(\n (match) => semVerFactory(match.version).major === currentMajor\n );\n\n if (invalidMatches.length > 0) {\n const invalidVersions = invalidMatches.map((match) => match.version);\n const invalidVersionsCount = invalidVersions.length;\n\n throw new Error(\n `Doing a major upgrade requires to be on the latest v${currentMajor} version, but found ${invalidVersionsCount} versions between the current one and ${target}. Please upgrade to ${invalidVersions.at(-1)} and try again.`\n );\n }\n }\n);\n"],"names":["REQUIRE_AVAILABLE_NEXT_MAJOR","requirementFactory","context","project","target","currentMajor","strapiVersion","major","targetedMajor","Error","REQUIRE_LATEST_FOR_CURRENT_MAJOR","npmVersionsMatches","invalidMatches","filter","match","semVerFactory","version","length","invalidVersions","map","invalidVersionsCount","at"],"mappings":";;;;;AAGaA,MAAAA,4BAAAA,GAA+BC,kBAC1C,CAAA,8BAAA,EACA,CAACC,OAAAA,GAAAA;AACC,IAAA,MAAM,EAAEC,OAAO,EAAEC,MAAM,EAAE,GAAGF,OAAAA;AAE5B,IAAA,MAAMG,YAAeF,GAAAA,OAAAA,CAAQG,aAAa,CAACC,KAAK;IAChD,MAAMC,aAAAA,GAAgBJ,OAAOG,KAAK;AAElC,IAAA,IAAIC,kBAAkBH,YAAc,EAAA;AAClC,QAAA,MAAM,IAAII,KAAM,CAAA,CAAC,6CAA6C,EAAEJ,YAAAA,CAAa,CAAC,CAAC,CAAA;AACjF;AACF,CACA;AAEWK,MAAAA,gCAAAA,GAAmCT,kBAC9C,CAAA,kCAAA,EACA,CAACC,OAAAA,GAAAA;AACC,IAAA,MAAM,EAAEC,OAAO,EAAEC,MAAM,EAAEO,kBAAkB,EAAE,GAAGT,OAAAA;AAChD,IAAA,MAAM,EAAEK,KAAOF,EAAAA,YAAY,EAAE,GAAGF,QAAQG,aAAa;IAErD,MAAMM,cAAAA,GAAiBD,kBAAmBE,CAAAA,MAAM,CAC9C,CAACC,KAAUC,GAAAA,aAAAA,CAAcD,KAAME,CAAAA,OAAO,CAAET,CAAAA,KAAK,KAAKF,YAAAA,CAAAA;IAGpD,IAAIO,cAAAA,CAAeK,MAAM,GAAG,CAAG,EAAA;AAC7B,QAAA,MAAMC,kBAAkBN,cAAeO,CAAAA,GAAG,CAAC,CAACL,KAAAA,GAAUA,MAAME,OAAO,CAAA;QACnE,MAAMI,oBAAAA,GAAuBF,gBAAgBD,MAAM;QAEnD,MAAM,IAAIR,MACR,CAAC,oDAAoD,EAAEJ,YAAa,CAAA,oBAAoB,EAAEe,oBAAqB,CAAA,sCAAsC,EAAEhB,MAAO,CAAA,oBAAoB,EAAEc,eAAgBG,CAAAA,EAAE,CAAC,CAAC,CAAA,CAAA,CAAG,eAAe,CAAC,CAAA;AAE/N;AACF,CACA;;;;"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var path = require('node:path');
|
|
4
|
+
var formats = require('../../modules/format/formats.js');
|
|
5
|
+
var _package = require('../../modules/npm/package.js');
|
|
6
|
+
var project = require('../../modules/project/project.js');
|
|
7
|
+
require('../../modules/project/constants.js');
|
|
8
|
+
var utils = require('../../modules/project/utils.js');
|
|
9
|
+
var timer = require('../../modules/timer/timer.js');
|
|
10
|
+
var upgrader = require('../../modules/upgrader/upgrader.js');
|
|
11
|
+
var constants = require('../../modules/upgrader/constants.js');
|
|
12
|
+
require('semver');
|
|
13
|
+
var types = require('../../modules/version/types.js');
|
|
14
|
+
var major = require('./requirements/major.js');
|
|
15
|
+
var common = require('./requirements/common.js');
|
|
16
|
+
var latest = require('./prompts/latest.js');
|
|
17
|
+
|
|
18
|
+
const upgrade = async (options)=>{
|
|
19
|
+
const timer$1 = timer.timerFactory();
|
|
20
|
+
const { logger, codemodsTarget } = options;
|
|
21
|
+
// Resolves the correct working directory based on the given input
|
|
22
|
+
const cwd = path.resolve(options.cwd ?? process.cwd());
|
|
23
|
+
const project$1 = project.projectFactory(cwd);
|
|
24
|
+
logger.debug(formats.projectDetails(project$1));
|
|
25
|
+
if (!utils.isApplicationProject(project$1)) {
|
|
26
|
+
throw new Error(`The "${options.target}" upgrade can only be run on a Strapi project; for plugins, please use "codemods".`);
|
|
27
|
+
}
|
|
28
|
+
logger.debug(`Application: VERSION=${formats.version(project$1.packageJSON.version)}; STRAPI_VERSION=${formats.version(project$1.strapiVersion)}`);
|
|
29
|
+
const npmPackage = _package.npmPackageFactory(constants.STRAPI_PACKAGE_NAME);
|
|
30
|
+
// Load all available versions from the NPM registry
|
|
31
|
+
await npmPackage.refresh();
|
|
32
|
+
// Initialize the upgrade instance
|
|
33
|
+
// Throws during initialization if the provided target is incompatible with the current version
|
|
34
|
+
const upgrader$1 = upgrader.upgraderFactory(project$1, options.target, npmPackage).dry(options.dry ?? false).onConfirm(options.confirm ?? null).setLogger(logger);
|
|
35
|
+
// Manually override the target version for codemods if it's explicitly provided
|
|
36
|
+
if (codemodsTarget !== undefined) {
|
|
37
|
+
upgrader$1.overrideCodemodsTarget(codemodsTarget);
|
|
38
|
+
}
|
|
39
|
+
// Prompt user for confirmation details before upgrading
|
|
40
|
+
await runUpgradePrompts(upgrader$1, options);
|
|
41
|
+
// Add specific requirements before upgrading
|
|
42
|
+
addUpgradeRequirements(upgrader$1, options);
|
|
43
|
+
// Actually run the upgrade process once configured,
|
|
44
|
+
// The response contains information about the final status: success/error
|
|
45
|
+
const upgradeReport = await upgrader$1.upgrade();
|
|
46
|
+
if (!upgradeReport.success) {
|
|
47
|
+
throw upgradeReport.error;
|
|
48
|
+
}
|
|
49
|
+
timer$1.stop();
|
|
50
|
+
logger.info(`Completed in ${formats.durationMs(timer$1.elapsedMs)}ms`);
|
|
51
|
+
};
|
|
52
|
+
const runUpgradePrompts = async (upgrader, options)=>{
|
|
53
|
+
if (options.target === types.ReleaseType.Latest) {
|
|
54
|
+
await latest.latest(upgrader, options);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const addUpgradeRequirements = (upgrader, options)=>{
|
|
58
|
+
// Don't add the same requirements when manually targeting a major upgrade
|
|
59
|
+
// using a semver as it's implied that the users know what they're doing
|
|
60
|
+
if (options.target === types.ReleaseType.Major) {
|
|
61
|
+
upgrader.addRequirement(major.REQUIRE_AVAILABLE_NEXT_MAJOR).addRequirement(major.REQUIRE_LATEST_FOR_CURRENT_MAJOR);
|
|
62
|
+
}
|
|
63
|
+
// Make sure the git repository is in an optimal state before running the upgrade
|
|
64
|
+
// Mainly used to ease rollbacks in case the upgrade is corrupted
|
|
65
|
+
upgrader.addRequirement(common.REQUIRE_GIT.asOptional());
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
exports.upgrade = upgrade;
|
|
69
|
+
//# sourceMappingURL=upgrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.js","sources":["../../../../src/tasks/upgrade/upgrade.ts"],"sourcesContent":["import path from 'node:path';\n\nimport * as f from '../../modules/format';\nimport { npmPackageFactory } from '../../modules/npm';\nimport { isApplicationProject, projectFactory } from '../../modules/project';\nimport { timerFactory } from '../../modules/timer';\nimport { constants as upgraderConstants, upgraderFactory } from '../../modules/upgrader';\nimport { Version } from '../../modules/version';\n\nimport * as requirements from './requirements';\nimport * as prompts from './prompts';\n\nimport type { UpgradeOptions } from './types';\nimport type { Upgrader } from '../../modules/upgrader';\n\nexport const upgrade = async (options: UpgradeOptions) => {\n const timer = timerFactory();\n const { logger, codemodsTarget } = options;\n\n // Resolves 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 logger.debug(f.projectDetails(project));\n\n if (!isApplicationProject(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\n logger.debug(\n `Application: VERSION=${f.version(project.packageJSON.version as Version.LiteralVersion)}; STRAPI_VERSION=${f.version(project.strapiVersion)}`\n );\n\n const npmPackage = npmPackageFactory(upgraderConstants.STRAPI_PACKAGE_NAME);\n\n // Load all available versions from the NPM registry\n await npmPackage.refresh();\n\n // Initialize the upgrade instance\n // Throws during initialization if the provided target is incompatible with the current version\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 // Prompt user for confirmation details before upgrading\n await runUpgradePrompts(upgrader, options);\n\n // Add specific requirements before upgrading\n addUpgradeRequirements(upgrader, options);\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)}ms`);\n};\n\nconst runUpgradePrompts = async (upgrader: Upgrader, options: UpgradeOptions) => {\n if (options.target === Version.ReleaseType.Latest) {\n await prompts.latest(upgrader, options);\n }\n};\n\nconst addUpgradeRequirements = (upgrader: Upgrader, options: UpgradeOptions): void => {\n // Don't add the same requirements when manually targeting a major upgrade\n // using a semver as it's implied that the users know 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"],"names":["upgrade","options","timer","timerFactory","logger","codemodsTarget","cwd","path","resolve","process","project","projectFactory","debug","f","isApplicationProject","Error","target","packageJSON","version","strapiVersion","npmPackage","npmPackageFactory","upgraderConstants","refresh","upgrader","upgraderFactory","dry","onConfirm","confirm","setLogger","undefined","overrideCodemodsTarget","runUpgradePrompts","addUpgradeRequirements","upgradeReport","success","error","stop","info","elapsedMs","Version","Latest","prompts","Major","addRequirement","requirements","asOptional"],"mappings":";;;;;;;;;;;;;;;;;AAeO,MAAMA,UAAU,OAAOC,OAAAA,GAAAA;AAC5B,IAAA,MAAMC,OAAQC,GAAAA,kBAAAA,EAAAA;AACd,IAAA,MAAM,EAAEC,MAAM,EAAEC,cAAc,EAAE,GAAGJ,OAAAA;;IAGnC,MAAMK,GAAAA,GAAMC,KAAKC,OAAO,CAACP,QAAQK,GAAG,IAAIG,QAAQH,GAAG,EAAA,CAAA;AAEnD,IAAA,MAAMI,YAAUC,sBAAeL,CAAAA,GAAAA,CAAAA;AAE/BF,IAAAA,MAAAA,CAAOQ,KAAK,CAACC,sBAAgB,CAACH,SAAAA,CAAAA,CAAAA;IAE9B,IAAI,CAACI,2BAAqBJ,SAAU,CAAA,EAAA;QAClC,MAAM,IAAIK,MACR,CAAC,KAAK,EAAEd,OAAQe,CAAAA,MAAM,CAAC,kFAAkF,CAAC,CAAA;AAE9G;IAEAZ,MAAOQ,CAAAA,KAAK,CACV,CAAC,qBAAqB,EAAEC,eAAS,CAACH,SAAQO,CAAAA,WAAW,CAACC,OAAO,CAAA,CAA4B,iBAAiB,EAAEL,eAAS,CAACH,SAAAA,CAAQS,aAAa,CAAA,CAAE,CAAC,CAAA;IAGhJ,MAAMC,UAAAA,GAAaC,0BAAkBC,CAAAA,6BAAqC,CAAA;;AAG1E,IAAA,MAAMF,WAAWG,OAAO,EAAA;;;IAIxB,MAAMC,UAAAA,GAAWC,yBAAgBf,SAAST,EAAAA,OAAAA,CAAQe,MAAM,EAAEI,UAAAA,CAAAA,CACvDM,GAAG,CAACzB,OAAAA,CAAQyB,GAAG,IAAI,KAAA,CAAA,CACnBC,SAAS,CAAC1B,OAAAA,CAAQ2B,OAAO,IAAI,IAAA,CAAA,CAC7BC,SAAS,CAACzB,MAAAA,CAAAA;;AAGb,IAAA,IAAIC,mBAAmByB,SAAW,EAAA;AAChCN,QAAAA,UAAAA,CAASO,sBAAsB,CAAC1B,cAAAA,CAAAA;AAClC;;AAGA,IAAA,MAAM2B,kBAAkBR,UAAUvB,EAAAA,OAAAA,CAAAA;;AAGlCgC,IAAAA,sBAAAA,CAAuBT,UAAUvB,EAAAA,OAAAA,CAAAA;;;IAIjC,MAAMiC,aAAAA,GAAgB,MAAMV,UAAAA,CAASxB,OAAO,EAAA;IAE5C,IAAI,CAACkC,aAAcC,CAAAA,OAAO,EAAE;AAC1B,QAAA,MAAMD,cAAcE,KAAK;AAC3B;AAEAlC,IAAAA,OAAAA,CAAMmC,IAAI,EAAA;AAEVjC,IAAAA,MAAAA,CAAOkC,IAAI,CAAC,CAAC,aAAa,EAAEzB,kBAAY,CAACX,OAAMqC,CAAAA,SAAS,CAAE,CAAA,EAAE,CAAC,CAAA;AAC/D;AAEA,MAAMP,iBAAAA,GAAoB,OAAOR,QAAoBvB,EAAAA,OAAAA,GAAAA;AACnD,IAAA,IAAIA,QAAQe,MAAM,KAAKwB,iBAAmB,CAACC,MAAM,EAAE;QACjD,MAAMC,aAAc,CAAClB,QAAUvB,EAAAA,OAAAA,CAAAA;AACjC;AACF,CAAA;AAEA,MAAMgC,sBAAAA,GAAyB,CAACT,QAAoBvB,EAAAA,OAAAA,GAAAA;;;AAGlD,IAAA,IAAIA,QAAQe,MAAM,KAAKwB,iBAAmB,CAACG,KAAK,EAAE;AAChDnB,QAAAA,QAAAA,CACGoB,cAAc,CAACC,kCAA+C,CAC9DD,CAAAA,cAAc,CAACC,sCAAmD,CAAA;AACvE;;;AAIArB,IAAAA,QAAAA,CAASoB,cAAc,CAACC,kBAA+B,CAACC,UAAU,EAAA,CAAA;AACpE,CAAA;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { projectDetails, version, durationMs } from '../../modules/format/formats.mjs';
|
|
3
|
+
import { npmPackageFactory } from '../../modules/npm/package.mjs';
|
|
4
|
+
import { projectFactory } from '../../modules/project/project.mjs';
|
|
5
|
+
import '../../modules/project/constants.mjs';
|
|
6
|
+
import { isApplicationProject } from '../../modules/project/utils.mjs';
|
|
7
|
+
import { timerFactory } from '../../modules/timer/timer.mjs';
|
|
8
|
+
import { upgraderFactory } from '../../modules/upgrader/upgrader.mjs';
|
|
9
|
+
import { STRAPI_PACKAGE_NAME } from '../../modules/upgrader/constants.mjs';
|
|
10
|
+
import 'semver';
|
|
11
|
+
import { ReleaseType } from '../../modules/version/types.mjs';
|
|
12
|
+
import { REQUIRE_AVAILABLE_NEXT_MAJOR, REQUIRE_LATEST_FOR_CURRENT_MAJOR } from './requirements/major.mjs';
|
|
13
|
+
import { REQUIRE_GIT } from './requirements/common.mjs';
|
|
14
|
+
import { latest } from './prompts/latest.mjs';
|
|
15
|
+
|
|
16
|
+
const upgrade = async (options)=>{
|
|
17
|
+
const timer = timerFactory();
|
|
18
|
+
const { logger, codemodsTarget } = options;
|
|
19
|
+
// Resolves the correct working directory based on the given input
|
|
20
|
+
const cwd = path.resolve(options.cwd ?? process.cwd());
|
|
21
|
+
const project = projectFactory(cwd);
|
|
22
|
+
logger.debug(projectDetails(project));
|
|
23
|
+
if (!isApplicationProject(project)) {
|
|
24
|
+
throw new Error(`The "${options.target}" upgrade can only be run on a Strapi project; for plugins, please use "codemods".`);
|
|
25
|
+
}
|
|
26
|
+
logger.debug(`Application: VERSION=${version(project.packageJSON.version)}; STRAPI_VERSION=${version(project.strapiVersion)}`);
|
|
27
|
+
const npmPackage = npmPackageFactory(STRAPI_PACKAGE_NAME);
|
|
28
|
+
// Load all available versions from the NPM registry
|
|
29
|
+
await npmPackage.refresh();
|
|
30
|
+
// Initialize the upgrade instance
|
|
31
|
+
// Throws during initialization if the provided target is incompatible with the current version
|
|
32
|
+
const upgrader = upgraderFactory(project, options.target, npmPackage).dry(options.dry ?? false).onConfirm(options.confirm ?? null).setLogger(logger);
|
|
33
|
+
// Manually override the target version for codemods if it's explicitly provided
|
|
34
|
+
if (codemodsTarget !== undefined) {
|
|
35
|
+
upgrader.overrideCodemodsTarget(codemodsTarget);
|
|
36
|
+
}
|
|
37
|
+
// Prompt user for confirmation details before upgrading
|
|
38
|
+
await runUpgradePrompts(upgrader, options);
|
|
39
|
+
// Add specific requirements before upgrading
|
|
40
|
+
addUpgradeRequirements(upgrader, options);
|
|
41
|
+
// Actually run the upgrade process once configured,
|
|
42
|
+
// The response contains information about the final status: success/error
|
|
43
|
+
const upgradeReport = await upgrader.upgrade();
|
|
44
|
+
if (!upgradeReport.success) {
|
|
45
|
+
throw upgradeReport.error;
|
|
46
|
+
}
|
|
47
|
+
timer.stop();
|
|
48
|
+
logger.info(`Completed in ${durationMs(timer.elapsedMs)}ms`);
|
|
49
|
+
};
|
|
50
|
+
const runUpgradePrompts = async (upgrader, options)=>{
|
|
51
|
+
if (options.target === ReleaseType.Latest) {
|
|
52
|
+
await latest(upgrader, options);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const addUpgradeRequirements = (upgrader, options)=>{
|
|
56
|
+
// Don't add the same requirements when manually targeting a major upgrade
|
|
57
|
+
// using a semver as it's implied that the users know what they're doing
|
|
58
|
+
if (options.target === ReleaseType.Major) {
|
|
59
|
+
upgrader.addRequirement(REQUIRE_AVAILABLE_NEXT_MAJOR).addRequirement(REQUIRE_LATEST_FOR_CURRENT_MAJOR);
|
|
60
|
+
}
|
|
61
|
+
// Make sure the git repository is in an optimal state before running the upgrade
|
|
62
|
+
// Mainly used to ease rollbacks in case the upgrade is corrupted
|
|
63
|
+
upgrader.addRequirement(REQUIRE_GIT.asOptional());
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export { upgrade };
|
|
67
|
+
//# sourceMappingURL=upgrade.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.mjs","sources":["../../../../src/tasks/upgrade/upgrade.ts"],"sourcesContent":["import path from 'node:path';\n\nimport * as f from '../../modules/format';\nimport { npmPackageFactory } from '../../modules/npm';\nimport { isApplicationProject, projectFactory } from '../../modules/project';\nimport { timerFactory } from '../../modules/timer';\nimport { constants as upgraderConstants, upgraderFactory } from '../../modules/upgrader';\nimport { Version } from '../../modules/version';\n\nimport * as requirements from './requirements';\nimport * as prompts from './prompts';\n\nimport type { UpgradeOptions } from './types';\nimport type { Upgrader } from '../../modules/upgrader';\n\nexport const upgrade = async (options: UpgradeOptions) => {\n const timer = timerFactory();\n const { logger, codemodsTarget } = options;\n\n // Resolves 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 logger.debug(f.projectDetails(project));\n\n if (!isApplicationProject(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\n logger.debug(\n `Application: VERSION=${f.version(project.packageJSON.version as Version.LiteralVersion)}; STRAPI_VERSION=${f.version(project.strapiVersion)}`\n );\n\n const npmPackage = npmPackageFactory(upgraderConstants.STRAPI_PACKAGE_NAME);\n\n // Load all available versions from the NPM registry\n await npmPackage.refresh();\n\n // Initialize the upgrade instance\n // Throws during initialization if the provided target is incompatible with the current version\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 // Prompt user for confirmation details before upgrading\n await runUpgradePrompts(upgrader, options);\n\n // Add specific requirements before upgrading\n addUpgradeRequirements(upgrader, options);\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)}ms`);\n};\n\nconst runUpgradePrompts = async (upgrader: Upgrader, options: UpgradeOptions) => {\n if (options.target === Version.ReleaseType.Latest) {\n await prompts.latest(upgrader, options);\n }\n};\n\nconst addUpgradeRequirements = (upgrader: Upgrader, options: UpgradeOptions): void => {\n // Don't add the same requirements when manually targeting a major upgrade\n // using a semver as it's implied that the users know 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"],"names":["upgrade","options","timer","timerFactory","logger","codemodsTarget","cwd","path","resolve","process","project","projectFactory","debug","f","isApplicationProject","Error","target","packageJSON","version","strapiVersion","npmPackage","npmPackageFactory","upgraderConstants","refresh","upgrader","upgraderFactory","dry","onConfirm","confirm","setLogger","undefined","overrideCodemodsTarget","runUpgradePrompts","addUpgradeRequirements","upgradeReport","success","error","stop","info","elapsedMs","Version","Latest","prompts","Major","addRequirement","requirements","asOptional"],"mappings":";;;;;;;;;;;;;;;AAeO,MAAMA,UAAU,OAAOC,OAAAA,GAAAA;AAC5B,IAAA,MAAMC,KAAQC,GAAAA,YAAAA,EAAAA;AACd,IAAA,MAAM,EAAEC,MAAM,EAAEC,cAAc,EAAE,GAAGJ,OAAAA;;IAGnC,MAAMK,GAAAA,GAAMC,KAAKC,OAAO,CAACP,QAAQK,GAAG,IAAIG,QAAQH,GAAG,EAAA,CAAA;AAEnD,IAAA,MAAMI,UAAUC,cAAeL,CAAAA,GAAAA,CAAAA;AAE/BF,IAAAA,MAAAA,CAAOQ,KAAK,CAACC,cAAgB,CAACH,OAAAA,CAAAA,CAAAA;IAE9B,IAAI,CAACI,qBAAqBJ,OAAU,CAAA,EAAA;QAClC,MAAM,IAAIK,MACR,CAAC,KAAK,EAAEd,OAAQe,CAAAA,MAAM,CAAC,kFAAkF,CAAC,CAAA;AAE9G;IAEAZ,MAAOQ,CAAAA,KAAK,CACV,CAAC,qBAAqB,EAAEC,OAAS,CAACH,OAAQO,CAAAA,WAAW,CAACC,OAAO,CAAA,CAA4B,iBAAiB,EAAEL,OAAS,CAACH,OAAAA,CAAQS,aAAa,CAAA,CAAE,CAAC,CAAA;IAGhJ,MAAMC,UAAAA,GAAaC,iBAAkBC,CAAAA,mBAAqC,CAAA;;AAG1E,IAAA,MAAMF,WAAWG,OAAO,EAAA;;;IAIxB,MAAMC,QAAAA,GAAWC,gBAAgBf,OAAST,EAAAA,OAAAA,CAAQe,MAAM,EAAEI,UAAAA,CAAAA,CACvDM,GAAG,CAACzB,OAAAA,CAAQyB,GAAG,IAAI,KAAA,CAAA,CACnBC,SAAS,CAAC1B,OAAAA,CAAQ2B,OAAO,IAAI,IAAA,CAAA,CAC7BC,SAAS,CAACzB,MAAAA,CAAAA;;AAGb,IAAA,IAAIC,mBAAmByB,SAAW,EAAA;AAChCN,QAAAA,QAAAA,CAASO,sBAAsB,CAAC1B,cAAAA,CAAAA;AAClC;;AAGA,IAAA,MAAM2B,kBAAkBR,QAAUvB,EAAAA,OAAAA,CAAAA;;AAGlCgC,IAAAA,sBAAAA,CAAuBT,QAAUvB,EAAAA,OAAAA,CAAAA;;;IAIjC,MAAMiC,aAAAA,GAAgB,MAAMV,QAAAA,CAASxB,OAAO,EAAA;IAE5C,IAAI,CAACkC,aAAcC,CAAAA,OAAO,EAAE;AAC1B,QAAA,MAAMD,cAAcE,KAAK;AAC3B;AAEAlC,IAAAA,KAAAA,CAAMmC,IAAI,EAAA;AAEVjC,IAAAA,MAAAA,CAAOkC,IAAI,CAAC,CAAC,aAAa,EAAEzB,UAAY,CAACX,KAAMqC,CAAAA,SAAS,CAAE,CAAA,EAAE,CAAC,CAAA;AAC/D;AAEA,MAAMP,iBAAAA,GAAoB,OAAOR,QAAoBvB,EAAAA,OAAAA,GAAAA;AACnD,IAAA,IAAIA,QAAQe,MAAM,KAAKwB,WAAmB,CAACC,MAAM,EAAE;QACjD,MAAMC,MAAc,CAAClB,QAAUvB,EAAAA,OAAAA,CAAAA;AACjC;AACF,CAAA;AAEA,MAAMgC,sBAAAA,GAAyB,CAACT,QAAoBvB,EAAAA,OAAAA,GAAAA;;;AAGlD,IAAA,IAAIA,QAAQe,MAAM,KAAKwB,WAAmB,CAACG,KAAK,EAAE;AAChDnB,QAAAA,QAAAA,CACGoB,cAAc,CAACC,4BAA+C,CAC9DD,CAAAA,cAAc,CAACC,gCAAmD,CAAA;AACvE;;;AAIArB,IAAAA,QAAAA,CAASoB,cAAc,CAACC,WAA+B,CAACC,UAAU,EAAA,CAAA;AACpE,CAAA;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/upgrade",
|
|
3
|
-
"version": "5.12.
|
|
3
|
+
"version": "5.12.2",
|
|
4
4
|
"description": "CLI to upgrade Strapi applications effortless",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"strapi",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"watch": "run -T rollup -c -w"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@strapi/utils": "5.12.
|
|
64
|
+
"@strapi/utils": "5.12.2",
|
|
65
65
|
"chalk": "4.1.2",
|
|
66
66
|
"cli-table3": "0.6.2",
|
|
67
67
|
"commander": "8.3.0",
|
|
@@ -77,10 +77,10 @@
|
|
|
77
77
|
"simple-git": "3.21.0"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"@strapi/types": "5.12.
|
|
80
|
+
"@strapi/types": "5.12.2",
|
|
81
81
|
"@types/fs-extra": "11.0.4",
|
|
82
82
|
"@types/jscodeshift": "0.12.0",
|
|
83
|
-
"eslint-config-custom": "5.12.
|
|
83
|
+
"eslint-config-custom": "5.12.2",
|
|
84
84
|
"rimraf": "5.0.5"
|
|
85
85
|
},
|
|
86
86
|
"engines": {
|