From 9877f8dc59f6fc6d1b1896d77029e6473e371616 Mon Sep 17 00:00:00 2001 From: Ian Grant Date: Thu, 16 May 2024 15:34:09 +0100 Subject: [PATCH] Treat pre-release as minor to their unsuffixed version (#22) * fix: don't bump semantic level 2 tag for a 3-level increment with a modifier tag * fix: don't bump semantic level 2 tag for a 2-level increment with a modifier tag * chore: test 'rc' is a modifier tag type * chore: add tests for pre-release level 3 modifiers with semver level 2 tags fixes * Add 'prepare' script to package.json * Update package-lock.json * chore: add build outputs --- dist/node/cjs/index.js | 8 ++++++-- dist/node/cjs/index.js.map | 2 +- dist/node/es/index.js | 8 ++++++-- dist/node/es/index.js.map | 2 +- dist/node/lts/cjs/index.js | 8 ++++++-- dist/node/lts/cjs/index.js.map | 2 +- dist/node/lts/es/index.js | 8 ++++++-- dist/node/lts/es/index.js.map | 2 +- package-lock.json | 4 ++-- package.json | 3 ++- src/Version.js | 8 ++++++-- tests/index.js | 11 ++++++++++- 12 files changed, 48 insertions(+), 18 deletions(-) diff --git a/dist/node/cjs/index.js b/dist/node/cjs/index.js index b1b1446..f0a1560 100644 --- a/dist/node/cjs/index.js +++ b/dist/node/cjs/index.js @@ -387,7 +387,9 @@ class Version { } else if (SemanticVersion.tags.indexOf(l2) !== -1) { if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset(); - else this.semanticver.inc(l2); + else { + if (!this.versionStringHasModifier) this.semanticver.inc(l2); + } } else { throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified "${l2}" as the second tag and "${l}" as the first tag.`) @@ -399,7 +401,9 @@ class Version { if (SemanticVersion.tags.indexOf(l2) !== -1) { if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset(); - else this.semanticver.inc(l2); + else { + if (!this.versionStringHasModifier) this.semanticver.inc(l2); + } } if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) { diff --git a/dist/node/cjs/index.js.map b/dist/node/cjs/index.js.map index ad75f92..8c2694f 100644 --- a/dist/node/cjs/index.js.map +++ b/dist/node/cjs/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../../src/DateVersion.js","../../../src/SemanticVersion.js","../../../src/ModifierVersion.js","../../../src/UtcDate.js","../../../src/LocalDate.js","../../../src/Version.js","../../../src/index.js"],"sourcesContent":["export default class DateVersion {\n static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion, date) {\n this['YYYY'] = null\n this['YY'] = null\n this['0Y'] = null\n this['MM'] = null\n this['0M'] = null\n this['WW'] = null\n this['0W'] = null\n this['DD'] = null\n this['0D'] = null\n\n this.hasChanged = false\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n this.date = date\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Calendar tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const prevValue = this.asString()\n\n const yearstr = this.date.getFullYear().toString()\n this['YYYY'] = yearstr\n this['YY'] = parseInt(yearstr.slice(2)).toString()\n this['0Y'] = this['YY'].padStart(2, '0')\n\n const monthstr = (this.date.getMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.date.getWeek().toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n const newValue = this.asString()\n\n this.hasChanged = prevValue != newValue\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n\n switch (prop) {\n case 'YYYY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 4\n break;\n\n case 'YY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 1 || v.length === 2 || v.length === 3\n break;\n\n case '0Y':\n if ((v.length == 2 || v.length == 3) && v.slice(0, 1) == '0') return false\n return v.length === 2 || v.length === 3\n break;\n\n case 'MM':\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(Number(v)) !== -1\n break;\n\n case '0M':\n return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n .indexOf(v) !== -1\n break;\n\n case 'WW':\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case '0W':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case 'DD':\n return Number(v) >= 1 && Number(v) <= 31\n break;\n\n case '0D':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 31\n break;\n }\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Semantic tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n reset() {\n this.props.map(prop => this[prop] = 0)\n }\n\n inc(level) {\n if (this.props.indexOf(level) === -1) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n if (level == 'MAJOR') {\n this.MAJOR = (parseInt(this.MAJOR) + 1).toString()\n if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n \n if (level == 'MINOR') {\n this.MINOR = (parseInt(this.MINOR) + 1).toString()\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n\n if (level == 'PATCH') {\n this.PATCH = (parseInt(this.PATCH) + 1).toString()\n }\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n return true\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class ModifierVersion {\n static seperator = '-'\n static tags = ['DEV', 'ALPHA', 'BETA', 'RC']\n\n reDigits = /[^0-9\\-]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.prop = null\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Modifier tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this.prop = prop\n this[prop] = obj[prop]\n }\n }\n\n inc(level) {\n if (level != this.prop) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n this[this.prop] = (parseInt(this[this.prop]) + 1).toString()\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n if (v.indexOf('-') !== -1 && v != '-1') return false\n return true\n }\n\n asObject() {\n const result = {}\n result[this.prop] = this[this.prop]\n return result\n }\n\n asString() {\n return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}`\n }\n}\n","export default class UtcDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getUTCFullYear()\n }\n\n getMonth() {\n return this.date.getUTCMonth()\n }\n\n getWeek() {\n return this.getUTCWeek()\n }\n\n getDate() {\n return this.date.getUTCDate()\n }\n\n getUTCWeek() {\n const d = new Date(\n Date.UTC(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n );\n const daynum = d.getUTCDay() || 7\n\n d.setUTCDate(d.getUTCDate() + 4 - daynum)\n\n const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n","export default class LocalDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getFullYear()\n }\n\n getMonth() {\n return this.date.getMonth()\n }\n\n getWeek() {\n return this.getWeek()\n }\n\n getDate() {\n return this.date.getDate()\n }\n\n getWeek() {\n const d = new Date(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n const daynum = d.getDay() || 7\n\n d.setDate(d.getDate() + 4 - daynum)\n\n const yearstart = new Date(d.getFullYear(), 0, 1)\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator, date) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.isInitialVersion = version.isInitialVersion\n this.isCalendarLeading = version.isCalendarLeading\n this.datever = null\n this.semanticver = null\n this.modifierver = null\n this.date = date\n\n this.parse(version)\n }\n\n parse(version) {\n if (Object.keys(version.calendar).length > 0) {\n this.datever = new DateVersion(version.calendar, this.seperator, this.isInitialVersion, this.date)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator, this.isInitialVersion)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator, this.isInitialVersion)\n }\n }\n\n inc(levels) {\n const l = levels[0]\n\n const removeModifier = levels.length === 1 \n && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 \n && this.versionStringHasModifier\n if (removeModifier) {\n this.modifierver = null\n\n return this\n }\n\n if (l == 'CALENDAR') this.datever.inc(l)\n if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l)\n if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l)\n\n if (levels.length === 1) {\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (levels.length === 2) {\n const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && ModifierVersion.tags.indexOf(l) === -1) {\n this.modifierver.inc(l2)\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else this.semanticver.inc(l2)\n }\n else {\n throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\n }\n }\n else if (levels.length === 3) {\n const l2 = levels[1]\n const l3 = levels[2]\n\n if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else this.semanticver.inc(l2)\n }\n\n if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) {\n this.modifierver.inc(l3)\n }\n else {\n throw new Error(`The third tag of the level must be a modifier tag. You specified \"${l3}\".`)\n }\n }\n\n return this\n }\n\n asObject() {\n const result = {\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n if (this.datever) result.calendar = this.datever.asObject()\n if (this.semanticver) result.semantic = this.semanticver.asObject()\n if (this.modifierver) result.modifier = this.modifierver.asObject()\n\n return result\n }\n}\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\nimport UtcDate from './UtcDate.js'\nimport LocalDate from './LocalDate.js'\nimport Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n this._useLocalTime = false\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n const parsedVersion = this.parseVersion(version, format, levels)\n const date = this._useLocalTime ? new LocalDate() : new UtcDate()\n\n const obj = (new Version(parsedVersion, this.seperator, date)).inc(levels).asObject()\n\n const result = this.asString(format, obj)\n\n if (version == result) {\n throw new Error('No change happened in the version.')\n }\n\n return result\n }\n\n isValid(format, version) {\n if (!version) return false\n\n try {\n format = this.validateFormat(format, [])\n version = this.parseVersion(version, format, [])\n\n new Version(version, this.seperator)\n\n return true\n } catch (e) {\n return false\n }\n }\n\n getTagType(tag) {\n tag = tag.toUpperCase()\n\n if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar'\n if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic'\n if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier'\n \n return undefined;\n }\n\n asString(format, obj) {\n const result = []\n\n for (const tag of format.sorted) {\n if (DateVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.calendar[tag])\n }\n if (SemanticVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.semantic[tag])\n }\n if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) {\n result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag])\n }\n }\n\n return result\n .join(this.seperator)\n .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator)\n }\n\n parseVersion(version, format, levels) {\n const map = {\n isCalendarLeading: format.isCalendarLeading,\n isInitialVersion: !version,\n versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version),\n sorted: {},\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n let startIndex=0, endIndex=0\n for (const tag of format.sorted) {\n endIndex = version.indexOf(this.seperator, startIndex+1)\n if (endIndex === -1) endIndex = undefined\n\n let value = version.slice(startIndex, endIndex)\n\n if (value.indexOf(ModifierVersion.seperator) !== -1) {\n endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1)\n value = version.slice(startIndex, endIndex)\n }\n\n if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) {\n if (value.toUpperCase() != tag) value = '-1'\n else value = version.slice(startIndex + value.length + 1)\n }\n\n if (isNaN(startIndex)) {\n value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'\n }\n\n if (value == '') {\n value = '0'\n }\n\n map.sorted[tag] = value\n if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value\n if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value\n if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value\n\n startIndex = endIndex + 1\n }\n\n return map\n }\n\n validateFormat(format, levels) {\n const result = {\n sorted: [],\n calendar: [],\n semantic: [],\n modifier: []\n }\n\n const tags = format.toUpperCase().split(this.seperator)\n\n for (const tag of tags) {\n if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag)\n else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag)\n else throw new Error(`[CALVER]: Invalid format tag \"${tag}\".`)\n\n result.sorted.push(tag)\n }\n\n for (const level of levels) {\n if (ModifierVersion.tags.indexOf(level) !== -1) {\n result.modifier.push(level)\n result.sorted.push(level)\n }\n }\n\n result.isCalendarLeading = DateVersion.tags.indexOf(result.sorted[0]) !== -1\n\n return result\n }\n\n validateLevels(levels) {\n const result = []\n const arr = levels.split('.')\n\n for (const level of arr) {\n const formatted = level.toUpperCase()\n if (this.levels.indexOf(formatted) !== -1) {\n result.push(formatted)\n }\n else {\n throw new Error(`[CALVER]: Invalid level \"${level}\".`)\n }\n }\n\n return result\n }\n\n set useLocalTime(value) {\n this._useLocalTime = value\n }\n}\n\nexport default new Calver()\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../../../src/DateVersion.js","../../../src/SemanticVersion.js","../../../src/ModifierVersion.js","../../../src/UtcDate.js","../../../src/LocalDate.js","../../../src/Version.js","../../../src/index.js"],"sourcesContent":["export default class DateVersion {\n static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion, date) {\n this['YYYY'] = null\n this['YY'] = null\n this['0Y'] = null\n this['MM'] = null\n this['0M'] = null\n this['WW'] = null\n this['0W'] = null\n this['DD'] = null\n this['0D'] = null\n\n this.hasChanged = false\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n this.date = date\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Calendar tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const prevValue = this.asString()\n\n const yearstr = this.date.getFullYear().toString()\n this['YYYY'] = yearstr\n this['YY'] = parseInt(yearstr.slice(2)).toString()\n this['0Y'] = this['YY'].padStart(2, '0')\n\n const monthstr = (this.date.getMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.date.getWeek().toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n const newValue = this.asString()\n\n this.hasChanged = prevValue != newValue\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n\n switch (prop) {\n case 'YYYY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 4\n break;\n\n case 'YY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 1 || v.length === 2 || v.length === 3\n break;\n\n case '0Y':\n if ((v.length == 2 || v.length == 3) && v.slice(0, 1) == '0') return false\n return v.length === 2 || v.length === 3\n break;\n\n case 'MM':\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(Number(v)) !== -1\n break;\n\n case '0M':\n return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n .indexOf(v) !== -1\n break;\n\n case 'WW':\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case '0W':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case 'DD':\n return Number(v) >= 1 && Number(v) <= 31\n break;\n\n case '0D':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 31\n break;\n }\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Semantic tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n reset() {\n this.props.map(prop => this[prop] = 0)\n }\n\n inc(level) {\n if (this.props.indexOf(level) === -1) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n if (level == 'MAJOR') {\n this.MAJOR = (parseInt(this.MAJOR) + 1).toString()\n if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n \n if (level == 'MINOR') {\n this.MINOR = (parseInt(this.MINOR) + 1).toString()\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n\n if (level == 'PATCH') {\n this.PATCH = (parseInt(this.PATCH) + 1).toString()\n }\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n return true\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class ModifierVersion {\n static seperator = '-'\n static tags = ['DEV', 'ALPHA', 'BETA', 'RC']\n\n reDigits = /[^0-9\\-]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.prop = null\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Modifier tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this.prop = prop\n this[prop] = obj[prop]\n }\n }\n\n inc(level) {\n if (level != this.prop) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n this[this.prop] = (parseInt(this[this.prop]) + 1).toString()\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n if (v.indexOf('-') !== -1 && v != '-1') return false\n return true\n }\n\n asObject() {\n const result = {}\n result[this.prop] = this[this.prop]\n return result\n }\n\n asString() {\n return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}`\n }\n}\n","export default class UtcDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getUTCFullYear()\n }\n\n getMonth() {\n return this.date.getUTCMonth()\n }\n\n getWeek() {\n return this.getUTCWeek()\n }\n\n getDate() {\n return this.date.getUTCDate()\n }\n\n getUTCWeek() {\n const d = new Date(\n Date.UTC(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n );\n const daynum = d.getUTCDay() || 7\n\n d.setUTCDate(d.getUTCDate() + 4 - daynum)\n\n const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n","export default class LocalDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getFullYear()\n }\n\n getMonth() {\n return this.date.getMonth()\n }\n\n getWeek() {\n return this.getWeek()\n }\n\n getDate() {\n return this.date.getDate()\n }\n\n getWeek() {\n const d = new Date(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n const daynum = d.getDay() || 7\n\n d.setDate(d.getDate() + 4 - daynum)\n\n const yearstart = new Date(d.getFullYear(), 0, 1)\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator, date) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.isInitialVersion = version.isInitialVersion\n this.isCalendarLeading = version.isCalendarLeading\n this.datever = null\n this.semanticver = null\n this.modifierver = null\n this.date = date\n\n this.parse(version)\n }\n\n parse(version) {\n if (Object.keys(version.calendar).length > 0) {\n this.datever = new DateVersion(version.calendar, this.seperator, this.isInitialVersion, this.date)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator, this.isInitialVersion)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator, this.isInitialVersion)\n }\n }\n\n inc(levels) {\n const l = levels[0]\n\n const removeModifier = levels.length === 1 \n && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 \n && this.versionStringHasModifier\n if (removeModifier) {\n this.modifierver = null\n\n return this\n }\n\n if (l == 'CALENDAR') this.datever.inc(l)\n if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l)\n if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l)\n\n if (levels.length === 1) {\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (levels.length === 2) {\n const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && ModifierVersion.tags.indexOf(l) === -1) {\n this.modifierver.inc(l2)\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else {\n if (!this.versionStringHasModifier) this.semanticver.inc(l2)\n }\n }\n else {\n throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\n }\n }\n else if (levels.length === 3) {\n const l2 = levels[1]\n const l3 = levels[2]\n\n if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else {\n if (!this.versionStringHasModifier) this.semanticver.inc(l2)\n }\n }\n\n if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) {\n this.modifierver.inc(l3)\n }\n else {\n throw new Error(`The third tag of the level must be a modifier tag. You specified \"${l3}\".`)\n }\n }\n\n return this\n }\n\n asObject() {\n const result = {\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n if (this.datever) result.calendar = this.datever.asObject()\n if (this.semanticver) result.semantic = this.semanticver.asObject()\n if (this.modifierver) result.modifier = this.modifierver.asObject()\n\n return result\n }\n}\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\nimport UtcDate from './UtcDate.js'\nimport LocalDate from './LocalDate.js'\nimport Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n this._useLocalTime = false\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n const parsedVersion = this.parseVersion(version, format, levels)\n const date = this._useLocalTime ? new LocalDate() : new UtcDate()\n\n const obj = (new Version(parsedVersion, this.seperator, date)).inc(levels).asObject()\n\n const result = this.asString(format, obj)\n\n if (version == result) {\n throw new Error('No change happened in the version.')\n }\n\n return result\n }\n\n isValid(format, version) {\n if (!version) return false\n\n try {\n format = this.validateFormat(format, [])\n version = this.parseVersion(version, format, [])\n\n new Version(version, this.seperator)\n\n return true\n } catch (e) {\n return false\n }\n }\n\n getTagType(tag) {\n tag = tag.toUpperCase()\n\n if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar'\n if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic'\n if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier'\n \n return undefined;\n }\n\n asString(format, obj) {\n const result = []\n\n for (const tag of format.sorted) {\n if (DateVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.calendar[tag])\n }\n if (SemanticVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.semantic[tag])\n }\n if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) {\n result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag])\n }\n }\n\n return result\n .join(this.seperator)\n .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator)\n }\n\n parseVersion(version, format, levels) {\n const map = {\n isCalendarLeading: format.isCalendarLeading,\n isInitialVersion: !version,\n versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version),\n sorted: {},\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n let startIndex=0, endIndex=0\n for (const tag of format.sorted) {\n endIndex = version.indexOf(this.seperator, startIndex+1)\n if (endIndex === -1) endIndex = undefined\n\n let value = version.slice(startIndex, endIndex)\n\n if (value.indexOf(ModifierVersion.seperator) !== -1) {\n endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1)\n value = version.slice(startIndex, endIndex)\n }\n\n if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) {\n if (value.toUpperCase() != tag) value = '-1'\n else value = version.slice(startIndex + value.length + 1)\n }\n\n if (isNaN(startIndex)) {\n value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'\n }\n\n if (value == '') {\n value = '0'\n }\n\n map.sorted[tag] = value\n if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value\n if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value\n if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value\n\n startIndex = endIndex + 1\n }\n\n return map\n }\n\n validateFormat(format, levels) {\n const result = {\n sorted: [],\n calendar: [],\n semantic: [],\n modifier: []\n }\n\n const tags = format.toUpperCase().split(this.seperator)\n\n for (const tag of tags) {\n if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag)\n else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag)\n else throw new Error(`[CALVER]: Invalid format tag \"${tag}\".`)\n\n result.sorted.push(tag)\n }\n\n for (const level of levels) {\n if (ModifierVersion.tags.indexOf(level) !== -1) {\n result.modifier.push(level)\n result.sorted.push(level)\n }\n }\n\n result.isCalendarLeading = DateVersion.tags.indexOf(result.sorted[0]) !== -1\n\n return result\n }\n\n validateLevels(levels) {\n const result = []\n const arr = levels.split('.')\n\n for (const level of arr) {\n const formatted = level.toUpperCase()\n if (this.levels.indexOf(formatted) !== -1) {\n result.push(formatted)\n }\n else {\n throw new Error(`[CALVER]: Invalid level \"${level}\".`)\n }\n }\n\n return result\n }\n\n set useLocalTime(value) {\n this._useLocalTime = value\n }\n}\n\nexport default new Calver()\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/node/es/index.js b/dist/node/es/index.js index 664d1e5..4630dac 100644 --- a/dist/node/es/index.js +++ b/dist/node/es/index.js @@ -385,7 +385,9 @@ class Version { } else if (SemanticVersion.tags.indexOf(l2) !== -1) { if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset(); - else this.semanticver.inc(l2); + else { + if (!this.versionStringHasModifier) this.semanticver.inc(l2); + } } else { throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified "${l2}" as the second tag and "${l}" as the first tag.`) @@ -397,7 +399,9 @@ class Version { if (SemanticVersion.tags.indexOf(l2) !== -1) { if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset(); - else this.semanticver.inc(l2); + else { + if (!this.versionStringHasModifier) this.semanticver.inc(l2); + } } if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) { diff --git a/dist/node/es/index.js.map b/dist/node/es/index.js.map index a6016cb..2c911a5 100644 --- a/dist/node/es/index.js.map +++ b/dist/node/es/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../../src/DateVersion.js","../../../src/SemanticVersion.js","../../../src/ModifierVersion.js","../../../src/UtcDate.js","../../../src/LocalDate.js","../../../src/Version.js","../../../src/index.js"],"sourcesContent":["export default class DateVersion {\n static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion, date) {\n this['YYYY'] = null\n this['YY'] = null\n this['0Y'] = null\n this['MM'] = null\n this['0M'] = null\n this['WW'] = null\n this['0W'] = null\n this['DD'] = null\n this['0D'] = null\n\n this.hasChanged = false\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n this.date = date\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Calendar tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const prevValue = this.asString()\n\n const yearstr = this.date.getFullYear().toString()\n this['YYYY'] = yearstr\n this['YY'] = parseInt(yearstr.slice(2)).toString()\n this['0Y'] = this['YY'].padStart(2, '0')\n\n const monthstr = (this.date.getMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.date.getWeek().toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n const newValue = this.asString()\n\n this.hasChanged = prevValue != newValue\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n\n switch (prop) {\n case 'YYYY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 4\n break;\n\n case 'YY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 1 || v.length === 2 || v.length === 3\n break;\n\n case '0Y':\n if ((v.length == 2 || v.length == 3) && v.slice(0, 1) == '0') return false\n return v.length === 2 || v.length === 3\n break;\n\n case 'MM':\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(Number(v)) !== -1\n break;\n\n case '0M':\n return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n .indexOf(v) !== -1\n break;\n\n case 'WW':\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case '0W':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case 'DD':\n return Number(v) >= 1 && Number(v) <= 31\n break;\n\n case '0D':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 31\n break;\n }\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Semantic tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n reset() {\n this.props.map(prop => this[prop] = 0)\n }\n\n inc(level) {\n if (this.props.indexOf(level) === -1) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n if (level == 'MAJOR') {\n this.MAJOR = (parseInt(this.MAJOR) + 1).toString()\n if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n \n if (level == 'MINOR') {\n this.MINOR = (parseInt(this.MINOR) + 1).toString()\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n\n if (level == 'PATCH') {\n this.PATCH = (parseInt(this.PATCH) + 1).toString()\n }\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n return true\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class ModifierVersion {\n static seperator = '-'\n static tags = ['DEV', 'ALPHA', 'BETA', 'RC']\n\n reDigits = /[^0-9\\-]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.prop = null\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Modifier tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this.prop = prop\n this[prop] = obj[prop]\n }\n }\n\n inc(level) {\n if (level != this.prop) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n this[this.prop] = (parseInt(this[this.prop]) + 1).toString()\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n if (v.indexOf('-') !== -1 && v != '-1') return false\n return true\n }\n\n asObject() {\n const result = {}\n result[this.prop] = this[this.prop]\n return result\n }\n\n asString() {\n return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}`\n }\n}\n","export default class UtcDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getUTCFullYear()\n }\n\n getMonth() {\n return this.date.getUTCMonth()\n }\n\n getWeek() {\n return this.getUTCWeek()\n }\n\n getDate() {\n return this.date.getUTCDate()\n }\n\n getUTCWeek() {\n const d = new Date(\n Date.UTC(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n );\n const daynum = d.getUTCDay() || 7\n\n d.setUTCDate(d.getUTCDate() + 4 - daynum)\n\n const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n","export default class LocalDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getFullYear()\n }\n\n getMonth() {\n return this.date.getMonth()\n }\n\n getWeek() {\n return this.getWeek()\n }\n\n getDate() {\n return this.date.getDate()\n }\n\n getWeek() {\n const d = new Date(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n const daynum = d.getDay() || 7\n\n d.setDate(d.getDate() + 4 - daynum)\n\n const yearstart = new Date(d.getFullYear(), 0, 1)\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator, date) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.isInitialVersion = version.isInitialVersion\n this.isCalendarLeading = version.isCalendarLeading\n this.datever = null\n this.semanticver = null\n this.modifierver = null\n this.date = date\n\n this.parse(version)\n }\n\n parse(version) {\n if (Object.keys(version.calendar).length > 0) {\n this.datever = new DateVersion(version.calendar, this.seperator, this.isInitialVersion, this.date)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator, this.isInitialVersion)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator, this.isInitialVersion)\n }\n }\n\n inc(levels) {\n const l = levels[0]\n\n const removeModifier = levels.length === 1 \n && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 \n && this.versionStringHasModifier\n if (removeModifier) {\n this.modifierver = null\n\n return this\n }\n\n if (l == 'CALENDAR') this.datever.inc(l)\n if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l)\n if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l)\n\n if (levels.length === 1) {\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (levels.length === 2) {\n const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && ModifierVersion.tags.indexOf(l) === -1) {\n this.modifierver.inc(l2)\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else this.semanticver.inc(l2)\n }\n else {\n throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\n }\n }\n else if (levels.length === 3) {\n const l2 = levels[1]\n const l3 = levels[2]\n\n if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else this.semanticver.inc(l2)\n }\n\n if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) {\n this.modifierver.inc(l3)\n }\n else {\n throw new Error(`The third tag of the level must be a modifier tag. You specified \"${l3}\".`)\n }\n }\n\n return this\n }\n\n asObject() {\n const result = {\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n if (this.datever) result.calendar = this.datever.asObject()\n if (this.semanticver) result.semantic = this.semanticver.asObject()\n if (this.modifierver) result.modifier = this.modifierver.asObject()\n\n return result\n }\n}\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\nimport UtcDate from './UtcDate.js'\nimport LocalDate from './LocalDate.js'\nimport Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n this._useLocalTime = false\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n const parsedVersion = this.parseVersion(version, format, levels)\n const date = this._useLocalTime ? new LocalDate() : new UtcDate()\n\n const obj = (new Version(parsedVersion, this.seperator, date)).inc(levels).asObject()\n\n const result = this.asString(format, obj)\n\n if (version == result) {\n throw new Error('No change happened in the version.')\n }\n\n return result\n }\n\n isValid(format, version) {\n if (!version) return false\n\n try {\n format = this.validateFormat(format, [])\n version = this.parseVersion(version, format, [])\n\n new Version(version, this.seperator)\n\n return true\n } catch (e) {\n return false\n }\n }\n\n getTagType(tag) {\n tag = tag.toUpperCase()\n\n if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar'\n if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic'\n if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier'\n \n return undefined;\n }\n\n asString(format, obj) {\n const result = []\n\n for (const tag of format.sorted) {\n if (DateVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.calendar[tag])\n }\n if (SemanticVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.semantic[tag])\n }\n if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) {\n result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag])\n }\n }\n\n return result\n .join(this.seperator)\n .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator)\n }\n\n parseVersion(version, format, levels) {\n const map = {\n isCalendarLeading: format.isCalendarLeading,\n isInitialVersion: !version,\n versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version),\n sorted: {},\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n let startIndex=0, endIndex=0\n for (const tag of format.sorted) {\n endIndex = version.indexOf(this.seperator, startIndex+1)\n if (endIndex === -1) endIndex = undefined\n\n let value = version.slice(startIndex, endIndex)\n\n if (value.indexOf(ModifierVersion.seperator) !== -1) {\n endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1)\n value = version.slice(startIndex, endIndex)\n }\n\n if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) {\n if (value.toUpperCase() != tag) value = '-1'\n else value = version.slice(startIndex + value.length + 1)\n }\n\n if (isNaN(startIndex)) {\n value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'\n }\n\n if (value == '') {\n value = '0'\n }\n\n map.sorted[tag] = value\n if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value\n if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value\n if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value\n\n startIndex = endIndex + 1\n }\n\n return map\n }\n\n validateFormat(format, levels) {\n const result = {\n sorted: [],\n calendar: [],\n semantic: [],\n modifier: []\n }\n\n const tags = format.toUpperCase().split(this.seperator)\n\n for (const tag of tags) {\n if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag)\n else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag)\n else throw new Error(`[CALVER]: Invalid format tag \"${tag}\".`)\n\n result.sorted.push(tag)\n }\n\n for (const level of levels) {\n if (ModifierVersion.tags.indexOf(level) !== -1) {\n result.modifier.push(level)\n result.sorted.push(level)\n }\n }\n\n result.isCalendarLeading = DateVersion.tags.indexOf(result.sorted[0]) !== -1\n\n return result\n }\n\n validateLevels(levels) {\n const result = []\n const arr = levels.split('.')\n\n for (const level of arr) {\n const formatted = level.toUpperCase()\n if (this.levels.indexOf(formatted) !== -1) {\n result.push(formatted)\n }\n else {\n throw new Error(`[CALVER]: Invalid level \"${level}\".`)\n }\n }\n\n return result\n }\n\n set useLocalTime(value) {\n this._useLocalTime = value\n }\n}\n\nexport default new Calver()\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../../../src/DateVersion.js","../../../src/SemanticVersion.js","../../../src/ModifierVersion.js","../../../src/UtcDate.js","../../../src/LocalDate.js","../../../src/Version.js","../../../src/index.js"],"sourcesContent":["export default class DateVersion {\n static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion, date) {\n this['YYYY'] = null\n this['YY'] = null\n this['0Y'] = null\n this['MM'] = null\n this['0M'] = null\n this['WW'] = null\n this['0W'] = null\n this['DD'] = null\n this['0D'] = null\n\n this.hasChanged = false\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n this.date = date\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Calendar tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const prevValue = this.asString()\n\n const yearstr = this.date.getFullYear().toString()\n this['YYYY'] = yearstr\n this['YY'] = parseInt(yearstr.slice(2)).toString()\n this['0Y'] = this['YY'].padStart(2, '0')\n\n const monthstr = (this.date.getMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.date.getWeek().toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n const newValue = this.asString()\n\n this.hasChanged = prevValue != newValue\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n\n switch (prop) {\n case 'YYYY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 4\n break;\n\n case 'YY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 1 || v.length === 2 || v.length === 3\n break;\n\n case '0Y':\n if ((v.length == 2 || v.length == 3) && v.slice(0, 1) == '0') return false\n return v.length === 2 || v.length === 3\n break;\n\n case 'MM':\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(Number(v)) !== -1\n break;\n\n case '0M':\n return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n .indexOf(v) !== -1\n break;\n\n case 'WW':\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case '0W':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case 'DD':\n return Number(v) >= 1 && Number(v) <= 31\n break;\n\n case '0D':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 31\n break;\n }\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Semantic tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n reset() {\n this.props.map(prop => this[prop] = 0)\n }\n\n inc(level) {\n if (this.props.indexOf(level) === -1) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n if (level == 'MAJOR') {\n this.MAJOR = (parseInt(this.MAJOR) + 1).toString()\n if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n \n if (level == 'MINOR') {\n this.MINOR = (parseInt(this.MINOR) + 1).toString()\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n\n if (level == 'PATCH') {\n this.PATCH = (parseInt(this.PATCH) + 1).toString()\n }\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n return true\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class ModifierVersion {\n static seperator = '-'\n static tags = ['DEV', 'ALPHA', 'BETA', 'RC']\n\n reDigits = /[^0-9\\-]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.prop = null\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Modifier tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this.prop = prop\n this[prop] = obj[prop]\n }\n }\n\n inc(level) {\n if (level != this.prop) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n this[this.prop] = (parseInt(this[this.prop]) + 1).toString()\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n if (v.indexOf('-') !== -1 && v != '-1') return false\n return true\n }\n\n asObject() {\n const result = {}\n result[this.prop] = this[this.prop]\n return result\n }\n\n asString() {\n return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}`\n }\n}\n","export default class UtcDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getUTCFullYear()\n }\n\n getMonth() {\n return this.date.getUTCMonth()\n }\n\n getWeek() {\n return this.getUTCWeek()\n }\n\n getDate() {\n return this.date.getUTCDate()\n }\n\n getUTCWeek() {\n const d = new Date(\n Date.UTC(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n );\n const daynum = d.getUTCDay() || 7\n\n d.setUTCDate(d.getUTCDate() + 4 - daynum)\n\n const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n","export default class LocalDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getFullYear()\n }\n\n getMonth() {\n return this.date.getMonth()\n }\n\n getWeek() {\n return this.getWeek()\n }\n\n getDate() {\n return this.date.getDate()\n }\n\n getWeek() {\n const d = new Date(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n const daynum = d.getDay() || 7\n\n d.setDate(d.getDate() + 4 - daynum)\n\n const yearstart = new Date(d.getFullYear(), 0, 1)\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator, date) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.isInitialVersion = version.isInitialVersion\n this.isCalendarLeading = version.isCalendarLeading\n this.datever = null\n this.semanticver = null\n this.modifierver = null\n this.date = date\n\n this.parse(version)\n }\n\n parse(version) {\n if (Object.keys(version.calendar).length > 0) {\n this.datever = new DateVersion(version.calendar, this.seperator, this.isInitialVersion, this.date)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator, this.isInitialVersion)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator, this.isInitialVersion)\n }\n }\n\n inc(levels) {\n const l = levels[0]\n\n const removeModifier = levels.length === 1 \n && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 \n && this.versionStringHasModifier\n if (removeModifier) {\n this.modifierver = null\n\n return this\n }\n\n if (l == 'CALENDAR') this.datever.inc(l)\n if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l)\n if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l)\n\n if (levels.length === 1) {\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (levels.length === 2) {\n const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && ModifierVersion.tags.indexOf(l) === -1) {\n this.modifierver.inc(l2)\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else {\n if (!this.versionStringHasModifier) this.semanticver.inc(l2)\n }\n }\n else {\n throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\n }\n }\n else if (levels.length === 3) {\n const l2 = levels[1]\n const l3 = levels[2]\n\n if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else {\n if (!this.versionStringHasModifier) this.semanticver.inc(l2)\n }\n }\n\n if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) {\n this.modifierver.inc(l3)\n }\n else {\n throw new Error(`The third tag of the level must be a modifier tag. You specified \"${l3}\".`)\n }\n }\n\n return this\n }\n\n asObject() {\n const result = {\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n if (this.datever) result.calendar = this.datever.asObject()\n if (this.semanticver) result.semantic = this.semanticver.asObject()\n if (this.modifierver) result.modifier = this.modifierver.asObject()\n\n return result\n }\n}\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\nimport UtcDate from './UtcDate.js'\nimport LocalDate from './LocalDate.js'\nimport Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n this._useLocalTime = false\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n const parsedVersion = this.parseVersion(version, format, levels)\n const date = this._useLocalTime ? new LocalDate() : new UtcDate()\n\n const obj = (new Version(parsedVersion, this.seperator, date)).inc(levels).asObject()\n\n const result = this.asString(format, obj)\n\n if (version == result) {\n throw new Error('No change happened in the version.')\n }\n\n return result\n }\n\n isValid(format, version) {\n if (!version) return false\n\n try {\n format = this.validateFormat(format, [])\n version = this.parseVersion(version, format, [])\n\n new Version(version, this.seperator)\n\n return true\n } catch (e) {\n return false\n }\n }\n\n getTagType(tag) {\n tag = tag.toUpperCase()\n\n if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar'\n if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic'\n if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier'\n \n return undefined;\n }\n\n asString(format, obj) {\n const result = []\n\n for (const tag of format.sorted) {\n if (DateVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.calendar[tag])\n }\n if (SemanticVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.semantic[tag])\n }\n if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) {\n result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag])\n }\n }\n\n return result\n .join(this.seperator)\n .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator)\n }\n\n parseVersion(version, format, levels) {\n const map = {\n isCalendarLeading: format.isCalendarLeading,\n isInitialVersion: !version,\n versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version),\n sorted: {},\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n let startIndex=0, endIndex=0\n for (const tag of format.sorted) {\n endIndex = version.indexOf(this.seperator, startIndex+1)\n if (endIndex === -1) endIndex = undefined\n\n let value = version.slice(startIndex, endIndex)\n\n if (value.indexOf(ModifierVersion.seperator) !== -1) {\n endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1)\n value = version.slice(startIndex, endIndex)\n }\n\n if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) {\n if (value.toUpperCase() != tag) value = '-1'\n else value = version.slice(startIndex + value.length + 1)\n }\n\n if (isNaN(startIndex)) {\n value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'\n }\n\n if (value == '') {\n value = '0'\n }\n\n map.sorted[tag] = value\n if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value\n if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value\n if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value\n\n startIndex = endIndex + 1\n }\n\n return map\n }\n\n validateFormat(format, levels) {\n const result = {\n sorted: [],\n calendar: [],\n semantic: [],\n modifier: []\n }\n\n const tags = format.toUpperCase().split(this.seperator)\n\n for (const tag of tags) {\n if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag)\n else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag)\n else throw new Error(`[CALVER]: Invalid format tag \"${tag}\".`)\n\n result.sorted.push(tag)\n }\n\n for (const level of levels) {\n if (ModifierVersion.tags.indexOf(level) !== -1) {\n result.modifier.push(level)\n result.sorted.push(level)\n }\n }\n\n result.isCalendarLeading = DateVersion.tags.indexOf(result.sorted[0]) !== -1\n\n return result\n }\n\n validateLevels(levels) {\n const result = []\n const arr = levels.split('.')\n\n for (const level of arr) {\n const formatted = level.toUpperCase()\n if (this.levels.indexOf(formatted) !== -1) {\n result.push(formatted)\n }\n else {\n throw new Error(`[CALVER]: Invalid level \"${level}\".`)\n }\n }\n\n return result\n }\n\n set useLocalTime(value) {\n this._useLocalTime = value\n }\n}\n\nexport default new Calver()\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/node/lts/cjs/index.js b/dist/node/lts/cjs/index.js index bbfffe2..a1d9d6d 100644 --- a/dist/node/lts/cjs/index.js +++ b/dist/node/lts/cjs/index.js @@ -292,7 +292,9 @@ class Version { this.semanticver.reset(); } } else if (SemanticVersion.tags.indexOf(l2) !== -1) { - if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset();else this.semanticver.inc(l2); + if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset();else { + if (!this.versionStringHasModifier) this.semanticver.inc(l2); + } } else { throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified "${l2}" as the second tag and "${l}" as the first tag.`); } @@ -300,7 +302,9 @@ class Version { const l2 = levels[1]; const l3 = levels[2]; if (SemanticVersion.tags.indexOf(l2) !== -1) { - if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset();else this.semanticver.inc(l2); + if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset();else { + if (!this.versionStringHasModifier) this.semanticver.inc(l2); + } } if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) { this.modifierver.inc(l3); diff --git a/dist/node/lts/cjs/index.js.map b/dist/node/lts/cjs/index.js.map index 4ce9e24..30d613c 100644 --- a/dist/node/lts/cjs/index.js.map +++ b/dist/node/lts/cjs/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../../../src/DateVersion.js","../../../../src/SemanticVersion.js","../../../../src/ModifierVersion.js","../../../../src/UtcDate.js","../../../../src/LocalDate.js","../../../../src/Version.js","../../../../src/index.js"],"sourcesContent":["export default class DateVersion {\n static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion, date) {\n this['YYYY'] = null\n this['YY'] = null\n this['0Y'] = null\n this['MM'] = null\n this['0M'] = null\n this['WW'] = null\n this['0W'] = null\n this['DD'] = null\n this['0D'] = null\n\n this.hasChanged = false\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n this.date = date\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Calendar tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const prevValue = this.asString()\n\n const yearstr = this.date.getFullYear().toString()\n this['YYYY'] = yearstr\n this['YY'] = parseInt(yearstr.slice(2)).toString()\n this['0Y'] = this['YY'].padStart(2, '0')\n\n const monthstr = (this.date.getMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.date.getWeek().toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n const newValue = this.asString()\n\n this.hasChanged = prevValue != newValue\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n\n switch (prop) {\n case 'YYYY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 4\n break;\n\n case 'YY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 1 || v.length === 2 || v.length === 3\n break;\n\n case '0Y':\n if ((v.length == 2 || v.length == 3) && v.slice(0, 1) == '0') return false\n return v.length === 2 || v.length === 3\n break;\n\n case 'MM':\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(Number(v)) !== -1\n break;\n\n case '0M':\n return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n .indexOf(v) !== -1\n break;\n\n case 'WW':\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case '0W':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case 'DD':\n return Number(v) >= 1 && Number(v) <= 31\n break;\n\n case '0D':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 31\n break;\n }\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Semantic tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n reset() {\n this.props.map(prop => this[prop] = 0)\n }\n\n inc(level) {\n if (this.props.indexOf(level) === -1) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n if (level == 'MAJOR') {\n this.MAJOR = (parseInt(this.MAJOR) + 1).toString()\n if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n \n if (level == 'MINOR') {\n this.MINOR = (parseInt(this.MINOR) + 1).toString()\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n\n if (level == 'PATCH') {\n this.PATCH = (parseInt(this.PATCH) + 1).toString()\n }\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n return true\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class ModifierVersion {\n static seperator = '-'\n static tags = ['DEV', 'ALPHA', 'BETA', 'RC']\n\n reDigits = /[^0-9\\-]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.prop = null\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Modifier tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this.prop = prop\n this[prop] = obj[prop]\n }\n }\n\n inc(level) {\n if (level != this.prop) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n this[this.prop] = (parseInt(this[this.prop]) + 1).toString()\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n if (v.indexOf('-') !== -1 && v != '-1') return false\n return true\n }\n\n asObject() {\n const result = {}\n result[this.prop] = this[this.prop]\n return result\n }\n\n asString() {\n return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}`\n }\n}\n","export default class UtcDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getUTCFullYear()\n }\n\n getMonth() {\n return this.date.getUTCMonth()\n }\n\n getWeek() {\n return this.getUTCWeek()\n }\n\n getDate() {\n return this.date.getUTCDate()\n }\n\n getUTCWeek() {\n const d = new Date(\n Date.UTC(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n );\n const daynum = d.getUTCDay() || 7\n\n d.setUTCDate(d.getUTCDate() + 4 - daynum)\n\n const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n","export default class LocalDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getFullYear()\n }\n\n getMonth() {\n return this.date.getMonth()\n }\n\n getWeek() {\n return this.getWeek()\n }\n\n getDate() {\n return this.date.getDate()\n }\n\n getWeek() {\n const d = new Date(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n const daynum = d.getDay() || 7\n\n d.setDate(d.getDate() + 4 - daynum)\n\n const yearstart = new Date(d.getFullYear(), 0, 1)\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator, date) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.isInitialVersion = version.isInitialVersion\n this.isCalendarLeading = version.isCalendarLeading\n this.datever = null\n this.semanticver = null\n this.modifierver = null\n this.date = date\n\n this.parse(version)\n }\n\n parse(version) {\n if (Object.keys(version.calendar).length > 0) {\n this.datever = new DateVersion(version.calendar, this.seperator, this.isInitialVersion, this.date)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator, this.isInitialVersion)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator, this.isInitialVersion)\n }\n }\n\n inc(levels) {\n const l = levels[0]\n\n const removeModifier = levels.length === 1 \n && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 \n && this.versionStringHasModifier\n if (removeModifier) {\n this.modifierver = null\n\n return this\n }\n\n if (l == 'CALENDAR') this.datever.inc(l)\n if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l)\n if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l)\n\n if (levels.length === 1) {\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (levels.length === 2) {\n const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && ModifierVersion.tags.indexOf(l) === -1) {\n this.modifierver.inc(l2)\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else this.semanticver.inc(l2)\n }\n else {\n throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\n }\n }\n else if (levels.length === 3) {\n const l2 = levels[1]\n const l3 = levels[2]\n\n if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else this.semanticver.inc(l2)\n }\n\n if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) {\n this.modifierver.inc(l3)\n }\n else {\n throw new Error(`The third tag of the level must be a modifier tag. You specified \"${l3}\".`)\n }\n }\n\n return this\n }\n\n asObject() {\n const result = {\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n if (this.datever) result.calendar = this.datever.asObject()\n if (this.semanticver) result.semantic = this.semanticver.asObject()\n if (this.modifierver) result.modifier = this.modifierver.asObject()\n\n return result\n }\n}\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\nimport UtcDate from './UtcDate.js'\nimport LocalDate from './LocalDate.js'\nimport Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n this._useLocalTime = false\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n const parsedVersion = this.parseVersion(version, format, levels)\n const date = this._useLocalTime ? new LocalDate() : new UtcDate()\n\n const obj = (new Version(parsedVersion, this.seperator, date)).inc(levels).asObject()\n\n const result = this.asString(format, obj)\n\n if (version == result) {\n throw new Error('No change happened in the version.')\n }\n\n return result\n }\n\n isValid(format, version) {\n if (!version) return false\n\n try {\n format = this.validateFormat(format, [])\n version = this.parseVersion(version, format, [])\n\n new Version(version, this.seperator)\n\n return true\n } catch (e) {\n return false\n }\n }\n\n getTagType(tag) {\n tag = tag.toUpperCase()\n\n if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar'\n if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic'\n if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier'\n \n return undefined;\n }\n\n asString(format, obj) {\n const result = []\n\n for (const tag of format.sorted) {\n if (DateVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.calendar[tag])\n }\n if (SemanticVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.semantic[tag])\n }\n if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) {\n result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag])\n }\n }\n\n return result\n .join(this.seperator)\n .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator)\n }\n\n parseVersion(version, format, levels) {\n const map = {\n isCalendarLeading: format.isCalendarLeading,\n isInitialVersion: !version,\n versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version),\n sorted: {},\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n let startIndex=0, endIndex=0\n for (const tag of format.sorted) {\n endIndex = version.indexOf(this.seperator, startIndex+1)\n if (endIndex === -1) endIndex = undefined\n\n let value = version.slice(startIndex, endIndex)\n\n if (value.indexOf(ModifierVersion.seperator) !== -1) {\n endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1)\n value = version.slice(startIndex, endIndex)\n }\n\n if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) {\n if (value.toUpperCase() != tag) value = '-1'\n else value = version.slice(startIndex + value.length + 1)\n }\n\n if (isNaN(startIndex)) {\n value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'\n }\n\n if (value == '') {\n value = '0'\n }\n\n map.sorted[tag] = value\n if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value\n if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value\n if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value\n\n startIndex = endIndex + 1\n }\n\n return map\n }\n\n validateFormat(format, levels) {\n const result = {\n sorted: [],\n calendar: [],\n semantic: [],\n modifier: []\n }\n\n const tags = format.toUpperCase().split(this.seperator)\n\n for (const tag of tags) {\n if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag)\n else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag)\n else throw new Error(`[CALVER]: Invalid format tag \"${tag}\".`)\n\n result.sorted.push(tag)\n }\n\n for (const level of levels) {\n if (ModifierVersion.tags.indexOf(level) !== -1) {\n result.modifier.push(level)\n result.sorted.push(level)\n }\n }\n\n result.isCalendarLeading = DateVersion.tags.indexOf(result.sorted[0]) !== -1\n\n return result\n }\n\n validateLevels(levels) {\n const result = []\n const arr = levels.split('.')\n\n for (const level of arr) {\n const formatted = level.toUpperCase()\n if (this.levels.indexOf(formatted) !== -1) {\n result.push(formatted)\n }\n else {\n throw new Error(`[CALVER]: Invalid level \"${level}\".`)\n }\n }\n\n return result\n }\n\n set useLocalTime(value) {\n this._useLocalTime = value\n }\n}\n\nexport default new Calver()\n"],"names":["DateVersion","tags","reDigits","constructor","obj","parentSeperator","isInitialVersion","date","hasChanged","props","parse","prop","isValid","Error","push","inc","level","prevValue","asString","yearstr","getFullYear","toString","parseInt","slice","padStart","monthstr","getMonth","weekstr","getWeek","daystr","getDate","newValue","v","test","length","indexOf","Number","asObject","reduce","memo","result","tag","join","SemanticVersion","MAJOR","MINOR","PATCH","reset","map","ModifierVersion","seperator","DEV","ALPHA","BETA","RC","UtcDate","Date","now","getUTCFullYear","getUTCMonth","getUTCWeek","getUTCDate","d","UTC","daynum","getUTCDay","setUTCDate","yearstart","Math","ceil","LocalDate","getDay","setDate","Version","version","versionStringHasModifier","isCalendarLeading","datever","semanticver","modifierver","Object","keys","calendar","semantic","modifier","levels","l","removeModifier","l2","l3","includes","Calver","_useLocalTime","format","validateLevels","validateFormat","parsedVersion","parseVersion","e","getTagType","toUpperCase","undefined","sorted","toLowerCase","replace","startIndex","endIndex","value","isNaN","split","arr","formatted","useLocalTime"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../../../../src/DateVersion.js","../../../../src/SemanticVersion.js","../../../../src/ModifierVersion.js","../../../../src/UtcDate.js","../../../../src/LocalDate.js","../../../../src/Version.js","../../../../src/index.js"],"sourcesContent":["export default class DateVersion {\n static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion, date) {\n this['YYYY'] = null\n this['YY'] = null\n this['0Y'] = null\n this['MM'] = null\n this['0M'] = null\n this['WW'] = null\n this['0W'] = null\n this['DD'] = null\n this['0D'] = null\n\n this.hasChanged = false\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n this.date = date\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Calendar tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const prevValue = this.asString()\n\n const yearstr = this.date.getFullYear().toString()\n this['YYYY'] = yearstr\n this['YY'] = parseInt(yearstr.slice(2)).toString()\n this['0Y'] = this['YY'].padStart(2, '0')\n\n const monthstr = (this.date.getMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.date.getWeek().toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n const newValue = this.asString()\n\n this.hasChanged = prevValue != newValue\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n\n switch (prop) {\n case 'YYYY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 4\n break;\n\n case 'YY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 1 || v.length === 2 || v.length === 3\n break;\n\n case '0Y':\n if ((v.length == 2 || v.length == 3) && v.slice(0, 1) == '0') return false\n return v.length === 2 || v.length === 3\n break;\n\n case 'MM':\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(Number(v)) !== -1\n break;\n\n case '0M':\n return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n .indexOf(v) !== -1\n break;\n\n case 'WW':\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case '0W':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case 'DD':\n return Number(v) >= 1 && Number(v) <= 31\n break;\n\n case '0D':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 31\n break;\n }\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Semantic tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n reset() {\n this.props.map(prop => this[prop] = 0)\n }\n\n inc(level) {\n if (this.props.indexOf(level) === -1) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n if (level == 'MAJOR') {\n this.MAJOR = (parseInt(this.MAJOR) + 1).toString()\n if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n \n if (level == 'MINOR') {\n this.MINOR = (parseInt(this.MINOR) + 1).toString()\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n\n if (level == 'PATCH') {\n this.PATCH = (parseInt(this.PATCH) + 1).toString()\n }\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n return true\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class ModifierVersion {\n static seperator = '-'\n static tags = ['DEV', 'ALPHA', 'BETA', 'RC']\n\n reDigits = /[^0-9\\-]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.prop = null\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Modifier tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this.prop = prop\n this[prop] = obj[prop]\n }\n }\n\n inc(level) {\n if (level != this.prop) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n this[this.prop] = (parseInt(this[this.prop]) + 1).toString()\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n if (v.indexOf('-') !== -1 && v != '-1') return false\n return true\n }\n\n asObject() {\n const result = {}\n result[this.prop] = this[this.prop]\n return result\n }\n\n asString() {\n return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}`\n }\n}\n","export default class UtcDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getUTCFullYear()\n }\n\n getMonth() {\n return this.date.getUTCMonth()\n }\n\n getWeek() {\n return this.getUTCWeek()\n }\n\n getDate() {\n return this.date.getUTCDate()\n }\n\n getUTCWeek() {\n const d = new Date(\n Date.UTC(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n );\n const daynum = d.getUTCDay() || 7\n\n d.setUTCDate(d.getUTCDate() + 4 - daynum)\n\n const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n","export default class LocalDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getFullYear()\n }\n\n getMonth() {\n return this.date.getMonth()\n }\n\n getWeek() {\n return this.getWeek()\n }\n\n getDate() {\n return this.date.getDate()\n }\n\n getWeek() {\n const d = new Date(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n const daynum = d.getDay() || 7\n\n d.setDate(d.getDate() + 4 - daynum)\n\n const yearstart = new Date(d.getFullYear(), 0, 1)\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator, date) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.isInitialVersion = version.isInitialVersion\n this.isCalendarLeading = version.isCalendarLeading\n this.datever = null\n this.semanticver = null\n this.modifierver = null\n this.date = date\n\n this.parse(version)\n }\n\n parse(version) {\n if (Object.keys(version.calendar).length > 0) {\n this.datever = new DateVersion(version.calendar, this.seperator, this.isInitialVersion, this.date)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator, this.isInitialVersion)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator, this.isInitialVersion)\n }\n }\n\n inc(levels) {\n const l = levels[0]\n\n const removeModifier = levels.length === 1 \n && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 \n && this.versionStringHasModifier\n if (removeModifier) {\n this.modifierver = null\n\n return this\n }\n\n if (l == 'CALENDAR') this.datever.inc(l)\n if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l)\n if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l)\n\n if (levels.length === 1) {\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (levels.length === 2) {\n const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && ModifierVersion.tags.indexOf(l) === -1) {\n this.modifierver.inc(l2)\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else {\n if (!this.versionStringHasModifier) this.semanticver.inc(l2)\n }\n }\n else {\n throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\n }\n }\n else if (levels.length === 3) {\n const l2 = levels[1]\n const l3 = levels[2]\n\n if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else {\n if (!this.versionStringHasModifier) this.semanticver.inc(l2)\n }\n }\n\n if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) {\n this.modifierver.inc(l3)\n }\n else {\n throw new Error(`The third tag of the level must be a modifier tag. You specified \"${l3}\".`)\n }\n }\n\n return this\n }\n\n asObject() {\n const result = {\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n if (this.datever) result.calendar = this.datever.asObject()\n if (this.semanticver) result.semantic = this.semanticver.asObject()\n if (this.modifierver) result.modifier = this.modifierver.asObject()\n\n return result\n }\n}\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\nimport UtcDate from './UtcDate.js'\nimport LocalDate from './LocalDate.js'\nimport Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n this._useLocalTime = false\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n const parsedVersion = this.parseVersion(version, format, levels)\n const date = this._useLocalTime ? new LocalDate() : new UtcDate()\n\n const obj = (new Version(parsedVersion, this.seperator, date)).inc(levels).asObject()\n\n const result = this.asString(format, obj)\n\n if (version == result) {\n throw new Error('No change happened in the version.')\n }\n\n return result\n }\n\n isValid(format, version) {\n if (!version) return false\n\n try {\n format = this.validateFormat(format, [])\n version = this.parseVersion(version, format, [])\n\n new Version(version, this.seperator)\n\n return true\n } catch (e) {\n return false\n }\n }\n\n getTagType(tag) {\n tag = tag.toUpperCase()\n\n if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar'\n if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic'\n if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier'\n \n return undefined;\n }\n\n asString(format, obj) {\n const result = []\n\n for (const tag of format.sorted) {\n if (DateVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.calendar[tag])\n }\n if (SemanticVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.semantic[tag])\n }\n if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) {\n result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag])\n }\n }\n\n return result\n .join(this.seperator)\n .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator)\n }\n\n parseVersion(version, format, levels) {\n const map = {\n isCalendarLeading: format.isCalendarLeading,\n isInitialVersion: !version,\n versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version),\n sorted: {},\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n let startIndex=0, endIndex=0\n for (const tag of format.sorted) {\n endIndex = version.indexOf(this.seperator, startIndex+1)\n if (endIndex === -1) endIndex = undefined\n\n let value = version.slice(startIndex, endIndex)\n\n if (value.indexOf(ModifierVersion.seperator) !== -1) {\n endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1)\n value = version.slice(startIndex, endIndex)\n }\n\n if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) {\n if (value.toUpperCase() != tag) value = '-1'\n else value = version.slice(startIndex + value.length + 1)\n }\n\n if (isNaN(startIndex)) {\n value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'\n }\n\n if (value == '') {\n value = '0'\n }\n\n map.sorted[tag] = value\n if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value\n if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value\n if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value\n\n startIndex = endIndex + 1\n }\n\n return map\n }\n\n validateFormat(format, levels) {\n const result = {\n sorted: [],\n calendar: [],\n semantic: [],\n modifier: []\n }\n\n const tags = format.toUpperCase().split(this.seperator)\n\n for (const tag of tags) {\n if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag)\n else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag)\n else throw new Error(`[CALVER]: Invalid format tag \"${tag}\".`)\n\n result.sorted.push(tag)\n }\n\n for (const level of levels) {\n if (ModifierVersion.tags.indexOf(level) !== -1) {\n result.modifier.push(level)\n result.sorted.push(level)\n }\n }\n\n result.isCalendarLeading = DateVersion.tags.indexOf(result.sorted[0]) !== -1\n\n return result\n }\n\n validateLevels(levels) {\n const result = []\n const arr = levels.split('.')\n\n for (const level of arr) {\n const formatted = level.toUpperCase()\n if (this.levels.indexOf(formatted) !== -1) {\n result.push(formatted)\n }\n else {\n throw new Error(`[CALVER]: Invalid level \"${level}\".`)\n }\n }\n\n return result\n }\n\n set useLocalTime(value) {\n this._useLocalTime = value\n }\n}\n\nexport default new Calver()\n"],"names":["DateVersion","tags","reDigits","constructor","obj","parentSeperator","isInitialVersion","date","hasChanged","props","parse","prop","isValid","Error","push","inc","level","prevValue","asString","yearstr","getFullYear","toString","parseInt","slice","padStart","monthstr","getMonth","weekstr","getWeek","daystr","getDate","newValue","v","test","length","indexOf","Number","asObject","reduce","memo","result","tag","join","SemanticVersion","MAJOR","MINOR","PATCH","reset","map","ModifierVersion","seperator","DEV","ALPHA","BETA","RC","UtcDate","Date","now","getUTCFullYear","getUTCMonth","getUTCWeek","getUTCDate","d","UTC","daynum","getUTCDay","setUTCDate","yearstart","Math","ceil","LocalDate","getDay","setDate","Version","version","versionStringHasModifier","isCalendarLeading","datever","semanticver","modifierver","Object","keys","calendar","semantic","modifier","levels","l","removeModifier","l2","l3","includes","Calver","_useLocalTime","format","validateLevels","validateFormat","parsedVersion","parseVersion","e","getTagType","toUpperCase","undefined","sorted","toLowerCase","replace","startIndex","endIndex","value","isNaN","split","arr","formatted","useLocalTime"],"mappings":"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"} \ No newline at end of file diff --git a/dist/node/lts/es/index.js b/dist/node/lts/es/index.js index 519aff7..9e366e0 100644 --- a/dist/node/lts/es/index.js +++ b/dist/node/lts/es/index.js @@ -290,7 +290,9 @@ class Version { this.semanticver.reset(); } } else if (SemanticVersion.tags.indexOf(l2) !== -1) { - if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset();else this.semanticver.inc(l2); + if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset();else { + if (!this.versionStringHasModifier) this.semanticver.inc(l2); + } } else { throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified "${l2}" as the second tag and "${l}" as the first tag.`); } @@ -298,7 +300,9 @@ class Version { const l2 = levels[1]; const l3 = levels[2]; if (SemanticVersion.tags.indexOf(l2) !== -1) { - if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset();else this.semanticver.inc(l2); + if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset();else { + if (!this.versionStringHasModifier) this.semanticver.inc(l2); + } } if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) { this.modifierver.inc(l3); diff --git a/dist/node/lts/es/index.js.map b/dist/node/lts/es/index.js.map index f541b10..cc82dd3 100644 --- a/dist/node/lts/es/index.js.map +++ b/dist/node/lts/es/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../../../src/DateVersion.js","../../../../src/SemanticVersion.js","../../../../src/ModifierVersion.js","../../../../src/UtcDate.js","../../../../src/LocalDate.js","../../../../src/Version.js","../../../../src/index.js"],"sourcesContent":["export default class DateVersion {\n static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion, date) {\n this['YYYY'] = null\n this['YY'] = null\n this['0Y'] = null\n this['MM'] = null\n this['0M'] = null\n this['WW'] = null\n this['0W'] = null\n this['DD'] = null\n this['0D'] = null\n\n this.hasChanged = false\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n this.date = date\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Calendar tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const prevValue = this.asString()\n\n const yearstr = this.date.getFullYear().toString()\n this['YYYY'] = yearstr\n this['YY'] = parseInt(yearstr.slice(2)).toString()\n this['0Y'] = this['YY'].padStart(2, '0')\n\n const monthstr = (this.date.getMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.date.getWeek().toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n const newValue = this.asString()\n\n this.hasChanged = prevValue != newValue\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n\n switch (prop) {\n case 'YYYY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 4\n break;\n\n case 'YY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 1 || v.length === 2 || v.length === 3\n break;\n\n case '0Y':\n if ((v.length == 2 || v.length == 3) && v.slice(0, 1) == '0') return false\n return v.length === 2 || v.length === 3\n break;\n\n case 'MM':\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(Number(v)) !== -1\n break;\n\n case '0M':\n return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n .indexOf(v) !== -1\n break;\n\n case 'WW':\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case '0W':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case 'DD':\n return Number(v) >= 1 && Number(v) <= 31\n break;\n\n case '0D':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 31\n break;\n }\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Semantic tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n reset() {\n this.props.map(prop => this[prop] = 0)\n }\n\n inc(level) {\n if (this.props.indexOf(level) === -1) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n if (level == 'MAJOR') {\n this.MAJOR = (parseInt(this.MAJOR) + 1).toString()\n if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n \n if (level == 'MINOR') {\n this.MINOR = (parseInt(this.MINOR) + 1).toString()\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n\n if (level == 'PATCH') {\n this.PATCH = (parseInt(this.PATCH) + 1).toString()\n }\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n return true\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class ModifierVersion {\n static seperator = '-'\n static tags = ['DEV', 'ALPHA', 'BETA', 'RC']\n\n reDigits = /[^0-9\\-]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.prop = null\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Modifier tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this.prop = prop\n this[prop] = obj[prop]\n }\n }\n\n inc(level) {\n if (level != this.prop) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n this[this.prop] = (parseInt(this[this.prop]) + 1).toString()\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n if (v.indexOf('-') !== -1 && v != '-1') return false\n return true\n }\n\n asObject() {\n const result = {}\n result[this.prop] = this[this.prop]\n return result\n }\n\n asString() {\n return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}`\n }\n}\n","export default class UtcDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getUTCFullYear()\n }\n\n getMonth() {\n return this.date.getUTCMonth()\n }\n\n getWeek() {\n return this.getUTCWeek()\n }\n\n getDate() {\n return this.date.getUTCDate()\n }\n\n getUTCWeek() {\n const d = new Date(\n Date.UTC(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n );\n const daynum = d.getUTCDay() || 7\n\n d.setUTCDate(d.getUTCDate() + 4 - daynum)\n\n const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n","export default class LocalDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getFullYear()\n }\n\n getMonth() {\n return this.date.getMonth()\n }\n\n getWeek() {\n return this.getWeek()\n }\n\n getDate() {\n return this.date.getDate()\n }\n\n getWeek() {\n const d = new Date(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n const daynum = d.getDay() || 7\n\n d.setDate(d.getDate() + 4 - daynum)\n\n const yearstart = new Date(d.getFullYear(), 0, 1)\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator, date) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.isInitialVersion = version.isInitialVersion\n this.isCalendarLeading = version.isCalendarLeading\n this.datever = null\n this.semanticver = null\n this.modifierver = null\n this.date = date\n\n this.parse(version)\n }\n\n parse(version) {\n if (Object.keys(version.calendar).length > 0) {\n this.datever = new DateVersion(version.calendar, this.seperator, this.isInitialVersion, this.date)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator, this.isInitialVersion)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator, this.isInitialVersion)\n }\n }\n\n inc(levels) {\n const l = levels[0]\n\n const removeModifier = levels.length === 1 \n && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 \n && this.versionStringHasModifier\n if (removeModifier) {\n this.modifierver = null\n\n return this\n }\n\n if (l == 'CALENDAR') this.datever.inc(l)\n if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l)\n if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l)\n\n if (levels.length === 1) {\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (levels.length === 2) {\n const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && ModifierVersion.tags.indexOf(l) === -1) {\n this.modifierver.inc(l2)\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else this.semanticver.inc(l2)\n }\n else {\n throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\n }\n }\n else if (levels.length === 3) {\n const l2 = levels[1]\n const l3 = levels[2]\n\n if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else this.semanticver.inc(l2)\n }\n\n if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) {\n this.modifierver.inc(l3)\n }\n else {\n throw new Error(`The third tag of the level must be a modifier tag. You specified \"${l3}\".`)\n }\n }\n\n return this\n }\n\n asObject() {\n const result = {\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n if (this.datever) result.calendar = this.datever.asObject()\n if (this.semanticver) result.semantic = this.semanticver.asObject()\n if (this.modifierver) result.modifier = this.modifierver.asObject()\n\n return result\n }\n}\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\nimport UtcDate from './UtcDate.js'\nimport LocalDate from './LocalDate.js'\nimport Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n this._useLocalTime = false\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n const parsedVersion = this.parseVersion(version, format, levels)\n const date = this._useLocalTime ? new LocalDate() : new UtcDate()\n\n const obj = (new Version(parsedVersion, this.seperator, date)).inc(levels).asObject()\n\n const result = this.asString(format, obj)\n\n if (version == result) {\n throw new Error('No change happened in the version.')\n }\n\n return result\n }\n\n isValid(format, version) {\n if (!version) return false\n\n try {\n format = this.validateFormat(format, [])\n version = this.parseVersion(version, format, [])\n\n new Version(version, this.seperator)\n\n return true\n } catch (e) {\n return false\n }\n }\n\n getTagType(tag) {\n tag = tag.toUpperCase()\n\n if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar'\n if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic'\n if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier'\n \n return undefined;\n }\n\n asString(format, obj) {\n const result = []\n\n for (const tag of format.sorted) {\n if (DateVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.calendar[tag])\n }\n if (SemanticVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.semantic[tag])\n }\n if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) {\n result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag])\n }\n }\n\n return result\n .join(this.seperator)\n .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator)\n }\n\n parseVersion(version, format, levels) {\n const map = {\n isCalendarLeading: format.isCalendarLeading,\n isInitialVersion: !version,\n versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version),\n sorted: {},\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n let startIndex=0, endIndex=0\n for (const tag of format.sorted) {\n endIndex = version.indexOf(this.seperator, startIndex+1)\n if (endIndex === -1) endIndex = undefined\n\n let value = version.slice(startIndex, endIndex)\n\n if (value.indexOf(ModifierVersion.seperator) !== -1) {\n endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1)\n value = version.slice(startIndex, endIndex)\n }\n\n if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) {\n if (value.toUpperCase() != tag) value = '-1'\n else value = version.slice(startIndex + value.length + 1)\n }\n\n if (isNaN(startIndex)) {\n value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'\n }\n\n if (value == '') {\n value = '0'\n }\n\n map.sorted[tag] = value\n if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value\n if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value\n if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value\n\n startIndex = endIndex + 1\n }\n\n return map\n }\n\n validateFormat(format, levels) {\n const result = {\n sorted: [],\n calendar: [],\n semantic: [],\n modifier: []\n }\n\n const tags = format.toUpperCase().split(this.seperator)\n\n for (const tag of tags) {\n if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag)\n else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag)\n else throw new Error(`[CALVER]: Invalid format tag \"${tag}\".`)\n\n result.sorted.push(tag)\n }\n\n for (const level of levels) {\n if (ModifierVersion.tags.indexOf(level) !== -1) {\n result.modifier.push(level)\n result.sorted.push(level)\n }\n }\n\n result.isCalendarLeading = DateVersion.tags.indexOf(result.sorted[0]) !== -1\n\n return result\n }\n\n validateLevels(levels) {\n const result = []\n const arr = levels.split('.')\n\n for (const level of arr) {\n const formatted = level.toUpperCase()\n if (this.levels.indexOf(formatted) !== -1) {\n result.push(formatted)\n }\n else {\n throw new Error(`[CALVER]: Invalid level \"${level}\".`)\n }\n }\n\n return result\n }\n\n set useLocalTime(value) {\n this._useLocalTime = value\n }\n}\n\nexport default new Calver()\n"],"names":["DateVersion","tags","reDigits","constructor","obj","parentSeperator","isInitialVersion","date","hasChanged","props","parse","prop","isValid","Error","push","inc","level","prevValue","asString","yearstr","getFullYear","toString","parseInt","slice","padStart","monthstr","getMonth","weekstr","getWeek","daystr","getDate","newValue","v","test","length","indexOf","Number","asObject","reduce","memo","result","tag","join","SemanticVersion","MAJOR","MINOR","PATCH","reset","map","ModifierVersion","seperator","DEV","ALPHA","BETA","RC","UtcDate","Date","now","getUTCFullYear","getUTCMonth","getUTCWeek","getUTCDate","d","UTC","daynum","getUTCDay","setUTCDate","yearstart","Math","ceil","LocalDate","getDay","setDate","Version","version","versionStringHasModifier","isCalendarLeading","datever","semanticver","modifierver","Object","keys","calendar","semantic","modifier","levels","l","removeModifier","l2","l3","includes","Calver","_useLocalTime","format","validateLevels","validateFormat","parsedVersion","parseVersion","e","getTagType","toUpperCase","undefined","sorted","toLowerCase","replace","startIndex","endIndex","value","isNaN","split","arr","formatted","useLocalTime"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../../../../src/DateVersion.js","../../../../src/SemanticVersion.js","../../../../src/ModifierVersion.js","../../../../src/UtcDate.js","../../../../src/LocalDate.js","../../../../src/Version.js","../../../../src/index.js"],"sourcesContent":["export default class DateVersion {\n static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion, date) {\n this['YYYY'] = null\n this['YY'] = null\n this['0Y'] = null\n this['MM'] = null\n this['0M'] = null\n this['WW'] = null\n this['0W'] = null\n this['DD'] = null\n this['0D'] = null\n\n this.hasChanged = false\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n this.date = date\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Calendar tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const prevValue = this.asString()\n\n const yearstr = this.date.getFullYear().toString()\n this['YYYY'] = yearstr\n this['YY'] = parseInt(yearstr.slice(2)).toString()\n this['0Y'] = this['YY'].padStart(2, '0')\n\n const monthstr = (this.date.getMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.date.getWeek().toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n const newValue = this.asString()\n\n this.hasChanged = prevValue != newValue\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n\n switch (prop) {\n case 'YYYY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 4\n break;\n\n case 'YY':\n if (v.slice(0, 1) == '0') return false\n return v.length === 1 || v.length === 2 || v.length === 3\n break;\n\n case '0Y':\n if ((v.length == 2 || v.length == 3) && v.slice(0, 1) == '0') return false\n return v.length === 2 || v.length === 3\n break;\n\n case 'MM':\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].indexOf(Number(v)) !== -1\n break;\n\n case '0M':\n return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n .indexOf(v) !== -1\n break;\n\n case 'WW':\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case '0W':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 52\n break;\n\n case 'DD':\n return Number(v) >= 1 && Number(v) <= 31\n break;\n\n case '0D':\n if (v.length != 2) return false\n return Number(v) >= 1 && Number(v) <= 31\n break;\n }\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n reDigits = /[^0-9]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Semantic tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n reset() {\n this.props.map(prop => this[prop] = 0)\n }\n\n inc(level) {\n if (this.props.indexOf(level) === -1) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n if (level == 'MAJOR') {\n this.MAJOR = (parseInt(this.MAJOR) + 1).toString()\n if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n \n if (level == 'MINOR') {\n this.MINOR = (parseInt(this.MINOR) + 1).toString()\n if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'\n }\n\n if (level == 'PATCH') {\n this.PATCH = (parseInt(this.PATCH) + 1).toString()\n }\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n return true\n }\n\n asObject() {\n return this.props.reduce((memo, prop) => {\n memo[prop] = this[prop]\n return memo\n }, {})\n }\n\n asString() {\n const result = []\n for (const tag of this.constructor.tags) {\n if (this.props.indexOf(tag) !== -1) result.push(this[tag])\n }\n return result.join(this.parentSeperator)\n }\n}\n","export default class ModifierVersion {\n static seperator = '-'\n static tags = ['DEV', 'ALPHA', 'BETA', 'RC']\n\n reDigits = /[^0-9\\-]/\n\n constructor(obj, parentSeperator, isInitialVersion) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\n this.isInitialVersion = isInitialVersion\n this.parentSeperator = parentSeperator\n this.prop = null\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n if (!this.isInitialVersion && !this.isValid(prop, obj[prop])) {\n throw new Error(`Modifier tag ${prop} has an invalid value \"${obj[prop]}\"`)\n }\n\n this.prop = prop\n this[prop] = obj[prop]\n }\n }\n\n inc(level) {\n if (level != this.prop) {\n throw new Error(`[CALVER]: You have requested to increment \"${level}\" but your format doesn't have it.`)\n }\n\n this[this.prop] = (parseInt(this[this.prop]) + 1).toString()\n\n return this\n }\n\n isValid(prop, v) {\n if (!v || typeof v != 'string' || this.reDigits.test(v)) return false\n if (v.indexOf('-') !== -1 && v != '-1') return false\n return true\n }\n\n asObject() {\n const result = {}\n result[this.prop] = this[this.prop]\n return result\n }\n\n asString() {\n return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}`\n }\n}\n","export default class UtcDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getUTCFullYear()\n }\n\n getMonth() {\n return this.date.getUTCMonth()\n }\n\n getWeek() {\n return this.getUTCWeek()\n }\n\n getDate() {\n return this.date.getUTCDate()\n }\n\n getUTCWeek() {\n const d = new Date(\n Date.UTC(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n );\n const daynum = d.getUTCDay() || 7\n\n d.setUTCDate(d.getUTCDate() + 4 - daynum)\n\n const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n","export default class LocalDate {\n constructor() {\n this.date = new Date(Date.now())\n }\n\n getFullYear() {\n return this.date.getFullYear()\n }\n\n getMonth() {\n return this.date.getMonth()\n }\n\n getWeek() {\n return this.getWeek()\n }\n\n getDate() {\n return this.date.getDate()\n }\n\n getWeek() {\n const d = new Date(\n this.date.getFullYear(),\n this.date.getMonth(),\n this.date.getDate()\n )\n const daynum = d.getDay() || 7\n\n d.setDate(d.getDate() + 4 - daynum)\n\n const yearstart = new Date(d.getFullYear(), 0, 1)\n\n return Math.ceil(((d - yearstart) / 86400000 + 1) / 7)\n }\n}\n\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator, date) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.isInitialVersion = version.isInitialVersion\n this.isCalendarLeading = version.isCalendarLeading\n this.datever = null\n this.semanticver = null\n this.modifierver = null\n this.date = date\n\n this.parse(version)\n }\n\n parse(version) {\n if (Object.keys(version.calendar).length > 0) {\n this.datever = new DateVersion(version.calendar, this.seperator, this.isInitialVersion, this.date)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator, this.isInitialVersion)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator, this.isInitialVersion)\n }\n }\n\n inc(levels) {\n const l = levels[0]\n\n const removeModifier = levels.length === 1 \n && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 \n && this.versionStringHasModifier\n if (removeModifier) {\n this.modifierver = null\n\n return this\n }\n\n if (l == 'CALENDAR') this.datever.inc(l)\n if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l)\n if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l)\n\n if (levels.length === 1) {\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (levels.length === 2) {\n const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && ModifierVersion.tags.indexOf(l) === -1) {\n this.modifierver.inc(l2)\n if (this.isCalendarLeading && this.datever.hasChanged && this.semanticver) {\n this.semanticver.reset()\n }\n }\n else if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else {\n if (!this.versionStringHasModifier) this.semanticver.inc(l2)\n }\n }\n else {\n throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\n }\n }\n else if (levels.length === 3) {\n const l2 = levels[1]\n const l3 = levels[2]\n\n if (SemanticVersion.tags.indexOf(l2) !== -1) {\n if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset()\n else {\n if (!this.versionStringHasModifier) this.semanticver.inc(l2)\n }\n }\n\n if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) {\n this.modifierver.inc(l3)\n }\n else {\n throw new Error(`The third tag of the level must be a modifier tag. You specified \"${l3}\".`)\n }\n }\n\n return this\n }\n\n asObject() {\n const result = {\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n if (this.datever) result.calendar = this.datever.asObject()\n if (this.semanticver) result.semantic = this.semanticver.asObject()\n if (this.modifierver) result.modifier = this.modifierver.asObject()\n\n return result\n }\n}\n","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\nimport UtcDate from './UtcDate.js'\nimport LocalDate from './LocalDate.js'\nimport Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n this._useLocalTime = false\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n const parsedVersion = this.parseVersion(version, format, levels)\n const date = this._useLocalTime ? new LocalDate() : new UtcDate()\n\n const obj = (new Version(parsedVersion, this.seperator, date)).inc(levels).asObject()\n\n const result = this.asString(format, obj)\n\n if (version == result) {\n throw new Error('No change happened in the version.')\n }\n\n return result\n }\n\n isValid(format, version) {\n if (!version) return false\n\n try {\n format = this.validateFormat(format, [])\n version = this.parseVersion(version, format, [])\n\n new Version(version, this.seperator)\n\n return true\n } catch (e) {\n return false\n }\n }\n\n getTagType(tag) {\n tag = tag.toUpperCase()\n\n if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar'\n if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic'\n if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier'\n \n return undefined;\n }\n\n asString(format, obj) {\n const result = []\n\n for (const tag of format.sorted) {\n if (DateVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.calendar[tag])\n }\n if (SemanticVersion.tags.indexOf(tag) !== -1) {\n result.push(obj.semantic[tag])\n }\n if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) {\n result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag])\n }\n }\n\n return result\n .join(this.seperator)\n .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator)\n }\n\n parseVersion(version, format, levels) {\n const map = {\n isCalendarLeading: format.isCalendarLeading,\n isInitialVersion: !version,\n versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version),\n sorted: {},\n calendar: {},\n semantic: {},\n modifier: {}\n }\n\n let startIndex=0, endIndex=0\n for (const tag of format.sorted) {\n endIndex = version.indexOf(this.seperator, startIndex+1)\n if (endIndex === -1) endIndex = undefined\n\n let value = version.slice(startIndex, endIndex)\n\n if (value.indexOf(ModifierVersion.seperator) !== -1) {\n endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1)\n value = version.slice(startIndex, endIndex)\n }\n\n if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) {\n if (value.toUpperCase() != tag) value = '-1'\n else value = version.slice(startIndex + value.length + 1)\n }\n\n if (isNaN(startIndex)) {\n value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'\n }\n\n if (value == '') {\n value = '0'\n }\n\n map.sorted[tag] = value\n if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value\n if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value\n if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value\n\n startIndex = endIndex + 1\n }\n\n return map\n }\n\n validateFormat(format, levels) {\n const result = {\n sorted: [],\n calendar: [],\n semantic: [],\n modifier: []\n }\n\n const tags = format.toUpperCase().split(this.seperator)\n\n for (const tag of tags) {\n if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag)\n else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag)\n else throw new Error(`[CALVER]: Invalid format tag \"${tag}\".`)\n\n result.sorted.push(tag)\n }\n\n for (const level of levels) {\n if (ModifierVersion.tags.indexOf(level) !== -1) {\n result.modifier.push(level)\n result.sorted.push(level)\n }\n }\n\n result.isCalendarLeading = DateVersion.tags.indexOf(result.sorted[0]) !== -1\n\n return result\n }\n\n validateLevels(levels) {\n const result = []\n const arr = levels.split('.')\n\n for (const level of arr) {\n const formatted = level.toUpperCase()\n if (this.levels.indexOf(formatted) !== -1) {\n result.push(formatted)\n }\n else {\n throw new Error(`[CALVER]: Invalid level \"${level}\".`)\n }\n }\n\n return result\n }\n\n set useLocalTime(value) {\n this._useLocalTime = value\n }\n}\n\nexport default new Calver()\n"],"names":["DateVersion","tags","reDigits","constructor","obj","parentSeperator","isInitialVersion","date","hasChanged","props","parse","prop","isValid","Error","push","inc","level","prevValue","asString","yearstr","getFullYear","toString","parseInt","slice","padStart","monthstr","getMonth","weekstr","getWeek","daystr","getDate","newValue","v","test","length","indexOf","Number","asObject","reduce","memo","result","tag","join","SemanticVersion","MAJOR","MINOR","PATCH","reset","map","ModifierVersion","seperator","DEV","ALPHA","BETA","RC","UtcDate","Date","now","getUTCFullYear","getUTCMonth","getUTCWeek","getUTCDate","d","UTC","daynum","getUTCDay","setUTCDate","yearstart","Math","ceil","LocalDate","getDay","setDate","Version","version","versionStringHasModifier","isCalendarLeading","datever","semanticver","modifierver","Object","keys","calendar","semantic","modifier","levels","l","removeModifier","l2","l3","includes","Calver","_useLocalTime","format","validateLevels","validateFormat","parsedVersion","parseVersion","e","getTagType","toUpperCase","undefined","sorted","toLowerCase","replace","startIndex","endIndex","value","isNaN","split","arr","formatted","useLocalTime"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d9f5892..bad5a55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "calver", - "version": "22.8.4", + "version": "v22.9.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "calver", - "version": "22.8.4", + "version": "v22.9.1", "license": "MIT", "dependencies": { "@babel/runtime": "^7.15.4", diff --git a/package.json b/package.json index db6c1d3..f64b4a4 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "type": "module", "scripts": { "test": "for i in tests/*.js; do node \"$i\"; done", - "build": "rollup --config rollup.config.js" + "build": "rollup --config rollup.config.js", + "prepare": "npm run build" }, "exports": { ".": { diff --git a/src/Version.js b/src/Version.js index 4c8fb61..8a6b63c 100644 --- a/src/Version.js +++ b/src/Version.js @@ -62,7 +62,9 @@ export default class Version { } else if (SemanticVersion.tags.indexOf(l2) !== -1) { if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset() - else this.semanticver.inc(l2) + else { + if (!this.versionStringHasModifier) this.semanticver.inc(l2) + } } else { throw new Error(`The second tag of the level should be either modifier or semantic tag. You specified "${l2}" as the second tag and "${l}" as the first tag.`) @@ -74,7 +76,9 @@ export default class Version { if (SemanticVersion.tags.indexOf(l2) !== -1) { if (this.isCalendarLeading && this.datever.hasChanged) this.semanticver.reset() - else this.semanticver.inc(l2) + else { + if (!this.versionStringHasModifier) this.semanticver.inc(l2) + } } if (ModifierVersion.tags.includes(l3) && !ModifierVersion.tags.includes(l2) && !ModifierVersion.tags.includes(l)) { diff --git a/tests/index.js b/tests/index.js index a821a28..d2fe968 100644 --- a/tests/index.js +++ b/tests/index.js @@ -49,6 +49,7 @@ assert.strictEqual(calver.getTagType('major'), 'semantic') assert.strictEqual(calver.getTagType('patch'), 'semantic') assert.strictEqual(calver.getTagType('dev'), 'modifier') assert.strictEqual(calver.getTagType('alpha'), 'modifier') +assert.strictEqual(calver.getTagType('rc'), 'modifier') assert.strictEqual(calver.inc('major.minor.patch', '', 'major'), '1.0.0') assert.strictEqual(calver.inc('yyyy.mm', '', 'calendar'), '2021.1') @@ -77,4 +78,12 @@ calver.useLocalTime = true assert.strictEqual(calver.inc('yyyy.mm.dd.minor.patch', '', 'calendar'), '2021.1.20.0.0') assert.strictEqual(calver.inc('yyyy.mm.minor', '2020.12.2', 'calendar.minor.rc'), '2021.1.0-rc.0') -assert.strictEqual(calver.inc('yyyy.mm.minor', '2020.12.2', 'calendar.rc'), '2021.1.0-rc.0') \ No newline at end of file +assert.strictEqual(calver.inc('yyyy.mm.minor', '2020.12.2', 'calendar.rc'), '2021.1.0-rc.0') + +assert.strictEqual(calver.inc('yyyy.mm.minor', '2021.1.0', 'calendar.minor.rc'), '2021.1.1-rc.0') +assert.strictEqual(calver.inc('yyyy.mm.minor', '2021.1.1-rc.0', 'calendar.minor.rc'), '2021.1.1-rc.1') +assert.strictEqual(calver.inc('yyyy.mm.minor', '2021.1.1-rc.1', 'calendar.minor.rc'), '2021.1.1-rc.2') +assert.strictEqual(calver.inc('yyyy.mm.minor', '2021.1.1-rc.2', 'calendar.minor'), '2021.1.1') +assert.strictEqual(calver.inc('yyyy.mm.minor', '2021.1.1-rc.2', 'calendar.minor.dev'), '2021.1.1-dev.0') +assert.strictEqual(calver.inc('yyyy.mm.minor', '2020.12.5', 'calendar.minor.rc'), '2021.1.0-rc.0') +assert.strictEqual(calver.inc('yyyy.mm.minor', '2020.12.5-rc.6', 'calendar.minor.rc'), '2021.1.0-rc.7')