100 lines
2.5 KiB
JavaScript
100 lines
2.5 KiB
JavaScript
var _ = require('../util').lodash,
|
|
semver = require('semver'),
|
|
PropertyBase = require('./property-base').PropertyBase,
|
|
|
|
Version;
|
|
|
|
/**
|
|
* @typedef {Object|String} Version.definition
|
|
*/
|
|
_.inherit((
|
|
|
|
/**
|
|
* Defines a Version.
|
|
*
|
|
* @constructor
|
|
* @extends {PropertyBase}
|
|
* @param {Version.definition} definition -
|
|
*/
|
|
Version = function PostmanPropertyVersion (definition) {
|
|
// in case definition object is missing, there is no point moving forward
|
|
if (!definition) { return; }
|
|
|
|
// call the setter to process the version string and assign it to this object
|
|
this.set(definition);
|
|
}), PropertyBase);
|
|
|
|
_.assign(Version.prototype, /** @lends Version.prototype */ {
|
|
/**
|
|
* Set the version value as string or object with separate components of version
|
|
*
|
|
* @draft
|
|
* @param {object|string} value -
|
|
*/
|
|
set (value) {
|
|
// extract the version logic and in case it failes and value passed is an object, we use that assuming parsed
|
|
// value has been sent.
|
|
var ver = semver.parse(value) || value || {};
|
|
|
|
_.assign(this, /** @lends Version.prototype */ {
|
|
/**
|
|
* The raw URL string. If {@link Version#set} is called with a string parameter, the string is saved here
|
|
* before parsing various Version components.
|
|
*
|
|
* @type {String}
|
|
*/
|
|
raw: ver.raw,
|
|
|
|
/**
|
|
* @type {String}
|
|
*/
|
|
major: ver.major,
|
|
|
|
/**
|
|
* @type {String}
|
|
*/
|
|
minor: ver.minor,
|
|
|
|
/**
|
|
* @type {String}
|
|
*/
|
|
patch: ver.patch,
|
|
|
|
/**
|
|
* @type {String}
|
|
*/
|
|
prerelease: ver.prerelease && ver.prerelease.join && ver.prerelease.join() || ver.prerelease,
|
|
|
|
/**
|
|
* @type {String}
|
|
*/
|
|
build: ver.build && ver.build.join && ver.build.join() || ver.build,
|
|
|
|
/**
|
|
* @type {String}
|
|
*/
|
|
string: ver.version
|
|
});
|
|
},
|
|
|
|
toString () {
|
|
// TODO: is this enough? should we build the semver back up?
|
|
return this.string || this.raw;
|
|
}
|
|
});
|
|
|
|
_.assign(Version, /** @lends Version */ {
|
|
/**
|
|
* Defines the name of this property for internal use.
|
|
*
|
|
* @private
|
|
* @readOnly
|
|
* @type {String}
|
|
*/
|
|
_postman_propertyName: 'Version'
|
|
});
|
|
|
|
module.exports = {
|
|
Version
|
|
};
|