You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
662 B
33 lines
662 B
const { MAX_LENGTH } = require('../internal/constants') |
|
const { re, t } = require('../internal/re') |
|
const SemVer = require('../classes/semver') |
|
|
|
const parseOptions = require('../internal/parse-options') |
|
const parse = (version, options) => { |
|
options = parseOptions(options) |
|
|
|
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
|
|
|