Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / semver / functions / 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