457fee04a95c83cfef48632436bc90e8842fd13c
[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 parse = (version, options) => {
6   if (!options || typeof options !== 'object') {
7     options = {
8       loose: !!options,
9       includePrerelease: false
10     }
11   }
12
13   if (version instanceof SemVer) {
14     return version
15   }
16
17   if (typeof version !== 'string') {
18     return null
19   }
20
21   if (version.length > MAX_LENGTH) {
22     return null
23   }
24
25   const r = options.loose ? re[t.LOOSE] : re[t.FULL]
26   if (!r.test(version)) {
27     return null
28   }
29
30   try {
31     return new SemVer(version, options)
32   } catch (er) {
33     return null
34   }
35 }
36
37 module.exports = parse