diff --git a/src/filter-valid-version-or-range.mjs b/src/filter-valid-version-or-range.mjs index 68de737..6d31fa1 100644 --- a/src/filter-valid-version-or-range.mjs +++ b/src/filter-valid-version-or-range.mjs @@ -1,8 +1,6 @@ import { validVersionOrRange } from './valid-version-or-range' -const filterValidVersionOrRange = ({ - input = throw new Error("'input' is required."), - ...options -}) => input.filter((i) => validVersionOrRange({ input : i, ...options })) +const filterValidVersionOrRange = (input = throw new Error("'input' is required."), options) => + input.filter((i) => validVersionOrRange(i, options)) export { filterValidVersionOrRange } diff --git a/src/next-version.mjs b/src/next-version.mjs index f49319e..f4db279 100644 --- a/src/next-version.mjs +++ b/src/next-version.mjs @@ -21,7 +21,7 @@ import { * means to increment the pre-release ID from 'alpha' -> 'beta' -> 'rc' -> none. Passing in a `currVer` with any * other prerelease ID with a 'pretype' increment will result in undefined results */ -const nextVersion = ({ currVer, increment }) => { +const nextVersion = (currVer, increment) => { if (!semver.valid(currVer)) { const msg = `Invalid version '${currVer}'` + (semver.validRange(currVer) ? '; range not allowed.' : '.') throw createError.BadRequest(msg) diff --git a/src/test/filter-valid-version-or-range.test.mjs b/src/test/filter-valid-version-or-range.test.mjs index 1af694b..80a5c4f 100644 --- a/src/test/filter-valid-version-or-range.test.mjs +++ b/src/test/filter-valid-version-or-range.test.mjs @@ -7,5 +7,5 @@ describe('filterValidVersionOrRange', () => { ['1.0', '1.2.3', '2.3.9-alpha.12', '1.1.1-alpha.x', 'backlog', '1.2.x', '8.*', '*', '1.2.4.*', '^1.2.3'], ['1.2.3', '2.3.9-alpha.12', '1.1.1-alpha.x', '1.2.x', '8.*', '*'] ] - ])('%p => %p', (input, expected) => expect(filterValidVersionOrRange({ input, onlyXRange : true })).toEqual(expected)) + ])('%p => %p', (input, expected) => expect(filterValidVersionOrRange(input, { onlyXRange : true })).toEqual(expected)) }) diff --git a/src/test/next-version.test.js b/src/test/next-version.test.js index 659d9f0..5d3661f 100644 --- a/src/test/next-version.test.js +++ b/src/test/next-version.test.js @@ -32,7 +32,7 @@ describe('nextVersion', () => { ['1.0.0-beta.1', 'rc', '1.0.0-rc.0'], ['1.0.0-beta.1', 'gold', '1.0.0'], ['1.0.0-rc.1', 'gold', '1.0.0'] - ])("%s + '%s' -> %s", (currVer, increment, expected) => expect(ver.nextVersion({ currVer, increment })).toBe(expected)) + ])("%s + '%s' -> %s", (currVer, increment, expected) => expect(ver.nextVersion(currVer, increment)).toBe(expected)) test.each([ ['1.0.0', 'prerelease'], @@ -54,7 +54,7 @@ describe('nextVersion', () => { ['1.0.0', 'beta'], ['1.0.0', 'rc'] ])('%s + %s -> throws an exception', (currVer, increment) => - expect(() => ver.nextVersion({ currVer, increment })).toThrow()) + expect(() => ver.nextVersion(currVer, increment)).toThrow()) test.each([ 'prototype.1', @@ -66,5 +66,5 @@ describe('nextVersion', () => { }) test.each(['1.0.x', '^1.0.0', '1.0.0 - 1.x', '~1.0.0'])('raises except on range input %s', (currVer) => - expect(() => ver.nextVersion({ currVer, increment : 'prerelease' })).toThrow(/range not allowed/i)) + expect(() => ver.nextVersion(currVer, 'prerelease')).toThrow(/range not allowed/i)) }) diff --git a/src/test/valid-version-or-range.test.mjs b/src/test/valid-version-or-range.test.mjs index bce3fce..a2e254b 100644 --- a/src/test/valid-version-or-range.test.mjs +++ b/src/test/valid-version-or-range.test.mjs @@ -3,11 +3,11 @@ import { validVersionOrRange } from '../valid-version-or-range' describe('validVersionOrRange', () => { test.each([ - [{ input : '1.0.0' }, true], - [{ input : '1.0.0-alpha.0' }, true], - [{ input : '1.0.0-alpha.1' }, true], - [{ input : '1.0.0 - 2' }, true], - [{ input : '1.0.x', onlyXRange : true }, true], - [{ input : '1.0.0-alpha.1' }, true] - ])('%s => %s', (input, expected) => expect(validVersionOrRange(input)).toBe(expected)) + ['1.0.0', undefined, true], + ['1.0.0-alpha.0', undefined, true], + ['1.0.0-alpha.1', undefined, true], + ['1.0.0 - 2', undefined, true], + ['1.0.x', { onlyXRange : true }, true], + ['1.0.0-alpha.1', undefined, true] + ])('%s => %s', (input, options, expected) => expect(validVersionOrRange(input, options)).toBe(expected)) }) diff --git a/src/valid-version-or-range.mjs b/src/valid-version-or-range.mjs index b35e6a3..44b5a8b 100644 --- a/src/valid-version-or-range.mjs +++ b/src/valid-version-or-range.mjs @@ -2,12 +2,11 @@ import semver from 'semver' import { xRangeRE } from './constants' -const validVersionOrRange = ({ +const validVersionOrRange = (input = throw new Error("'input' is required."), { dissallowRanges = false, dissallowVersions = false, - input = throw new Error("'input' is required."), onlyXRange = false -}) => +} = {}) => !!((dissallowVersions !== true && semver.valid(input)) || (onlyXRange !== true && dissallowRanges !== true && semver.validRange(input)) || (onlyXRange === true && input.match(xRangeRE)))