mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-25 09:55:15 +00:00
38 lines
698 B
JavaScript
38 lines
698 B
JavaScript
|
const {MAX_LENGTH} = require('../internal/constants')
|
||
|
const { re, t } = require('../internal/re')
|
||
|
const SemVer = require('../classes/semver')
|
||
|
|
||
|
const parse = (version, options) => {
|
||
|
if (!options || typeof options !== 'object') {
|
||
|
options = {
|
||
|
loose: !!options,
|
||
|
includePrerelease: false
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (version instanceof SemVer) {
|
||
|
return version
|
||
|
}
|
||
|
|
||
|
if (typeof version !== 'string') {
|
||
|
return null
|
||
|
}
|
||
|
|
||
|
if (version.length > MAX_LENGTH) {
|
||
|
return null
|
||
|
}
|
||
|
|
||
|
const r = options.loose ? re[t.LOOSE] : re[t.FULL]
|
||
|
if (!r.test(version)) {
|
||
|
return null
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
return new SemVer(version, options)
|
||
|
} catch (er) {
|
||
|
return null
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = parse
|