@ckeditor/ckeditor5-dev-changelog 54.1.0 → 54.2.1

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.
Files changed (2) hide show
  1. package/dist/index.js +75 -19
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -606,8 +606,8 @@ async function provideNewVersion(options) {
606
606
  }
607
607
  }
608
608
  const question = createVersionQuestion(options);
609
- const answers = await inquirer.prompt(question);
610
- return answers.version;
609
+ const { customVersion, version } = await inquirer.prompt(question);
610
+ return customVersion || version;
611
611
  }
612
612
  /**
613
613
  * Displays a warning message about invalid changes in a visible color.
@@ -640,13 +640,23 @@ async function askContinueConfirmation(indentLevel = 0) {
640
640
  function createVersionQuestion(options) {
641
641
  const { version, packageName, bumpType, releaseChannel, releaseType, indentLevel = 0 } = options;
642
642
  const suggestedVersion = getSuggestedVersion(bumpType, version, releaseChannel) || version;
643
- const message = 'Type the new version ' +
644
- `(current: "${version}", suggested: "${suggestedVersion}":`;
643
+ const message = [
644
+ 'Select the new version.',
645
+ `Current version: ${styleText('cyan', version)}.`,
646
+ `Suggested version: ${styleText('cyan', suggestedVersion)}.`
647
+ ].join(' ');
645
648
  return [{
646
- type: 'input',
649
+ type: 'list',
647
650
  name: 'version',
648
651
  default: suggestedVersion,
649
652
  message,
653
+ prefix: ' '.repeat(indentLevel * CLI_INDENT_SIZE) + styleText('cyan', '?'),
654
+ choices: getChoices$1({ version, bumpType, releaseChannel, releaseType })
655
+ }, {
656
+ type: 'input',
657
+ name: 'customVersion',
658
+ message: 'Enter your custom version:',
659
+ when: ({ version }) => version === 'custom',
650
660
  filter: (newVersion) => newVersion.trim(),
651
661
  validate: (newVersion) => validateInputVersion({ newVersion, version, releaseType, packageName, suggestedVersion }),
652
662
  prefix: ' '.repeat(indentLevel * CLI_INDENT_SIZE) + styleText('cyan', '?')
@@ -665,6 +675,35 @@ function getSuggestedVersion(bumpType, version, releaseChannel) {
665
675
  return semver.inc(version, bumpType);
666
676
  }
667
677
  }
678
+ function getChoices$1({ version, bumpType, releaseChannel, releaseType }) {
679
+ const proposedVersions = [];
680
+ const preReleaseChannels = ['alpha', 'beta', 'rc'];
681
+ const validPromotionChannels = preReleaseChannels.filter((value, index, array) => index >= array.indexOf(releaseChannel));
682
+ // 6.0.0 => Latest (stable) release (7.0.0 | 6.1.0 | 6.0.1)
683
+ if (bumpType !== 'prerelease' && releaseType === 'latest' && releaseChannel === 'latest') {
684
+ proposedVersions.push(semver.inc(version, 'major'), semver.inc(version, 'minor'), semver.inc(version, 'patch'));
685
+ }
686
+ // 6.0.0 => Pre-release (7.0.0-alpha.0 | 6.1.0-alpha.0 | 6.0.1-alpha.0)
687
+ if (bumpType === 'prerelease' && releaseType === 'prerelease' && releaseChannel === 'latest') {
688
+ proposedVersions.push(semver.inc(version, 'premajor', 'alpha'), semver.inc(version, 'preminor', 'alpha'), semver.inc(version, 'prepatch', 'alpha'));
689
+ }
690
+ // 6.0.0-alpha.0 => Latest (stable) release (6.0.0)
691
+ if (bumpType !== 'prerelease' && releaseType === 'latest' && preReleaseChannels.includes(releaseChannel)) {
692
+ proposedVersions.push(semver.inc(version, 'release'));
693
+ }
694
+ // 6.0.0-alpha.0 => Pre-release continuation (6.0.0-alpha.1)
695
+ if (bumpType === 'prerelease' && releaseType === 'prerelease' && preReleaseChannels.includes(releaseChannel)) {
696
+ proposedVersions.push(semver.inc(version, 'prerelease', releaseChannel));
697
+ }
698
+ // 6.0.0-alpha.0 => Pre-release promotion (6.0.0-beta.0 | 6.0.0-rc.0)
699
+ if (bumpType === 'prerelease' && releaseType === 'prerelease-promote' && preReleaseChannels.includes(releaseChannel)) {
700
+ proposedVersions.push(...validPromotionChannels.map(channel => semver.inc(version, 'prerelease', channel)));
701
+ }
702
+ return [
703
+ ...proposedVersions.map(proposedVersion => ({ name: proposedVersion, value: proposedVersion })),
704
+ { name: 'Custom...', value: 'custom' }
705
+ ];
706
+ }
668
707
 
669
708
  /**
670
709
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
@@ -1256,31 +1295,48 @@ async function promptReleaseType(currentVersion) {
1256
1295
  {
1257
1296
  type: 'list',
1258
1297
  name: 'releaseType',
1259
- message: 'Please select the release type.',
1260
- choices: getQuestions(currentVersion)
1298
+ message: `Select the release type. Current version: ${styleText('cyan', currentVersion)}.`,
1299
+ choices: getChoices(currentVersion)
1261
1300
  }
1262
1301
  ]);
1263
1302
  return releaseType;
1264
1303
  }
1265
- function getQuestions(currentVersion) {
1304
+ function getChoices(currentVersion) {
1266
1305
  const currentVersionPrerelease = semver.prerelease(currentVersion);
1267
1306
  if (!currentVersionPrerelease) {
1307
+ const possibleStableVersions = [
1308
+ semver.inc(currentVersion, 'major'),
1309
+ semver.inc(currentVersion, 'minor'),
1310
+ semver.inc(currentVersion, 'patch')
1311
+ ].join(' | ');
1312
+ const possiblePrereleaseVersions = [
1313
+ semver.inc(currentVersion, 'premajor', 'alpha'),
1314
+ semver.inc(currentVersion, 'preminor', 'alpha'),
1315
+ semver.inc(currentVersion, 'prepatch', 'alpha')
1316
+ ].join(' | ');
1268
1317
  return [
1269
- { name: 'Latest (stable) release (e.g. 1.0.0 -> 2.0.0)', value: 'latest' },
1270
- { name: 'Pre-release (e.g. 1.0.0 -> 2.0.0-alpha.0)', value: 'prerelease' }
1318
+ { name: `Latest (stable) release (${possibleStableVersions})`, value: 'latest' },
1319
+ { name: `Pre-release (${possiblePrereleaseVersions})`, value: 'prerelease' }
1271
1320
  ];
1272
1321
  }
1273
- if (currentVersionPrerelease[0] === 'rc') {
1274
- return [
1275
- { name: 'Latest (stable) release (e.g. 1.0.0-beta.2 -> 1.0.0)', value: 'latest' },
1276
- { name: 'Pre-release continuation (e.g. 1.0.0-alpha.0 -> 1.0.0-alpha.1)', value: 'prerelease' }
1277
- ];
1322
+ const currentPreReleaseChannel = currentVersionPrerelease[0];
1323
+ const preReleaseChannels = ['alpha', 'beta', 'rc'];
1324
+ while (preReleaseChannels.includes(currentPreReleaseChannel)) {
1325
+ preReleaseChannels.shift();
1278
1326
  }
1279
- return [
1280
- { name: 'Latest (stable) release (e.g. 1.0.0-beta.2 -> 1.0.0)', value: 'latest' },
1281
- { name: 'Pre-release continuation (e.g. 1.0.0-alpha.0 -> 1.0.0-alpha.1)', value: 'prerelease' },
1282
- { name: 'Pre-release promotion (e.g. 1.0.0-alpha.1 -> 1.0.0-beta.0)', value: 'prerelease-promote' }
1327
+ const stableVersion = semver.inc(currentVersion, 'release');
1328
+ const continuationVersion = semver.inc(currentVersion, 'prerelease', currentPreReleaseChannel);
1329
+ const choices = [
1330
+ { name: `Latest (stable) release (${stableVersion})`, value: 'latest' },
1331
+ { name: `Pre-release continuation (${continuationVersion})`, value: 'prerelease' }
1283
1332
  ];
1333
+ if (preReleaseChannels.length) {
1334
+ const availablePromotions = preReleaseChannels
1335
+ .map(channel => semver.inc(currentVersion, 'prerelease', channel))
1336
+ .join(' | ');
1337
+ choices.push({ name: `Pre-release promotion (${availablePromotions})`, value: 'prerelease-promote' });
1338
+ }
1339
+ return choices;
1284
1340
  }
1285
1341
 
1286
1342
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-dev-changelog",
3
- "version": "54.1.0",
3
+ "version": "54.2.1",
4
4
  "description": "A CKEditor 5 development tool for handling changelogs.",
5
5
  "keywords": [],
6
6
  "author": "CKSource (http://cksource.com/)",
@@ -28,9 +28,9 @@
28
28
  "ckeditor5-dev-changelog-create-entry": "bin/generate-template.js"
29
29
  },
30
30
  "dependencies": {
31
- "@ckeditor/ckeditor5-dev-utils": "^54.1.0",
31
+ "@ckeditor/ckeditor5-dev-utils": "^54.2.1",
32
32
  "date-fns": "^4.0.0",
33
- "glob": "^11.0.2",
33
+ "glob": "^13.0.0",
34
34
  "gray-matter": "^4.0.3",
35
35
  "inquirer": "^12.5.2",
36
36
  "semver": "^7.6.3",