47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
"use strict";
|
|
|
|
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
|
|
var _require = require('../internal/constants'),
|
|
MAX_LENGTH = _require.MAX_LENGTH;
|
|
|
|
var _require2 = require('../internal/re'),
|
|
re = _require2.re,
|
|
t = _require2.t;
|
|
|
|
var SemVer = require('../classes/semver');
|
|
|
|
var parse = function 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;
|
|
}
|
|
|
|
var 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; |