parse.js
1 const {MAX_LENGTH} = require('../internal/constants') 2 const { re, t } = require('../internal/re') 3 const SemVer = require('../classes/semver') 4 5 const parseOptions = require('../internal/parse-options') 6 const parse = (version, options) => { 7 options = parseOptions(options) 8 9 if (version instanceof SemVer) { 10 return version 11 } 12 13 if (typeof version !== 'string') { 14 return null 15 } 16 17 if (version.length > MAX_LENGTH) { 18 return null 19 } 20 21 const r = options.loose ? re[t.LOOSE] : re[t.FULL] 22 if (!r.test(version)) { 23 return null 24 } 25 26 try { 27 return new SemVer(version, options) 28 } catch (er) { 29 return null 30 } 31 } 32 33 module.exports = parse