| 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 |