@strapi/upgrade 0.0.0-experimental.fc1ac2acd58c8a5a858679956b6d102ac5ee4011 → 0.0.0-experimental.fca58d9b01ba89012d84a58a20556a6fd716cb92
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/LICENSE +19 -4
- package/README.md +1 -1
- package/dist/cli.js +15 -6
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +14 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/index.js +9 -1199
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -1191
- 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 +6 -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 +3 -0
- 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/error/utils.d.ts +8 -0
- package/dist/modules/error/utils.d.ts.map +1 -1
- package/dist/modules/file-scanner/scanner.d.ts.map +1 -1
- package/dist/modules/format/formats.d.ts +6 -0
- package/dist/modules/format/formats.d.ts.map +1 -1
- package/dist/modules/project/constants.d.ts +6 -3
- package/dist/modules/project/constants.d.ts.map +1 -1
- package/dist/modules/project/index.d.ts +2 -0
- package/dist/modules/project/index.d.ts.map +1 -1
- package/dist/modules/project/project.d.ts +27 -5
- package/dist/modules/project/project.d.ts.map +1 -1
- package/dist/modules/project/types.d.ts +3 -10
- package/dist/modules/project/types.d.ts.map +1 -1
- package/dist/modules/project/utils.d.ts +6 -0
- package/dist/modules/project/utils.d.ts.map +1 -0
- package/dist/modules/report/report.d.ts.map +1 -1
- package/dist/modules/requirement/types.d.ts +2 -2
- package/dist/modules/requirement/types.d.ts.map +1 -1
- package/dist/modules/runner/json/transform.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 +7 -3
- 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/modules/version/types.d.ts +2 -1
- package/dist/modules/version/types.d.ts.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/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/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/requirements/major.d.ts.map +1 -1
- package/dist/tasks/upgrade/upgrade.d.ts.map +1 -1
- package/package.json +16 -15
- package/resources/codemods/5.0.0/comment-out-lifecycle-files.code.ts +63 -0
- package/resources/codemods/5.0.0/dependency-remove-strapi-plugin-i18n.json.ts +31 -0
- package/resources/codemods/5.0.0/dependency-upgrade-react-and-react-dom.json.ts +67 -0
- package/resources/codemods/5.0.0/dependency-upgrade-react-router-dom.json.ts +59 -0
- package/resources/codemods/5.0.0/dependency-upgrade-styled-components.json.ts +49 -0
- package/resources/codemods/5.0.0/deprecate-helper-plugin.code.ts +192 -0
- package/resources/codemods/5.0.0/entity-service-document-service.code.ts +437 -0
- package/resources/codemods/5.0.0/s3-keys-wrapped-in-credentials.code.ts +1 -1
- package/resources/codemods/5.0.0/sqlite3-to-better-sqlite3.json.ts +5 -3
- package/resources/codemods/5.0.0/strapi-public-interface.code.ts +126 -0
- package/resources/codemods/5.0.0/use-uid-for-config-namespace.code.ts +1 -1
- package/resources/codemods/5.0.0/utils-public-interface.code.ts +320 -0
- package/resources/codemods/5.1.0/dependency-better-sqlite3.json.ts +48 -0
- package/resources/examples/console.log-to-console.info.code.ts +1 -1
- package/resources/examples/disable-jsx-buttons.code.ts +42 -0
- package/resources/utils/change-import.ts +118 -0
- package/resources/utils/replace-jsx.ts +49 -0
- package/dist/_chunks/codemod-runner-oPpELfwO.js +0 -730
- package/dist/_chunks/codemod-runner-oPpELfwO.js.map +0 -1
- package/dist/_chunks/codemods-qc8_QMWD.js +0 -108
- package/dist/_chunks/codemods-qc8_QMWD.js.map +0 -1
- package/dist/_chunks/index-GHKaxdhJ.js +0 -103
- package/dist/_chunks/index-GHKaxdhJ.js.map +0 -1
- package/dist/_chunks/upgrade-4SxXG3Oe.js +0 -357
- package/dist/_chunks/upgrade-4SxXG3Oe.js.map +0 -1
- package/dist/tasks/codemods/codemods.d.ts +0 -3
- package/dist/tasks/codemods/codemods.d.ts.map +0 -1
|
@@ -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;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-codemods.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/list-codemods.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,eAAO,MAAM,YAAY,YAAmB,mBAAmB,kBAmC9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-codemods.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/run-codemods.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD,eAAO,MAAM,WAAW,YAAmB,kBAAkB,kBAsC5D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SelectCodemodsCallback } from '../../modules/codemod-runner
|
|
2
|
-
import { ConfirmationCallback } from '../../modules/common/types';
|
|
1
|
+
import type { SelectCodemodsCallback } from '../../modules/codemod-runner';
|
|
2
|
+
import type { ConfirmationCallback } from '../../modules/common/types';
|
|
3
3
|
import type { Logger } from '../../modules/logger';
|
|
4
4
|
import type { Version } from '../../modules/version';
|
|
5
5
|
export interface RunCodemodsOptions {
|
|
@@ -8,6 +8,12 @@ export interface RunCodemodsOptions {
|
|
|
8
8
|
selectCodemods: SelectCodemodsCallback;
|
|
9
9
|
cwd?: string;
|
|
10
10
|
dry?: boolean;
|
|
11
|
-
target: Version.ReleaseType | Version.LiteralSemVer;
|
|
11
|
+
target: Version.ReleaseType | Version.LiteralSemVer | Version.Range;
|
|
12
|
+
uid?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ListCodemodsOptions {
|
|
15
|
+
logger: Logger;
|
|
16
|
+
cwd?: string;
|
|
17
|
+
target: Version.ReleaseType | Version.LiteralSemVer | Version.Range;
|
|
12
18
|
}
|
|
13
19
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,cAAc,EAAE,sBAAsB,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;CACrE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Version } from '../../modules/version';
|
|
2
|
+
import type { Project } from '../../modules/project';
|
|
3
|
+
export declare const resolvePath: (cwd?: string) => string;
|
|
4
|
+
export declare const getRangeFromTarget: (currentVersion: Version.SemVer, target: Version.ReleaseType | Version.LiteralSemVer) => Version.Range;
|
|
5
|
+
export declare const findRangeFromTarget: (project: Project, target: Version.ReleaseType | Version.LiteralSemVer | Version.Range) => Version.Range;
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAmD,MAAM,uBAAuB,CAAC;AAEjG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,eAAO,MAAM,WAAW,SAAU,MAAM,WAAuC,CAAC;AAEhF,eAAO,MAAM,kBAAkB,mBACb,QAAQ,MAAM,UACtB,QAAQ,WAAW,GAAG,QAAQ,aAAa,kBAoBpD,CAAC;AAEF,eAAO,MAAM,mBAAmB,YACrB,OAAO,UACR,QAAQ,WAAW,GAAG,QAAQ,aAAa,GAAG,aAAa,KAClE,aAeF,CAAC"}
|
package/dist/tasks/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tasks/upgrade/prompts/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Upgrader } from '../../../modules/upgrader';
|
|
2
|
+
import type { UpgradeOptions } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Handles the upgrade prompts when using the latest tag.
|
|
5
|
+
*
|
|
6
|
+
* - checks if an upgrade involves a major bump, warning and asking for user confirmation before proceeding
|
|
7
|
+
*/
|
|
8
|
+
export declare const latest: (upgrader: Upgrader, options: UpgradeOptions) => Promise<void>;
|
|
9
|
+
//# sourceMappingURL=latest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latest.d.ts","sourceRoot":"","sources":["../../../../src/tasks/upgrade/prompts/latest.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,MAAM,aAAoB,QAAQ,WAAW,cAAc,kBAgDvE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"major.d.ts","sourceRoot":"","sources":["../../../../src/tasks/upgrade/requirements/major.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"major.d.ts","sourceRoot":"","sources":["../../../../src/tasks/upgrade/requirements/major.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,4BAA4B,gEAYxC,CAAC;AAEF,eAAO,MAAM,gCAAgC,gEAmB5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/tasks/upgrade/upgrade.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/tasks/upgrade/upgrade.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,eAAO,MAAM,OAAO,YAAmB,cAAc,kBAuDpD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/upgrade",
|
|
3
|
-
"version": "0.0.0-experimental.
|
|
3
|
+
"version": "0.0.0-experimental.fca58d9b01ba89012d84a58a20556a6fd716cb92",
|
|
4
4
|
"description": "CLI to upgrade Strapi applications effortless",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"strapi",
|
|
@@ -49,24 +49,26 @@
|
|
|
49
49
|
"resources"
|
|
50
50
|
],
|
|
51
51
|
"scripts": {
|
|
52
|
-
"build": "
|
|
52
|
+
"build": "run -T npm-run-all clean --parallel build:code build:types",
|
|
53
|
+
"build:code": "run -T rollup -c",
|
|
54
|
+
"build:types": "run -T tsc -p tsconfig.build.json --emitDeclarationOnly",
|
|
53
55
|
"clean": "run -T rimraf ./dist",
|
|
54
56
|
"lint": "run -T eslint .",
|
|
55
57
|
"prepublishOnly": "yarn clean && yarn build",
|
|
56
58
|
"test:ts": "run -T tsc --noEmit",
|
|
57
59
|
"test:unit": "run -T jest",
|
|
58
60
|
"test:unit:watch": "run -T jest --watch",
|
|
59
|
-
"watch": "
|
|
61
|
+
"watch": "run -T rollup -c -w"
|
|
60
62
|
},
|
|
61
63
|
"dependencies": {
|
|
62
|
-
"@strapi/utils": "0.0.0-experimental.
|
|
64
|
+
"@strapi/utils": "0.0.0-experimental.fca58d9b01ba89012d84a58a20556a6fd716cb92",
|
|
63
65
|
"chalk": "4.1.2",
|
|
64
66
|
"cli-table3": "0.6.2",
|
|
65
67
|
"commander": "8.3.0",
|
|
66
68
|
"esbuild-register": "3.5.0",
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"jscodeshift": "
|
|
69
|
+
"fast-glob": "3.3.2",
|
|
70
|
+
"fs-extra": "11.2.0",
|
|
71
|
+
"jscodeshift": "17.1.2",
|
|
70
72
|
"lodash": "4.17.21",
|
|
71
73
|
"memfs": "4.6.0",
|
|
72
74
|
"ora": "5.4.1",
|
|
@@ -75,15 +77,14 @@
|
|
|
75
77
|
"simple-git": "3.21.0"
|
|
76
78
|
},
|
|
77
79
|
"devDependencies": {
|
|
78
|
-
"@strapi/
|
|
79
|
-
"@
|
|
80
|
-
"@types/jscodeshift": "0.
|
|
81
|
-
"eslint-config-custom": "0.0.0-experimental.
|
|
82
|
-
"rimraf": "
|
|
80
|
+
"@strapi/types": "0.0.0-experimental.fca58d9b01ba89012d84a58a20556a6fd716cb92",
|
|
81
|
+
"@types/fs-extra": "11.0.4",
|
|
82
|
+
"@types/jscodeshift": "0.12.0",
|
|
83
|
+
"eslint-config-custom": "0.0.0-experimental.fca58d9b01ba89012d84a58a20556a6fd716cb92",
|
|
84
|
+
"rimraf": "5.0.5"
|
|
83
85
|
},
|
|
84
86
|
"engines": {
|
|
85
|
-
"node": ">=18.0.0 <=
|
|
87
|
+
"node": ">=18.0.0 <=22.x.x",
|
|
86
88
|
"npm": ">=6.0.0"
|
|
87
|
-
}
|
|
88
|
-
"gitHead": "fc1ac2acd58c8a5a858679956b6d102ac5ee4011"
|
|
89
|
+
}
|
|
89
90
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Transform } from 'jscodeshift';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* comments out lifecycles.js/ts files and adds a description for the reason at the top
|
|
5
|
+
*/
|
|
6
|
+
const transform: Transform = (file, api) => {
|
|
7
|
+
const j = api.jscodeshift;
|
|
8
|
+
const root = j(file.source);
|
|
9
|
+
|
|
10
|
+
// check if file path follows this pattern `content-types/[content-type-name]/lifecycles`
|
|
11
|
+
if (/content-types\/[^/]+\/lifecycles\.(js|ts)$/.test(file.path)) {
|
|
12
|
+
// Get the entire source code as a string
|
|
13
|
+
const sourceCode = root.toSource();
|
|
14
|
+
|
|
15
|
+
// Split the source code into lines and prepend // to each line
|
|
16
|
+
// we are using line comments instead of block comments so we don't face issues with existing block comments
|
|
17
|
+
const commentedCode = sourceCode
|
|
18
|
+
.split('\n')
|
|
19
|
+
.map((line) => `// ${line}`)
|
|
20
|
+
.join('\n');
|
|
21
|
+
|
|
22
|
+
// Add a header comment at the top to explain why the file is commented out
|
|
23
|
+
const headerComment = `
|
|
24
|
+
/*
|
|
25
|
+
*
|
|
26
|
+
* ============================================================
|
|
27
|
+
* WARNING: THIS FILE HAS BEEN COMMENTED OUT
|
|
28
|
+
* ============================================================
|
|
29
|
+
*
|
|
30
|
+
* CONTEXT:
|
|
31
|
+
*
|
|
32
|
+
* The lifecycles.js file has been commented out to prevent unintended side effects when starting Strapi 5 for the first time after migrating to the document service.
|
|
33
|
+
*
|
|
34
|
+
* STRAPI 5 introduces a new document service that handles lifecycles differently compared to previous versions. Without migrating your lifecycles to document service middlewares, you may experience issues such as:
|
|
35
|
+
*
|
|
36
|
+
* - \`unpublish\` actions triggering \`delete\` lifecycles for every locale with a published entity, which differs from the expected behavior in v4.
|
|
37
|
+
* - \`discardDraft\` actions triggering both \`create\` and \`delete\` lifecycles, leading to potential confusion.
|
|
38
|
+
*
|
|
39
|
+
* MIGRATION GUIDE:
|
|
40
|
+
*
|
|
41
|
+
* For a thorough guide on migrating your lifecycles to document service middlewares, please refer to the following link:
|
|
42
|
+
* [Document Services Middlewares Migration Guide](https://docs.strapi.io/dev-docs/migration/v4-to-v5/breaking-changes/lifecycle-hooks-document-service)
|
|
43
|
+
*
|
|
44
|
+
* IMPORTANT:
|
|
45
|
+
*
|
|
46
|
+
* Simply uncommenting this file without following the migration guide may result in unexpected behavior and inconsistencies. Ensure that you have completed the migration process before re-enabling this file.
|
|
47
|
+
*
|
|
48
|
+
* ============================================================
|
|
49
|
+
*/
|
|
50
|
+
`;
|
|
51
|
+
|
|
52
|
+
// Combine the header comment with the commented-out code
|
|
53
|
+
const finalCode = `${headerComment}\n${commentedCode}`;
|
|
54
|
+
|
|
55
|
+
return finalCode;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return root.toSource();
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export const parser = 'tsx';
|
|
62
|
+
|
|
63
|
+
export default transform;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
|
|
3
|
+
import type { modules } from '../../../dist';
|
|
4
|
+
|
|
5
|
+
const STRAPI_I18N_DEP_NAME = '@strapi/plugin-i18n';
|
|
6
|
+
const STRAPI_I18N_DEP_PATH = `dependencies.${STRAPI_I18N_DEP_NAME}`;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Specifically targets the root package.json and removes the @strapi/plugin-i18n dependency.
|
|
10
|
+
*
|
|
11
|
+
* Why? The i18n plugin is now a hard dependency of @strapi/strapi and isn't needed in the package.json anymore.
|
|
12
|
+
*/
|
|
13
|
+
const transform: modules.runner.json.JSONTransform = (file, params) => {
|
|
14
|
+
const { cwd, json } = params;
|
|
15
|
+
|
|
16
|
+
const rootPackageJsonPath = path.join(cwd, 'package.json');
|
|
17
|
+
|
|
18
|
+
if (file.path !== rootPackageJsonPath) {
|
|
19
|
+
return file.json;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const j = json(file.json);
|
|
23
|
+
|
|
24
|
+
if (j.has(STRAPI_I18N_DEP_PATH)) {
|
|
25
|
+
j.remove(STRAPI_I18N_DEP_PATH);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return j.root();
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export default transform;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import semver from 'semver';
|
|
3
|
+
|
|
4
|
+
import type { modules } from '../../../dist';
|
|
5
|
+
|
|
6
|
+
const REACT_DEP_NAME = 'react';
|
|
7
|
+
const REACT_DEP_PATH = `dependencies.${REACT_DEP_NAME}`;
|
|
8
|
+
|
|
9
|
+
const REACT_DOM_DEP_NAME = 'react-dom';
|
|
10
|
+
const REACT_DOM_DEP_PATH = `dependencies.${REACT_DOM_DEP_NAME}`;
|
|
11
|
+
|
|
12
|
+
const DEP_NEW_VERSION_RANGE = '^18.0.0';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Specifically targets the root package.json and updates the react and react-dom dependency version.
|
|
16
|
+
*
|
|
17
|
+
* We first check if the react and react-dom dependency is listed in the package.json. If the dependency is
|
|
18
|
+
* found, we verify its version.
|
|
19
|
+
*
|
|
20
|
+
* If the detected version does not satisfy the new version range, we replace it with the new one.
|
|
21
|
+
*
|
|
22
|
+
* Conversely, if no react or react-dom dependency is listed, we add it with the new version range.
|
|
23
|
+
*/
|
|
24
|
+
const transform: modules.runner.json.JSONTransform = (file, params) => {
|
|
25
|
+
const { cwd, json } = params;
|
|
26
|
+
|
|
27
|
+
const rootPackageJsonPath = path.join(cwd, 'package.json');
|
|
28
|
+
|
|
29
|
+
if (file.path !== rootPackageJsonPath) {
|
|
30
|
+
return file.json;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const j = json(file.json);
|
|
34
|
+
|
|
35
|
+
if (j.has(REACT_DEP_PATH) && j.has(REACT_DOM_DEP_PATH)) {
|
|
36
|
+
const currentReactVersion = j.get(REACT_DEP_PATH);
|
|
37
|
+
const currentReactDOMVersion = j.get(REACT_DOM_DEP_PATH);
|
|
38
|
+
|
|
39
|
+
// If the current version is not a string, then something is wrong, abort
|
|
40
|
+
if (typeof currentReactVersion !== 'string' || typeof currentReactDOMVersion !== 'string') {
|
|
41
|
+
return j.root();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const currentSatisfiesNew =
|
|
45
|
+
semver.satisfies(currentReactVersion, DEP_NEW_VERSION_RANGE) &&
|
|
46
|
+
semver.satisfies(currentReactDOMVersion, DEP_NEW_VERSION_RANGE);
|
|
47
|
+
|
|
48
|
+
// if the current version satisfies the new range, keep it as is and abort
|
|
49
|
+
if (currentSatisfiesNew) {
|
|
50
|
+
return j.root();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// else, update the version with the new one
|
|
54
|
+
j.set(REACT_DEP_PATH, DEP_NEW_VERSION_RANGE);
|
|
55
|
+
j.set(REACT_DOM_DEP_PATH, DEP_NEW_VERSION_RANGE);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// If the dependency is not listed yet, add it
|
|
59
|
+
else {
|
|
60
|
+
j.set(REACT_DEP_PATH, DEP_NEW_VERSION_RANGE);
|
|
61
|
+
j.set(REACT_DOM_DEP_PATH, DEP_NEW_VERSION_RANGE);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return j.root();
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export default transform;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import semver from 'semver';
|
|
3
|
+
|
|
4
|
+
import type { modules } from '../../../dist';
|
|
5
|
+
|
|
6
|
+
const REACT_ROUTER_DEP_NAME = 'react-router-dom';
|
|
7
|
+
const REACT_ROUTER_DEP_PATH = `dependencies.${REACT_ROUTER_DEP_NAME}`;
|
|
8
|
+
|
|
9
|
+
const DEP_NEW_VERSION_RANGE = '^6.0.0';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Specifically targets the root package.json and updates the react-router-dom dependency version.
|
|
13
|
+
*
|
|
14
|
+
* We first check if the react-router-dom dependency is listed in the package.json. If the dependency is
|
|
15
|
+
* found, we verify its version.
|
|
16
|
+
*
|
|
17
|
+
* If the detected version does not satisfy the new version range, we replace it with the new one.
|
|
18
|
+
*
|
|
19
|
+
* Conversely, if no react-router-dom dependency is listed, we add it with the new version range.
|
|
20
|
+
*/
|
|
21
|
+
const transform: modules.runner.json.JSONTransform = (file, params) => {
|
|
22
|
+
const { cwd, json } = params;
|
|
23
|
+
|
|
24
|
+
const rootPackageJsonPath = path.join(cwd, 'package.json');
|
|
25
|
+
|
|
26
|
+
if (file.path !== rootPackageJsonPath) {
|
|
27
|
+
return file.json;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const j = json(file.json);
|
|
31
|
+
|
|
32
|
+
if (j.has(REACT_ROUTER_DEP_PATH)) {
|
|
33
|
+
const currentVersion = j.get(REACT_ROUTER_DEP_PATH);
|
|
34
|
+
|
|
35
|
+
// If the current version is not a string, then something is wrong, abort
|
|
36
|
+
if (typeof currentVersion !== 'string') {
|
|
37
|
+
return j.root();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const currentSatisfiesNew = semver.satisfies(currentVersion, DEP_NEW_VERSION_RANGE);
|
|
41
|
+
|
|
42
|
+
// if the current version satisfies the new range, keep it as is and abort
|
|
43
|
+
if (currentSatisfiesNew) {
|
|
44
|
+
return j.root();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// else, update the version with the new one
|
|
48
|
+
j.set(REACT_ROUTER_DEP_PATH, DEP_NEW_VERSION_RANGE);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// If the dependency is not listed yet, add it
|
|
52
|
+
else {
|
|
53
|
+
j.set(REACT_ROUTER_DEP_PATH, DEP_NEW_VERSION_RANGE);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return j.root();
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export default transform;
|