Skip to content

Commit c0d679d

Browse files
committed
Revert pre changes
1 parent 47498de commit c0d679d

File tree

2 files changed

+55
-66
lines changed

2 files changed

+55
-66
lines changed

classes/semver.js

Lines changed: 55 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -176,37 +176,48 @@ class SemVer {
176176
// preminor will bump the version up to the next minor release, and immediately
177177
// down to pre-release. premajor and prepatch work the same way.
178178
inc (release, identifier, identifierBase) {
179-
this.#checkIdentifiers(release, identifier, identifierBase)
179+
if (release.startsWith('pre')) {
180+
if (!identifier && identifierBase === false) {
181+
throw new Error('invalid increment argument: identifier is empty')
182+
}
183+
// Avoid an invalid semver results
184+
if (identifier) {
185+
const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])
186+
if (!match || match[1] !== identifier) {
187+
throw new Error(`invalid identifier: ${identifier}`)
188+
}
189+
}
190+
}
180191

181192
switch (release) {
182193
case 'premajor':
183194
this.prerelease.length = 0
184195
this.patch = 0
185196
this.minor = 0
186197
this.major++
187-
this.#pre(identifier, identifierBase)
198+
this.inc('pre', identifier, identifierBase)
188199
break
189200
case 'preminor':
190201
this.prerelease.length = 0
191202
this.patch = 0
192203
this.minor++
193-
this.#pre(identifier, identifierBase)
204+
this.inc('pre', identifier, identifierBase)
194205
break
195206
case 'prepatch':
196207
// If this is already a prerelease, it will bump to the next version
197208
// drop any prereleases that might already exist, since they are not
198209
// relevant at this point.
199210
this.prerelease.length = 0
200211
this.inc('patch', identifier, identifierBase)
201-
this.#pre(identifier, identifierBase)
212+
this.inc('pre', identifier, identifierBase)
202213
break
203214
// If the input is a non-prerelease version, this acts the same as
204215
// prepatch.
205216
case 'prerelease':
206217
if (this.prerelease.length === 0) {
207218
this.inc('patch', identifier, identifierBase)
208219
}
209-
this.#pre(identifier, identifierBase)
220+
this.inc('pre', identifier, identifierBase)
210221
break
211222

212223
case 'major':
@@ -246,7 +257,46 @@ class SemVer {
246257
}
247258
this.prerelease = []
248259
break
260+
// This probably shouldn't be used publicly.
261+
// 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
262+
case 'pre': {
263+
const base = Number(identifierBase) ? 1 : 0
249264

265+
if (this.prerelease.length === 0) {
266+
this.prerelease = [base]
267+
} else {
268+
let i = this.prerelease.length
269+
while (--i >= 0) {
270+
if (typeof this.prerelease[i] === 'number') {
271+
this.prerelease[i]++
272+
i = -2
273+
}
274+
}
275+
if (i === -1) {
276+
// didn't increment anything
277+
if (identifier === this.prerelease.join('.') && identifierBase === false) {
278+
throw new Error('invalid increment argument: identifier already exists')
279+
}
280+
this.prerelease.push(base)
281+
}
282+
}
283+
if (identifier) {
284+
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
285+
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
286+
let prerelease = [identifier, base]
287+
if (identifierBase === false) {
288+
prerelease = [identifier]
289+
}
290+
if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
291+
if (isNaN(this.prerelease[1])) {
292+
this.prerelease = prerelease
293+
}
294+
} else {
295+
this.prerelease = prerelease
296+
}
297+
}
298+
break
299+
}
250300
default:
251301
throw new Error(`invalid increment argument: ${release}`)
252302
}
@@ -256,62 +306,6 @@ class SemVer {
256306
}
257307
return this
258308
}
259-
260-
#checkIdentifiers (release, identifier, identifierBase) {
261-
if (release.startsWith('pre')) {
262-
if (!identifier && identifierBase === false) {
263-
throw new Error('invalid increment argument: identifier is empty')
264-
}
265-
266-
// Avoid an invalid semver results
267-
if (identifier) {
268-
const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])
269-
if (!match || match[1] !== identifier) {
270-
throw new Error(`invalid identifier: ${identifier}`)
271-
}
272-
}
273-
}
274-
}
275-
276-
// Keep 'pre' internal to avoid confusing results
277-
// inc('1.0.0', 'pre') would become 1.0.0-0 which is the wrong direction.
278-
#pre (identifier, identifierBase) {
279-
const base = Number(identifierBase) ? 1 : 0
280-
281-
if (this.prerelease.length === 0) {
282-
this.prerelease = [base]
283-
} else {
284-
let i = this.prerelease.length
285-
while (--i >= 0) {
286-
if (typeof this.prerelease[i] === 'number') {
287-
this.prerelease[i]++
288-
i = -2
289-
}
290-
}
291-
if (i === -1) {
292-
// didn't increment anything
293-
if (identifier === this.prerelease.join('.') && identifierBase === false) {
294-
throw new Error('invalid increment argument: identifier already exists')
295-
}
296-
this.prerelease.push(base)
297-
}
298-
}
299-
if (identifier) {
300-
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
301-
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
302-
let prerelease = [identifier, base]
303-
if (identifierBase === false) {
304-
prerelease = [identifier]
305-
}
306-
if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
307-
if (isNaN(this.prerelease[1])) {
308-
this.prerelease = prerelease
309-
}
310-
} else {
311-
this.prerelease = prerelease
312-
}
313-
}
314-
}
315309
}
316310

317311
module.exports = SemVer

test/classes/semver.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,6 @@ test('incrementing', t => {
107107
})
108108

109109
test('invalid increments', (t) => {
110-
// pre was used on internally and is not valid anymore
111-
t.throws(
112-
() => new SemVer('1.2.3').inc('pre'),
113-
Error('invalid increment argument: pre')
114-
)
115110
t.throws(
116111
() => new SemVer('1.2.3').inc('prerelease', '', false),
117112
Error('invalid increment argument: identifier is empty')

0 commit comments

Comments
 (0)