const SemVer = require('../classes/semver') const parse = require('./parse') const {re, t} = require('../internal/re') const coerce = (version, options) => { if (version instanceof SemVer) { return version } if (typeof version === 'number') { version = String(version) } if (typeof version !== 'string') { return null } options = options || {} let match = null if (!options.rtl) { match = version.match(re[t.COERCE]) } else { // Find the right-most coercible string that does not share // a terminus with a more left-ward coercible string. // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' // // Walk through the string checking with a /g regexp // Manually set the index so as to pick up overlapping matches. // Stop when we get a match that ends at the string end, since no // coercible string can be more right-ward without the same terminus. let next while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length) ) { if (!match || next.index + next[0].length !== match.index + match[0].length) { match = next } re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length } // leave it in a clean state re[t.COERCERTL].lastIndex = -1 } if (match === null) return null return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options) } module.exports = coerce
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
clean.js | File | 191 B | 0644 |
|
cmp.js | File | 907 B | 0644 |
|
coerce.js | File | 1.46 KB | 0644 |
|
compare-build.js | File | 267 B | 0644 |
|
compare-loose.js | File | 118 B | 0644 |
|
compare.js | File | 156 B | 0644 |
|
diff.js | File | 634 B | 0644 |
|
eq.js | File | 112 B | 0644 |
|
gt.js | File | 110 B | 0644 |
|
gte.js | File | 113 B | 0644 |
|
inc.js | File | 336 B | 0644 |
|
lt.js | File | 110 B | 0644 |
|
lte.js | File | 113 B | 0644 |
|
major.js | File | 122 B | 0644 |
|
minor.js | File | 122 B | 0644 |
|
neq.js | File | 114 B | 0644 |
|
parse.js | File | 698 B | 0644 |
|
patch.js | File | 122 B | 0644 |
|
prerelease.js | File | 220 B | 0644 |
|
rcompare.js | File | 118 B | 0644 |
|
rsort.js | File | 149 B | 0644 |
|
satisfies.js | File | 233 B | 0644 |
|
sort.js | File | 147 B | 0644 |
|
valid.js | File | 162 B | 0644 |
|