12345678910111213141516171819202122232425262728293031323334353637 |
- const {MAX_LENGTH} = require('../internal/constants')
- const { re, t } = require('../internal/re')
- const SemVer = require('../classes/semver')
-
- const parse = (version, options) => {
- if (!options || typeof options !== 'object') {
- options = {
- loose: !!options,
- includePrerelease: false
- }
- }
-
- 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
|