@npmcli/template-oss 4.23.4 → 4.23.6

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.
@@ -10,7 +10,7 @@
10
10
  "group-pull-request-title-pattern": "chore: release ${version}",
11
11
  "pull-request-title-pattern": "chore: release${component} ${version}",
12
12
  "changelog-sections": {{{ json changelogTypes }}},
13
- "prerelease-type": "pre",
13
+ "prerelease-type": "pre.0",
14
14
  "packages": {
15
15
  "{{ pkgPath }}": {
16
16
  {{#if isRoot}}
@@ -1,6 +1,4 @@
1
1
  const RP = require('release-please')
2
- const { DefaultVersioningStrategy } = require('release-please/build/src/versioning-strategies/default.js')
3
- const { PrereleaseVersioningStrategy } = require('release-please/build/src/versioning-strategies/prerelease.js')
4
2
  const { ROOT_PROJECT_PATH } = require('release-please/build/src/manifest.js')
5
3
  const { CheckpointLogger, logger } = require('release-please/build/src/util/logger.js')
6
4
  const assert = require('assert')
@@ -9,6 +7,7 @@ const omit = require('just-omit')
9
7
  const ChangelogNotes = require('./changelog.js')
10
8
  const NodeWorkspaceFormat = require('./node-workspace-format.js')
11
9
  const { getPublishTag, noop } = require('./util.js')
10
+ const { SemverVersioningStrategy } = require('./semver-versioning-strategy.js')
12
11
 
13
12
  /* istanbul ignore next: TODO fix flaky tests and enable coverage */
14
13
  class ReleasePlease {
@@ -52,9 +51,7 @@ class ReleasePlease {
52
51
 
53
52
  async init() {
54
53
  RP.registerChangelogNotes('default', ({ github, ...o }) => new ChangelogNotes(github, o))
55
- RP.registerVersioningStrategy('default', o =>
56
- o.prerelease ? new PrereleaseVersioningStrategy(o) : new DefaultVersioningStrategy(o),
57
- )
54
+ RP.registerVersioningStrategy('default', o => new SemverVersioningStrategy(o))
58
55
  RP.registerPlugin(
59
56
  'node-workspace-format',
60
57
  ({ github, targetBranch, repositoryConfig, ...o }) =>
@@ -0,0 +1,70 @@
1
+ const semver = require('semver')
2
+ const { Version } = require('release-please/build/src/version.js')
3
+
4
+ const inc = (version, release, _preid) => {
5
+ const parsed = new semver.SemVer(version)
6
+ const implicitPreid = parsed.prerelease.length > 1 ? parsed.prerelease[0]?.toString() : undefined
7
+ const preid = _preid || implicitPreid
8
+ const next = new semver.SemVer(version).inc(release, preid)
9
+ if (!parsed.prerelease.length) {
10
+ return next.format()
11
+ }
12
+ const isFreshMajor = parsed.minor === 0 && parsed.patch === 0
13
+ const isFreshMinor = parsed.patch === 0
14
+ const shouldPrerelease =
15
+ (release === 'premajor' && isFreshMajor) || (release === 'preminor' && isFreshMinor) || release === 'prepatch'
16
+ if (shouldPrerelease) {
17
+ return semver.inc(version, 'prerelease', preid)
18
+ }
19
+ return next.format()
20
+ }
21
+
22
+ const parseCommits = commits => {
23
+ let release = 'patch'
24
+ for (const commit of commits) {
25
+ if (commit.breaking) {
26
+ release = 'major'
27
+ break
28
+ } else if (['feat', 'feature'].includes(commit.type)) {
29
+ release = 'minor'
30
+ }
31
+ }
32
+ return release
33
+ }
34
+
35
+ class SemverVersioningStrategyNested {
36
+ constructor(options, version, commits) {
37
+ this.options = options
38
+ this.commits = commits
39
+ this.version = version
40
+ }
41
+
42
+ bump() {
43
+ return new SemverVersioningStrategy(this.options).bump(this.version, this.commits)
44
+ }
45
+ }
46
+
47
+ class SemverVersioningStrategy {
48
+ constructor(options) {
49
+ this.options = options
50
+ }
51
+
52
+ determineReleaseType(version, commits) {
53
+ return new SemverVersioningStrategyNested(this.options, version, commits)
54
+ }
55
+
56
+ bump(currentVersion, commits) {
57
+ const prerelease = this.options.prerelease
58
+ const tag = this.options.prereleaseType
59
+ const releaseType = parseCommits(commits)
60
+ const addPreIfNeeded = prerelease ? `pre${releaseType}` : releaseType
61
+ const version = inc(currentVersion.toString(), addPreIfNeeded, tag)
62
+ /* istanbul ignore next */
63
+ if (!version) {
64
+ throw new Error('Could not bump version')
65
+ }
66
+ return Version.parse(version)
67
+ }
68
+ }
69
+
70
+ module.exports = { SemverVersioningStrategy }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npmcli/template-oss",
3
- "version": "4.23.4",
3
+ "version": "4.23.6",
4
4
  "description": "templated files used in npm CLI team oss projects",
5
5
  "main": "lib/content/index.js",
6
6
  "bin": {
@@ -44,7 +44,7 @@
44
44
  "@npmcli/package-json": "^6.0.0",
45
45
  "@octokit/rest": "^19.0.4",
46
46
  "dedent": "^1.5.1",
47
- "diff": "^6.0.0",
47
+ "diff": "^7.0.0",
48
48
  "glob": "^10.1.0",
49
49
  "handlebars": "^4.7.7",
50
50
  "hosted-git-info": "^8.0.0",
@@ -57,7 +57,7 @@
57
57
  "minimatch": "^9.0.2",
58
58
  "npm-package-arg": "^12.0.0",
59
59
  "proc-log": "^5.0.0",
60
- "release-please": "16.13.0",
60
+ "release-please": "16.15.0",
61
61
  "semver": "^7.3.5",
62
62
  "undici": "^6.7.0",
63
63
  "yaml": "^2.1.1"