diff --git a/bin/semver.js b/bin/semver.js index 8d1b5572..97757314 100755 --- a/bin/semver.js +++ b/bin/semver.js @@ -24,6 +24,7 @@ let rtl = false let identifier const semver = require('../') +const parseOptions = require('../internal/parse-options') let reverse = false @@ -88,7 +89,7 @@ const main = () => { } } - options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl } + options = parseOptions({ loose, includePrerelease, rtl }) versions = versions.map((v) => { return coerce ? (semver.coerce(v, options) || { version: v }).version : v diff --git a/classes/comparator.js b/classes/comparator.js index 62cd204d..1762b1f1 100644 --- a/classes/comparator.js +++ b/classes/comparator.js @@ -78,12 +78,7 @@ class Comparator { throw new TypeError('a Comparator is required') } - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false, - } - } + options = parseOptions(options) if (this.operator === '') { if (this.value === '') { diff --git a/functions/parse.js b/functions/parse.js index a66663aa..988f2e87 100644 --- a/functions/parse.js +++ b/functions/parse.js @@ -4,8 +4,6 @@ const SemVer = require('../classes/semver') const parseOptions = require('../internal/parse-options') const parse = (version, options) => { - options = parseOptions(options) - if (version instanceof SemVer) { return version } @@ -18,6 +16,7 @@ const parse = (version, options) => { return null } + options = parseOptions(options) const r = options.loose ? re[t.LOOSE] : re[t.FULL] if (!r.test(version)) { return null diff --git a/ranges/intersects.js b/ranges/intersects.js index 3d1a6f31..5157ad6a 100644 --- a/ranges/intersects.js +++ b/ranges/intersects.js @@ -1,5 +1,7 @@ const Range = require('../classes/range') +const parseOptions = require('../internal/parse-options') const intersects = (r1, r2, options) => { + options = parseOptions(options) r1 = new Range(r1, options) r2 = new Range(r2, options) return r1.intersects(r2) diff --git a/ranges/max-satisfying.js b/ranges/max-satisfying.js index 6e3d993c..d4eb7251 100644 --- a/ranges/max-satisfying.js +++ b/ranges/max-satisfying.js @@ -1,10 +1,12 @@ const SemVer = require('../classes/semver') const Range = require('../classes/range') +const parseOptions = require('../internal/parse-options') const maxSatisfying = (versions, range, options) => { let max = null let maxSV = null let rangeObj = null + options = parseOptions(options) try { rangeObj = new Range(range, options) } catch (er) { diff --git a/ranges/min-satisfying.js b/ranges/min-satisfying.js index 9b60974e..aa9e5af6 100644 --- a/ranges/min-satisfying.js +++ b/ranges/min-satisfying.js @@ -1,9 +1,11 @@ const SemVer = require('../classes/semver') const Range = require('../classes/range') +const parseOptions = require('../internal/parse-options') const minSatisfying = (versions, range, options) => { let min = null let minSV = null let rangeObj = null + options = parseOptions(options) try { rangeObj = new Range(range, options) } catch (er) { diff --git a/ranges/outside.js b/ranges/outside.js index ae99b10a..4fce1e40 100644 --- a/ranges/outside.js +++ b/ranges/outside.js @@ -7,8 +7,10 @@ const gt = require('../functions/gt') const lt = require('../functions/lt') const lte = require('../functions/lte') const gte = require('../functions/gte') +const parseOptions = require('../internal/parse-options') const outside = (version, range, hilo, options) => { + options = parseOptions(options) version = new SemVer(version, options) range = new Range(range, options) diff --git a/ranges/simplify.js b/ranges/simplify.js index 618d5b62..03753d6a 100644 --- a/ranges/simplify.js +++ b/ranges/simplify.js @@ -3,7 +3,9 @@ // If the original range is shorter than the simplified one, return that. const satisfies = require('../functions/satisfies.js') const compare = require('../functions/compare.js') +const parseOptions = require('../internal/parse-options.js') module.exports = (versions, range, options) => { + options = parseOptions(options) const set = [] let first = null let prev = null diff --git a/ranges/subset.js b/ranges/subset.js index e0dea43c..db915d8c 100644 --- a/ranges/subset.js +++ b/ranges/subset.js @@ -3,6 +3,7 @@ const Comparator = require('../classes/comparator.js') const { ANY } = Comparator const satisfies = require('../functions/satisfies.js') const compare = require('../functions/compare.js') +const parseOptions = require('../internal/parse-options.js') // Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: // - Every simple range `r1, r2, ...` is a null set, OR @@ -45,6 +46,7 @@ const subset = (sub, dom, options = {}) => { return true } + options = parseOptions(options) sub = new Range(sub, options) dom = new Range(dom, options) let sawNonNull = false