diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..a91199c --- /dev/null +++ b/.browserslistrc @@ -0,0 +1 @@ +maintained node versions diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100755 index 84b82d2..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - env: { - es6: true - }, - parserOptions: { - ecmaVersion: 2017, - sourceType: 'module' - } -} diff --git a/.releaser.json b/.releaser.json new file mode 100644 index 0000000..205734f --- /dev/null +++ b/.releaser.json @@ -0,0 +1,16 @@ +{ + "versioning": { + "scheme": "calver", + "format": "yy.mm.minor" + }, + "npm": { + "enable": true, + "updatePkgJson": true, + "publish": true, + "publishCmdSuffix": "--access public" + }, + "github": { + "enable": true, + "release": true + } +} diff --git a/README.md b/README.md index b042cb9..62daf8f 100644 --- a/README.md +++ b/README.md @@ -1,134 +1,131 @@ # node-calver | The Calendar Versioner -The calver parser for node. Because we love calendar versioning! πŸ“† πŸš€ +The calver parser for node. πŸ“† πŸš€ ![NPM](https://img.shields.io/npm/l/calver) [![npm version](https://badge.fury.io/js/calver.svg)](https://badge.fury.io/js/calver) ![npm bundle size](https://img.shields.io/bundlephobia/min/calver) ![npm](https://img.shields.io/npm/dy/calver) -[Calendar versioning](https://calver.org/) is an alternative to [semantic versioning](https://semver.org/). They both have advantages to each other and used by popular softwares. +## Why +Yes, [semantic versioning](https://semver.org/) isn't the only versioning scheme. Software developers are versioning their software for decades and there are various schemes. [Calendar versioning](https://calver.org/) is one of them. It has a bit more flexible when compared to semver. It's based on dates and more human-readable. Personally, using it in my frontend projects and it's working pretty well. -I wrote this module to apply calendar versioning to my frontend projects and it works well. Practically you can use calendar versioning anywhere. The semantic versioner's module [semver](https://github.com/npm/node-semver) inspired me a lot while writing this module. Hoping that developers will have more content to compare calendar versioning and semantic versioning and know that semantic versioning is not the only versioning standart. - -There is no dependency. +## Implementation +There is no standart (as much in semver) about the implementation of calendar versioning. The introduction in [calver.org](https://calver.org/) inspired me a lot and I build the API flexible enough for user to create versions in various formats. ## Install +This is node.js module and compiled for `cjs` and `es` module environments. There is no dependency and it can be installed via npm: ```sh npm i calver ``` -## Before Using -You may want to look at [calver.org](https://calver.org/) which I used as a reference while implementing this package, to better understand how to build calendar versioner. - -### Available Tags -Here are the list of tags you can choose while creating a versioning scheme of your app. - -#### Date Tags -1. **YYYY** -2. **YY** -3. **0Y** -4. **MM** -5. **0M** -6. **WW** -7. **0W** -8. **DD** -9. **0D** - -#### Semantic Tags -1. **MAJOR** -2. **MINOR** -3. **MICRO** -4. **MODIFIER** - -#### Modifier Tags -1. **DEV** -2. **ALPHA** -3. **BETA** -4. **RC** - -## Use -This is an example usage in some application releasing lifecycle. - -We want our app's version in the following format: **yy.mm.minor.micro.modifier** - -Give your app a version number for the next release: +## Usage +Require or import: ```js const calver = require('calver') - -const format = 'yy.mm.minor.micro.modifier' -calver.inc(format, '21.1.0.0', 'dev') +// or +import calver from 'calver' ``` -This will return **21.1.0.0-dev.1** - -When we done the changes and published this version, we can start to work on another update: +If your `node < 14` then: ```js -// format is same and place the previous version number in the second argument -calver.inc(format, '21.1.0.0-dev.1', 'dev') +const calver = require('calver/node/lts') +// or +import calver from 'calver/node/lts' ``` -And we are now **21.1.0.0-dev.2** -When it is time to go alpha: +Unlike semver, calver needs a `format` to deal with version strings. + +### Choose Format +A format is a recipe for calver to decide what will the next version be. In semver, format is fixed (MAJOR.MINOR.PATCH.MODIFIER) but in calver you create your own version format by using available tags. + +| Tag | Type | Description | +| --- | --- | --- | +| YYYY | calendar | Zero based year with max 4 digit. | +| YY | calendar | Zero based year with max 2 digit. | +| 0Y | calendar | Zero padded 2 digit year. | +| MM | calendar | Zero based month with max 2 digit. | +| 0M | calendar | Zero padded 2 digit month. | +| WW | calendar | Zero based week of the year with max 2 digit. | +| 0W | calendar | Zero padded 2 digit week of the year. | +| DD | calendar | Zero based day of the month with max 2 digit. | +| 0D | calendar | Zero padded 2 digit day of the month. | +| MAJOR | semantic | Auto-increment number for breaking changes. | +| MINOR | semantic | Auto-increment number for new features. | +| PATCH | semantic | Auto-increment number for bug fixes. | +| DEV | modifier | Auto-increment number for dev updates. | +| ALPHA | modifier | Auto-increment number for alpha updates. | +| BETA | modifier | Auto-increment number for beta updates. | +| RC | modifier | Auto-increment number for release candidate updates. | + +You can combine any of these tags while choosing a format except modifiers. Let's say we choose: ```js -// same logic -calver.inc(format, '21.1.0.0-dev.2', 'alpha') +const format = 'yyyy.mm.minor.patch' ``` -And we are now alpha: **21.1.0.0-alpha.1** - -Let's skip `beta` and `rs` tags and create a release version: +and create an initial release: ```js -// same same same -calver.inc(format, '21.1.0.0-alpha.1', 'minor') +// assuming current date is 2021.01 +const version = calver.inc(format, '', 'calendar') +// version = 2021.1.0.0 ``` -And **21.1.1.0** +The second argument is previous version string that we would like to increment but left empty to show to create an initial version. + +The third argument is the level of the increment operation. `level` might be one of the following: + +| Level | Type | Description | +| --- | --- | --- | +| calendar | calendar | Updates calendar tags to the current date and removes modifier if it exist. | +| major | semantic | Increments the major tag, resets minor, patch tags and removes modifier if it exist. | +| minor | semantic | Increments the minor tag, resets the patch tag and removes modifier if it exist. | +| patch | semantic | Increments tha patch tag and removes modifier if it exist. | +| dev | modifier | Increments the dev tag. | +| alpha | modifier | Increments the alpha tag. | +| beta | modifier | Increments the beta tag. | +| rc | modifier | Increments the rc tag. | +| calendar.[dev|alpha|beta|rc] | composite | Updates calendar tags and adds specified modifier tag. | +| major.[dev|alpha|beta|rc] | composite | Increments the major tag and adds specified modifier tag. | +| minor.[dev|alpha|beta|rc] | composite | Increments the minor tag and adds specified modifier tag. | +| patch.[dev|alpha|beta|rc] | composite | Increments the patch tag and adds specified modifier tag. | + +Let's make some more updates: +```js +// assuming current date is 2021.01 -This is how a release cycles. +const version = calver.inc(format, '2021.1.0.0', 'minor.dev') +// version = 2021.1.1.0-dev.0 -There is more options related to tags such as you can specify two tags: -```js -// calendar means update date portion to today. -calver.inc(format, '19.1.1.0', 'calendar.beta') -// returns 21.1.0.0-beta.1 depending on the current date +const version = calver.inc(format, '2021.1.1.0-dev.0', 'dev') +// version = 2021.1.1.0-dev.1 -calver.inc(format, '21.1.1.0', 'minor.beta') -// returns 21.1.2.0-beta.1 -``` +const version = calver.inc(format, '2021.1.1.0-dev.1', 'dev') +// version = 2021.1.1.0-dev.2 -The first parameter **format** is fixed along with the project. It is called **versioning scheme**. You can use tags as written in the list above. +const version = calver.inc(format, '2021.1.1.0-dev.2', 'alpha') +// version = 2021.1.1.0-alpha.0 -The second parameter **version** is the current value of the **format**. (and `inc` will give you the next one) +const version = calver.inc(format, '2021.1.1.0-alpha.0', 'alpha') +// version = 2021.1.1.0-alpha.1 -The third parameter **level** explains the majority and purpose of the update. -1. It can be `calendar` to sync the date portion of the version with the current date. -2. It can be one of `major`, `minor` and `micro` to update the semantic portion of the version. -3. It can have two tags while the first one is one of the two above and the second one is either modifier or semantic. `calendar.alpha`, `minor.beta`, `calendar.micro` for example. +const version = calver.inc(format, '2021.1.1.0-alpha.1', 'minor') +// version = 2021.1.1.0 -### Validate Versions -You may want to validate a version string against a format: -```js -try { - calver.valid('yyyy.mm.minor.modifier', '2021.5-alpha.1') -} catch (e) { +const version = calver.inc(format, '2021.1.1.0', 'minor') +// version = 2021.1.2.0 -} +const version = calver.inc(format, '2021.1.2.0', 'patch') +// version = 2021.1.2.1 ``` -It will throw since it doesn't have a `minor` tag in its version string. -### Prettify Version -Print more human readable, pretty versions: +## Tests ```js -// month names are in english by default -const pretty = calver.pretty('yyyy.mm.micro', '2021.3.24', 'en') -// based on turkish -const pretty2 = calver.pretty('yyyy.mm.micro', '2021.3.24', 'tr') -// with modifier tags -const pretty3 = calver.pretty('yy.mm.micro.modifier', '21.3.4-alpha.1') +npm run test ``` -The first one is **March 2021 v24**, the second one is **Mart 2021 v24** and the third one is **March 2021 v4-alpha.1** +Note that the `Date.now()` function replaced with a fixed value in tests so we can reliably run tests whenever we want. -## Tests -Tests are written in [jasmine](https://jasmine.github.io) and can be run with `npm run test`. You can browse spec folder to see more examples. +## Note +Software versioning is hard. None of the schemes are working perfectly and currently it highly depends on the how you are going to use. See [this article written by donald stufft](https://caremad.io/posts/2016/02/versioning-software/). + +--- -One thing to note that the `Date.now()` function is fixed in tests so we can reliably run tests whenever we want. +Version management of this repository done by [releaser](https://github.com/muratgozel/node-releaser) πŸš€ --- diff --git a/dev/commit.js b/dev/commit.js deleted file mode 100644 index 6bc59a5..0000000 --- a/dev/commit.js +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env node -const {exec, execSync} = require('child_process') -const fs = require('fs') -const path = require('path') -const cli = require('yargs')() -const colors = require('colors') -const calver = require('../src') - -let pkgjson = undefined - -function validateCodebaseChanges() { - const output = execSync('git status -s') - const changes = output.toString().split(/[\r\n]/).filter(line => line.trim().length > 0) - if (!changes || changes.length < 1) { - throw new Error('No change detected in the codebase.') - } -} - -function readCurrentVersion() { - pkgjson = JSON.parse(fs.readFileSync('./package.json', 'utf8')) - return pkgjson.version -} - -function genNextVersion(scheme, currentVersion, level) { - switch (scheme) { - case 'semver': - return semver.inc(currentVersion, level) - break; - case 'calver': - const format = 'YY.MM.MICRO' - return calver.inc(format, currentVersion, level) - default: - throw new Error('Unsupported versioning scheme.') - } -} - -function updatePKGJson(version) { - pkgjson.version = version - fs.writeFileSync('./package.json', JSON.stringify(pkgjson, null, 2)) -} - -function revertPKGJson(version) { - updatePKGJson(version) -} - -function commit(argv) { - const {level, message, branch, publish} = argv - - validateCodebaseChanges() - - const currentVersion = readCurrentVersion() - const nextVersion = genNextVersion('calver', currentVersion, level) - - updatePKGJson(nextVersion) - - const commitMessages = Array.isArray(message) ? message : [message] - const commitMessagesCommand = '-m "' + commitMessages.join('" -m "') + '"' - const commands = [ - 'git tag -a "' + nextVersion + '" ' + commitMessagesCommand, - 'git add .', - 'git commit ' + commitMessagesCommand, - 'git push -u origin ' + branch + ' --tags' - ] - for (let i = 0; i < commands.length; i++) { - try { - execSync(commands[i], {stdio: 'inherit', encoding: 'utf8'}) - } catch (e) { - revertPKGJson(currentVersion) - throw e - } - } - - if (publish) { - try { - execSync('npm publish --access public', {stdio: 'inherit', encoding: 'utf8'}) - } catch (e) { - revertPKGJson(currentVersion) - throw e - } - } - - console.log('New version ' + nextVersion + ' released successfully.'.green) -} - -cli - .usage('Usage: npm run commit -- [level] [message] [branch] [publish]') - .command( - 'commit', - 'Commits changes to a remote repo.', - { - level: { - alias: 'l', - describe: 'The calver compatible level of the commit.', - demandOption: true - }, - message: { - alias: 'm', - describe: 'A commit message. Can be specified multiple', - demandOption: true - }, - branch: { - alias: 'b', - describe: 'The branch name you are committing.', - default: 'master' - }, - publish: { - alias: 'p', - type: 'boolean', - describe: 'Also publish on npm by executing the command "npm publish --access public".', - default: false - } - }, - commit - ) - -cli.parse(process.argv.slice(2)) diff --git a/dist/node/cjs/index.js b/dist/node/cjs/index.js new file mode 100644 index 0000000..b5ea1bb --- /dev/null +++ b/dist/node/cjs/index.js @@ -0,0 +1,392 @@ +'use strict'; + +class DateVersion { + static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D'] + + constructor(obj, parentSeperator) { + this['YYYY'] = null; + this['YY'] = null; + this['0Y'] = null; + this['MM'] = null; + this['0M'] = null; + this['WW'] = null; + this['0W'] = null; + this['DD'] = null; + this['0D'] = null; + + this.parentSeperator = parentSeperator; + this.props = []; + this.date = new Date(Date.now()); + + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this[prop] = obj[prop]; + this.props.push(prop); + } + } + + inc(level) { + const yearstr = this.date.getUTCFullYear().toString(); + this['YYYY'] = yearstr; + this['YY'] = parseInt(yearstr.slice(2)).toString(); + this['0Y'] = this['YY'].padStart(2, '0'); + + const monthstr = (this.date.getUTCMonth() + 1).toString(); + this['MM'] = monthstr; + this['0M'] = this['MM'].padStart(2, '0'); + + const weekstr = this.getUTCWeek(this.date).toString(); + this['WW'] = weekstr; + this['0W'] = this['WW'].padStart(2, '0'); + + const daystr = this.date.getUTCDate().toString(); + this['DD'] = daystr; + this['0D'] = this['DD'].padStart(2, '0'); + + return this + } + + asObject() { + return this.props.reduce((memo, prop) => { + memo[prop] = this[prop]; + return memo + }, {}) + } + + asString() { + const result = []; + for (const tag of this.constructor.tags) { + if (this.props.indexOf(tag) !== -1) result.push(this[tag]); + } + return result.join(this.parentSeperator) + } + + getUTCWeek(date) { + const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); + const daynum = d.getUTCDay() || 7; + + d.setUTCDate(d.getUTCDate() + 4 - daynum); + + const yearstart = new Date( Date.UTC(d.getUTCFullYear(), 0, 1) ); + + return Math.ceil((((d - yearstart) / 86400000) + 1)/7) + } +} + +class SemanticVersion { + static tags = ['MAJOR', 'MINOR', 'PATCH'] + + constructor(obj, parentSeperator) { + this.MAJOR = null; + this.MINOR = null; + this.PATCH = null; + + this.parentSeperator = parentSeperator; + this.props = []; + + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this[prop] = obj[prop]; + this.props.push(prop); + } + } + + inc(level) { + if (this.props.indexOf(level) === -1) { + throw new Error(`[CALVER]: You have requested to increment "${level}" but your format doesn't have it.`) + } + + if (level == 'MAJOR') { + this.MAJOR = (parseInt(this.MAJOR) + 1).toString(); + if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'; + if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'; + } + + if (level == 'MINOR') { + this.MINOR = (parseInt(this.MINOR) + 1).toString(); + if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'; + } + + if (level == 'PATCH') { + this.PATCH = (parseInt(this.PATCH) + 1).toString(); + } + + return this + } + + asObject() { + return this.props.reduce((memo, prop) => { + memo[prop] = this[prop]; + return memo + }, {}) + } + + asString() { + const result = []; + for (const tag of this.constructor.tags) { + if (this.props.indexOf(tag) !== -1) result.push(this[tag]); + } + return result.join(this.parentSeperator) + } +} + +class ModifierVersion { + static seperator = '-' + static tags = ['DEV', 'ALPHA', 'BETA', 'RC'] + + constructor(obj, parentSeperator) { + this.DEV = null; + this.ALPHA = null; + this.BETA = null; + this.RC = null; + + this.parentSeperator = parentSeperator; + this.prop = null; + + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this.prop = prop; + this[prop] = obj[prop]; + } + } + + inc(level) { + if (level != this.prop) { + throw new Error(`[CALVER]: You have requested to increment "${level}" but your format doesn't have it.`) + } + + this[this.prop] = (parseInt(this[this.prop]) + 1).toString(); + + return this + } + + asObject() { + const result = {}; + result[this.prop] = this[this.prop]; + return result + } + + asString() { + return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}` + } +} + +class Version { + constructor(version, seperator) { + this.seperator = seperator; + this.versionStringHasModifier = version.versionStringHasModifier; + this.datever = null; + this.semanticver = null; + this.modifierver = null; + + this.parse(version); + } + + parse(version) { + if (Object.keys(version.calendar).length > 0) { + this.datever = new DateVersion(version.calendar, this.seperator); + } + + if (Object.keys(version.semantic).length > 0) { + this.semanticver = new SemanticVersion(version.semantic, this.seperator); + } + + if (Object.keys(version.modifier).length > 0) { + this.modifierver = new ModifierVersion(version.modifier, this.seperator); + } + } + + inc(levels) { + const l = levels[0]; + + const removeModifier = levels.length === 1 + && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 + && this.versionStringHasModifier ? true : false; + if (removeModifier) { + this.modifierver = null; + + return this + } + + if (l == 'CALENDAR') this.datever.inc(l); + if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l); + if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l); + + if (levels.length > 1) { + const l2 = levels[1]; + + if (ModifierVersion.tags.indexOf(l2) !== -1 && + ModifierVersion.tags.indexOf(l) === -1) this.modifierver.inc(l2); + else { + throw new Error(`The second tag of the level should be a modifier tag. You specified "${l2}" as the second tag and "${l}" as the first tag.`) + } + } + + return this + } + + asObject() { + const result = { + calendar: {}, + semantic: {}, + modifier: {} + }; + + if (this.datever) result.calendar = this.datever.asObject(); + if (this.semanticver) result.semantic = this.semanticver.asObject(); + if (this.modifierver) result.modifier = this.modifierver.asObject(); + + return result + } +} + +class Calver { + constructor() { + this.seperator = '.'; + this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]; + } + + inc(format, version, levels) { + levels = this.validateLevels(levels); + format = this.validateFormat(format, levels); + version = this.parseVersion(version, format, levels); + + const obj = (new Version(version, this.seperator)).inc(levels).asObject(); + + return this.asString(format, obj) + } + + getTagType(tag) { + tag = tag.toUpperCase(); + + if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar' + if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic' + if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier' + + return undefined; + } + + asString(format, obj) { + const result = []; + + for (const tag of format.sorted) { + if (DateVersion.tags.indexOf(tag) !== -1) { + result.push(obj.calendar[tag]); + } + if (SemanticVersion.tags.indexOf(tag) !== -1) { + result.push(obj.semantic[tag]); + } + if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) { + result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag]); + } + } + + return result + .join(this.seperator) + .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator) + } + + parseVersion(version, format, levels) { + const map = { + versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version), + sorted: {}, + calendar: {}, + semantic: {}, + modifier: {} + }; + + let startIndex=0, endIndex=0; + for (const tag of format.sorted) { + endIndex = version.indexOf(this.seperator, startIndex+1); + if (endIndex === -1) endIndex = undefined; + + let value = version.slice(startIndex, endIndex); + + if (value.indexOf(ModifierVersion.seperator) !== -1) { + endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1); + value = version.slice(startIndex, endIndex); + } + + if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) { + if (value.toUpperCase() != tag) value = '-1'; + else value = version.slice(startIndex + value.length + 1); + } + + if (isNaN(startIndex)) { + value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'; + } + + if (value == '') { + value = '0'; + } + + map.sorted[tag] = value; + if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value; + if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value; + if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value; + + startIndex = endIndex + 1; + } + + return map + } + + validateFormat(format, levels) { + const result = { + sorted: [], + calendar: [], + semantic: [], + modifier: [] + }; + + const tags = format.toUpperCase().split(this.seperator); + + for (const tag of tags) { + if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag); + else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag); + else throw new Error(`[CALVER]: Invalid format tag "${tag}".`) + + result.sorted.push(tag); + } + + for (const level of levels) { + if (ModifierVersion.tags.indexOf(level) !== -1) { + result.modifier.push(level); + result.sorted.push(level); + } + } + + return result + } + + validateLevels(levels) { + const result = []; + const arr = levels.split('.'); + + for (const level of arr) { + const formatted = level.toUpperCase(); + if (this.levels.indexOf(formatted) !== -1) { + result.push(formatted); + } + else { + throw new Error(`[CALVER]: Invalid level "${level}".`) + } + } + + return result + } +} + +var index = new Calver(); + +module.exports = index; +//# sourceMappingURL=index.js.map diff --git a/dist/node/cjs/index.js.map b/dist/node/cjs/index.js.map new file mode 100644 index 0000000..ab050dd --- /dev/null +++ b/dist/node/cjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../src/DateVersion.js","../../../src/SemanticVersion.js","../../../src/ModifierVersion.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 constructor(obj, parentSeperator) {\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.parentSeperator = parentSeperator\n this.props = []\n this.date = new Date(Date.now())\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const yearstr = this.date.getUTCFullYear().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.getUTCMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.getUTCWeek(this.date).toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getUTCDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n return this\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 getUTCWeek(date) {\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\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 SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n constructor(obj, parentSeperator) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n this[prop] = obj[prop]\n this.props.push(prop)\n }\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 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 constructor(obj, parentSeperator) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\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 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 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","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.datever = null\n this.semanticver = null\n this.modifierver = null\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)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator)\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 ? true : false\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 const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && \n ModifierVersion.tags.indexOf(l) === -1) this.modifierver.inc(l2)\n else {\n throw new Error(`The second tag of the level should be a modifier tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\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 Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n version = this.parseVersion(version, format, levels)\n\n const obj = (new Version(version, this.seperator)).inc(levels).asObject()\n\n return this.asString(format, obj)\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 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 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\nexport default new Calver()\n"],"names":[],"mappings":";;AAAe,MAAM,WAAW,CAAC;AACjC,EAAE,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACxE;AACA,EAAE,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE;AACpC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAI;AACvB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAI;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAI;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAI;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAI;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAI;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAI;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAI;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAI;AACrB;AACA,IAAI,IAAI,CAAC,eAAe,GAAG,gBAAe;AAC1C,IAAI,IAAI,CAAC,KAAK,GAAG,GAAE;AACnB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC;AACpC;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAC;AACnB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG,EAAE;AACb,IAAI,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;AAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAC;AAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAC;AAC3B,KAAK;AACL,GAAG;AACH;AACA,EAAE,GAAG,CAAC,KAAK,EAAE;AACb,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,GAAE;AACzD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,QAAO;AAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAE;AACtD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAC;AAC5C;AACA,IAAI,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAE;AAC7D,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,SAAQ;AACzB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAC;AAC5C;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAE;AACzD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,QAAO;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAC;AAC5C;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,GAAE;AACpD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,OAAM;AACvB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAC;AAC5C;AACA,IAAI,OAAO,IAAI;AACf,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;AAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAC;AAC7B,MAAM,OAAO,IAAI;AACjB,KAAK,EAAE,EAAE,CAAC;AACV,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,MAAM,MAAM,GAAG,GAAE;AACrB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AAC7C,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;AAChE,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,UAAU,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAC;AACrF,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAC;AACrC;AACA,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,MAAM,EAAC;AAC7C;AACA,IAAI,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAE;AACpE;AACA,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1D,GAAG;AACH;;AC1Ee,MAAM,eAAe,CAAC;AACrC,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAC3C;AACA,EAAE,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE;AACpC,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI;AACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI;AACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI;AACrB;AACA,IAAI,IAAI,CAAC,eAAe,GAAG,gBAAe;AAC1C,IAAI,IAAI,CAAC,KAAK,GAAG,GAAE;AACnB;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAC;AACnB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG,EAAE;AACb,IAAI,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;AAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAC;AAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAC;AAC3B,KAAK;AACL,GAAG;AACH;AACA,EAAE,GAAG,CAAC,KAAK,EAAE;AACb,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1C,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,2CAA2C,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAC9G,KAAK;AACL;AACA,IAAI,IAAI,KAAK,IAAI,OAAO,EAAE;AAC1B,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAE;AACxD,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAG;AAC9D,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAG;AAC9D,KAAK;AACL;AACA,IAAI,IAAI,KAAK,IAAI,OAAO,EAAE;AAC1B,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAE;AACxD,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAG;AAC9D,KAAK;AACL;AACA,IAAI,IAAI,KAAK,IAAI,OAAO,EAAE;AAC1B,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAE;AACxD,KAAK;AACL;AACA,IAAI,OAAO,IAAI;AACf,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;AAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAC;AAC7B,MAAM,OAAO,IAAI;AACjB,KAAK,EAAE,EAAE,CAAC;AACV,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,MAAM,MAAM,GAAG,GAAE;AACrB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AAC7C,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;AAChE,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAC5C,GAAG;AACH;;AC1De,MAAM,eAAe,CAAC;AACrC,EAAE,OAAO,SAAS,GAAG,GAAG;AACxB,EAAE,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;AAC9C;AACA,EAAE,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE;AACpC,IAAI,IAAI,CAAC,GAAG,GAAG,KAAI;AACnB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAI;AACrB,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;AACpB,IAAI,IAAI,CAAC,EAAE,GAAG,KAAI;AAClB;AACA,IAAI,IAAI,CAAC,eAAe,GAAG,gBAAe;AAC1C,IAAI,IAAI,CAAC,IAAI,GAAG,KAAI;AACpB;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAC;AACnB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG,EAAE;AACb,IAAI,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;AAC5B,MAAM,IAAI,CAAC,IAAI,GAAG,KAAI;AACtB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAC;AAC5B,KAAK;AACL,GAAG;AACH;AACA,EAAE,GAAG,CAAC,KAAK,EAAE;AACb,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;AAC5B,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,2CAA2C,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAC9G,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAE;AAChE;AACA,IAAI,OAAO,IAAI;AACf,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,MAAM,MAAM,GAAG,GAAE;AACrB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;AACvC,IAAI,OAAO,MAAM;AACjB,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/F,GAAG;AACH;;ACtCe,MAAM,OAAO,CAAC;AAC7B,EAAE,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE;AAClC,IAAI,IAAI,CAAC,SAAS,GAAG,UAAS;AAC9B,IAAI,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,yBAAwB;AACpE,IAAI,IAAI,CAAC,OAAO,GAAG,KAAI;AACvB,IAAI,IAAI,CAAC,WAAW,GAAG,KAAI;AAC3B,IAAI,IAAI,CAAC,WAAW,GAAG,KAAI;AAC3B;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAC;AACvB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,EAAE;AACjB,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAC;AACtE,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAC;AAC9E,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAC;AAC9E,KAAK;AACL,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE;AACd,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,EAAC;AACvB;AACA,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC;AAC9C,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClE,SAAS,IAAI,CAAC,wBAAwB,GAAG,IAAI,GAAG,MAAK;AACrD,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,IAAI,CAAC,WAAW,GAAG,KAAI;AAC7B;AACA,MAAM,OAAO,IAAI;AACjB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAC;AAC5C,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAC;AACvE,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAC;AACvE;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,EAAC;AAC1B;AACA,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACjD,UAAU,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAC;AAC1E,WAAW;AACX,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,qEAAqE,EAAE,EAAE,CAAC,yBAAyB,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC;AACrJ,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,IAAI;AACf,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,MAAM,MAAM,GAAG;AACnB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAE;AAC/D,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAE;AACvE,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAE;AACvE;AACA,IAAI,OAAO,MAAM;AACjB,GAAG;AACH;;AClEA,MAAM,MAAM,CAAC;AACb,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAG;AACxB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,IAAI,EAAC;AAClF,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;AAC/B,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAC;AACxC,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAC;AAChD,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAC;AACxD;AACA,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAE;AAC7E;AACA,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;AACrC,GAAG;AACH;AACA,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,GAAG,GAAG,GAAG,CAAC,WAAW,GAAE;AAC3B;AACA,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,UAAU;AAC/D,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,UAAU;AACnE,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,UAAU;AACnE;AACA,IAAI,OAAO,SAAS,CAAC;AACrB,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;AACxB,IAAI,MAAM,MAAM,GAAG,GAAE;AACrB;AACA,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE;AACrC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAChD,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC;AACtC,OAAO;AACP,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACpD,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC;AACtC,OAAO;AACP,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE;AACpE,QAAQ,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC;AACvG,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,MAAM;AACjB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC;AACrF,GAAG;AACH;AACA,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AACxC,IAAI,MAAM,GAAG,GAAG;AAChB,MAAM,wBAAwB,EAAE,uCAAuC,CAAC,IAAI,CAAC,OAAO,CAAC;AACrF,MAAM,MAAM,EAAE,EAAE;AAChB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAK;AACL;AACA,IAAI,IAAI,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAC;AAChC,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE;AACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAC;AAC9D,MAAM,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,UAAS;AAC/C;AACA,MAAM,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAC;AACrD;AACA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AAC3D,QAAQ,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAC;AAC3E,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAC;AACnD,OAAO;AACP;AACA,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;AACpE,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,KAAI;AACpD,aAAa,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAC;AACjE,OAAO;AACP;AACA,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;AAC7B,QAAQ,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,IAAG;AACrE,OAAO;AACP;AACA,MAAM,IAAI,KAAK,IAAI,EAAE,EAAE;AACvB,QAAQ,KAAK,GAAG,IAAG;AACnB,OAAO;AACP;AACA,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAK;AAC7B,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAK;AACxE,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAK;AACxE,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAK;AACxE;AACA,MAAM,UAAU,GAAG,QAAQ,GAAG,EAAC;AAC/B,KAAK;AACL;AACA,IAAI,OAAO,GAAG;AACd,GAAG;AACH;AACA,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;AACjC,IAAI,MAAM,MAAM,GAAG;AACnB,MAAM,MAAM,EAAE,EAAE;AAChB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAK;AACL;AACA,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAC;AAC3D;AACA,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAC;AACzE,WAAW,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAC;AAClF,WAAW,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACpE;AACA,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAC;AAC7B,KAAK;AACL;AACA,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAChC,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACtD,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAC;AACnC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAC;AACjC,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,MAAM;AACjB,GAAG;AACH;AACA,EAAE,cAAc,CAAC,MAAM,EAAE;AACzB,IAAI,MAAM,MAAM,GAAG,GAAE;AACrB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAC;AACjC;AACA,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE;AAC7B,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,GAAE;AAC3C,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AACjD,QAAQ,MAAM,CAAC,IAAI,CAAC,SAAS,EAAC;AAC9B,OAAO;AACP,WAAW;AACX,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9D,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,MAAM;AACjB,GAAG;AACH,CAAC;AACD;AACA,YAAe,IAAI,MAAM;;;;"} \ No newline at end of file diff --git a/dist/node/cjs/package.json b/dist/node/cjs/package.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/dist/node/cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/dist/node/es/index.js b/dist/node/es/index.js new file mode 100644 index 0000000..b1bc872 --- /dev/null +++ b/dist/node/es/index.js @@ -0,0 +1,390 @@ +class DateVersion { + static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D'] + + constructor(obj, parentSeperator) { + this['YYYY'] = null; + this['YY'] = null; + this['0Y'] = null; + this['MM'] = null; + this['0M'] = null; + this['WW'] = null; + this['0W'] = null; + this['DD'] = null; + this['0D'] = null; + + this.parentSeperator = parentSeperator; + this.props = []; + this.date = new Date(Date.now()); + + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this[prop] = obj[prop]; + this.props.push(prop); + } + } + + inc(level) { + const yearstr = this.date.getUTCFullYear().toString(); + this['YYYY'] = yearstr; + this['YY'] = parseInt(yearstr.slice(2)).toString(); + this['0Y'] = this['YY'].padStart(2, '0'); + + const monthstr = (this.date.getUTCMonth() + 1).toString(); + this['MM'] = monthstr; + this['0M'] = this['MM'].padStart(2, '0'); + + const weekstr = this.getUTCWeek(this.date).toString(); + this['WW'] = weekstr; + this['0W'] = this['WW'].padStart(2, '0'); + + const daystr = this.date.getUTCDate().toString(); + this['DD'] = daystr; + this['0D'] = this['DD'].padStart(2, '0'); + + return this + } + + asObject() { + return this.props.reduce((memo, prop) => { + memo[prop] = this[prop]; + return memo + }, {}) + } + + asString() { + const result = []; + for (const tag of this.constructor.tags) { + if (this.props.indexOf(tag) !== -1) result.push(this[tag]); + } + return result.join(this.parentSeperator) + } + + getUTCWeek(date) { + const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); + const daynum = d.getUTCDay() || 7; + + d.setUTCDate(d.getUTCDate() + 4 - daynum); + + const yearstart = new Date( Date.UTC(d.getUTCFullYear(), 0, 1) ); + + return Math.ceil((((d - yearstart) / 86400000) + 1)/7) + } +} + +class SemanticVersion { + static tags = ['MAJOR', 'MINOR', 'PATCH'] + + constructor(obj, parentSeperator) { + this.MAJOR = null; + this.MINOR = null; + this.PATCH = null; + + this.parentSeperator = parentSeperator; + this.props = []; + + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this[prop] = obj[prop]; + this.props.push(prop); + } + } + + inc(level) { + if (this.props.indexOf(level) === -1) { + throw new Error(`[CALVER]: You have requested to increment "${level}" but your format doesn't have it.`) + } + + if (level == 'MAJOR') { + this.MAJOR = (parseInt(this.MAJOR) + 1).toString(); + if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'; + if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'; + } + + if (level == 'MINOR') { + this.MINOR = (parseInt(this.MINOR) + 1).toString(); + if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'; + } + + if (level == 'PATCH') { + this.PATCH = (parseInt(this.PATCH) + 1).toString(); + } + + return this + } + + asObject() { + return this.props.reduce((memo, prop) => { + memo[prop] = this[prop]; + return memo + }, {}) + } + + asString() { + const result = []; + for (const tag of this.constructor.tags) { + if (this.props.indexOf(tag) !== -1) result.push(this[tag]); + } + return result.join(this.parentSeperator) + } +} + +class ModifierVersion { + static seperator = '-' + static tags = ['DEV', 'ALPHA', 'BETA', 'RC'] + + constructor(obj, parentSeperator) { + this.DEV = null; + this.ALPHA = null; + this.BETA = null; + this.RC = null; + + this.parentSeperator = parentSeperator; + this.prop = null; + + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this.prop = prop; + this[prop] = obj[prop]; + } + } + + inc(level) { + if (level != this.prop) { + throw new Error(`[CALVER]: You have requested to increment "${level}" but your format doesn't have it.`) + } + + this[this.prop] = (parseInt(this[this.prop]) + 1).toString(); + + return this + } + + asObject() { + const result = {}; + result[this.prop] = this[this.prop]; + return result + } + + asString() { + return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}` + } +} + +class Version { + constructor(version, seperator) { + this.seperator = seperator; + this.versionStringHasModifier = version.versionStringHasModifier; + this.datever = null; + this.semanticver = null; + this.modifierver = null; + + this.parse(version); + } + + parse(version) { + if (Object.keys(version.calendar).length > 0) { + this.datever = new DateVersion(version.calendar, this.seperator); + } + + if (Object.keys(version.semantic).length > 0) { + this.semanticver = new SemanticVersion(version.semantic, this.seperator); + } + + if (Object.keys(version.modifier).length > 0) { + this.modifierver = new ModifierVersion(version.modifier, this.seperator); + } + } + + inc(levels) { + const l = levels[0]; + + const removeModifier = levels.length === 1 + && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 + && this.versionStringHasModifier ? true : false; + if (removeModifier) { + this.modifierver = null; + + return this + } + + if (l == 'CALENDAR') this.datever.inc(l); + if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l); + if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l); + + if (levels.length > 1) { + const l2 = levels[1]; + + if (ModifierVersion.tags.indexOf(l2) !== -1 && + ModifierVersion.tags.indexOf(l) === -1) this.modifierver.inc(l2); + else { + throw new Error(`The second tag of the level should be a modifier tag. You specified "${l2}" as the second tag and "${l}" as the first tag.`) + } + } + + return this + } + + asObject() { + const result = { + calendar: {}, + semantic: {}, + modifier: {} + }; + + if (this.datever) result.calendar = this.datever.asObject(); + if (this.semanticver) result.semantic = this.semanticver.asObject(); + if (this.modifierver) result.modifier = this.modifierver.asObject(); + + return result + } +} + +class Calver { + constructor() { + this.seperator = '.'; + this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]; + } + + inc(format, version, levels) { + levels = this.validateLevels(levels); + format = this.validateFormat(format, levels); + version = this.parseVersion(version, format, levels); + + const obj = (new Version(version, this.seperator)).inc(levels).asObject(); + + return this.asString(format, obj) + } + + getTagType(tag) { + tag = tag.toUpperCase(); + + if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar' + if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic' + if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier' + + return undefined; + } + + asString(format, obj) { + const result = []; + + for (const tag of format.sorted) { + if (DateVersion.tags.indexOf(tag) !== -1) { + result.push(obj.calendar[tag]); + } + if (SemanticVersion.tags.indexOf(tag) !== -1) { + result.push(obj.semantic[tag]); + } + if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) { + result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag]); + } + } + + return result + .join(this.seperator) + .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator) + } + + parseVersion(version, format, levels) { + const map = { + versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version), + sorted: {}, + calendar: {}, + semantic: {}, + modifier: {} + }; + + let startIndex=0, endIndex=0; + for (const tag of format.sorted) { + endIndex = version.indexOf(this.seperator, startIndex+1); + if (endIndex === -1) endIndex = undefined; + + let value = version.slice(startIndex, endIndex); + + if (value.indexOf(ModifierVersion.seperator) !== -1) { + endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1); + value = version.slice(startIndex, endIndex); + } + + if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) { + if (value.toUpperCase() != tag) value = '-1'; + else value = version.slice(startIndex + value.length + 1); + } + + if (isNaN(startIndex)) { + value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'; + } + + if (value == '') { + value = '0'; + } + + map.sorted[tag] = value; + if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value; + if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value; + if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value; + + startIndex = endIndex + 1; + } + + return map + } + + validateFormat(format, levels) { + const result = { + sorted: [], + calendar: [], + semantic: [], + modifier: [] + }; + + const tags = format.toUpperCase().split(this.seperator); + + for (const tag of tags) { + if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag); + else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag); + else throw new Error(`[CALVER]: Invalid format tag "${tag}".`) + + result.sorted.push(tag); + } + + for (const level of levels) { + if (ModifierVersion.tags.indexOf(level) !== -1) { + result.modifier.push(level); + result.sorted.push(level); + } + } + + return result + } + + validateLevels(levels) { + const result = []; + const arr = levels.split('.'); + + for (const level of arr) { + const formatted = level.toUpperCase(); + if (this.levels.indexOf(formatted) !== -1) { + result.push(formatted); + } + else { + throw new Error(`[CALVER]: Invalid level "${level}".`) + } + } + + return result + } +} + +var index = new Calver(); + +export { index as default }; +//# sourceMappingURL=index.js.map diff --git a/dist/node/es/index.js.map b/dist/node/es/index.js.map new file mode 100644 index 0000000..f571a3b --- /dev/null +++ b/dist/node/es/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../src/DateVersion.js","../../../src/SemanticVersion.js","../../../src/ModifierVersion.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 constructor(obj, parentSeperator) {\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.parentSeperator = parentSeperator\n this.props = []\n this.date = new Date(Date.now())\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const yearstr = this.date.getUTCFullYear().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.getUTCMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.getUTCWeek(this.date).toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getUTCDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n return this\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 getUTCWeek(date) {\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\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 SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n constructor(obj, parentSeperator) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n this[prop] = obj[prop]\n this.props.push(prop)\n }\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 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 constructor(obj, parentSeperator) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\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 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 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","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.datever = null\n this.semanticver = null\n this.modifierver = null\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)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator)\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 ? true : false\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 const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && \n ModifierVersion.tags.indexOf(l) === -1) this.modifierver.inc(l2)\n else {\n throw new Error(`The second tag of the level should be a modifier tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\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 Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n version = this.parseVersion(version, format, levels)\n\n const obj = (new Version(version, this.seperator)).inc(levels).asObject()\n\n return this.asString(format, obj)\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 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 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\nexport default new Calver()\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/node/es/package.json b/dist/node/es/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/dist/node/es/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/dist/node/lts/cjs/index.js b/dist/node/lts/cjs/index.js new file mode 100644 index 0000000..5341ae9 --- /dev/null +++ b/dist/node/lts/cjs/index.js @@ -0,0 +1,375 @@ +'use strict'; + +var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty'); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty); + +class DateVersion { + constructor(obj, parentSeperator) { + this['YYYY'] = null; + this['YY'] = null; + this['0Y'] = null; + this['MM'] = null; + this['0M'] = null; + this['WW'] = null; + this['0W'] = null; + this['DD'] = null; + this['0D'] = null; + this.parentSeperator = parentSeperator; + this.props = []; + this.date = new Date(Date.now()); + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this[prop] = obj[prop]; + this.props.push(prop); + } + } + + inc(level) { + const yearstr = this.date.getUTCFullYear().toString(); + this['YYYY'] = yearstr; + this['YY'] = parseInt(yearstr.slice(2)).toString(); + this['0Y'] = this['YY'].padStart(2, '0'); + const monthstr = (this.date.getUTCMonth() + 1).toString(); + this['MM'] = monthstr; + this['0M'] = this['MM'].padStart(2, '0'); + const weekstr = this.getUTCWeek(this.date).toString(); + this['WW'] = weekstr; + this['0W'] = this['WW'].padStart(2, '0'); + const daystr = this.date.getUTCDate().toString(); + this['DD'] = daystr; + this['0D'] = this['DD'].padStart(2, '0'); + return this; + } + + asObject() { + return this.props.reduce((memo, prop) => { + memo[prop] = this[prop]; + return memo; + }, {}); + } + + asString() { + const result = []; + + for (const tag of this.constructor.tags) { + if (this.props.indexOf(tag) !== -1) result.push(this[tag]); + } + + return result.join(this.parentSeperator); + } + + getUTCWeek(date) { + const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); + const daynum = d.getUTCDay() || 7; + d.setUTCDate(d.getUTCDate() + 4 - daynum); + const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); + return Math.ceil(((d - yearstart) / 86400000 + 1) / 7); + } + +} + +_defineProperty__default["default"](DateVersion, "tags", ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D']); + +class SemanticVersion { + constructor(obj, parentSeperator) { + this.MAJOR = null; + this.MINOR = null; + this.PATCH = null; + this.parentSeperator = parentSeperator; + this.props = []; + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this[prop] = obj[prop]; + this.props.push(prop); + } + } + + inc(level) { + if (this.props.indexOf(level) === -1) { + throw new Error(`[CALVER]: You have requested to increment "${level}" but your format doesn't have it.`); + } + + if (level == 'MAJOR') { + this.MAJOR = (parseInt(this.MAJOR) + 1).toString(); + if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'; + if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'; + } + + if (level == 'MINOR') { + this.MINOR = (parseInt(this.MINOR) + 1).toString(); + if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'; + } + + if (level == 'PATCH') { + this.PATCH = (parseInt(this.PATCH) + 1).toString(); + } + + return this; + } + + asObject() { + return this.props.reduce((memo, prop) => { + memo[prop] = this[prop]; + return memo; + }, {}); + } + + asString() { + const result = []; + + for (const tag of this.constructor.tags) { + if (this.props.indexOf(tag) !== -1) result.push(this[tag]); + } + + return result.join(this.parentSeperator); + } + +} + +_defineProperty__default["default"](SemanticVersion, "tags", ['MAJOR', 'MINOR', 'PATCH']); + +class ModifierVersion { + constructor(obj, parentSeperator) { + this.DEV = null; + this.ALPHA = null; + this.BETA = null; + this.RC = null; + this.parentSeperator = parentSeperator; + this.prop = null; + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this.prop = prop; + this[prop] = obj[prop]; + } + } + + inc(level) { + if (level != this.prop) { + throw new Error(`[CALVER]: You have requested to increment "${level}" but your format doesn't have it.`); + } + + this[this.prop] = (parseInt(this[this.prop]) + 1).toString(); + return this; + } + + asObject() { + const result = {}; + result[this.prop] = this[this.prop]; + return result; + } + + asString() { + return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}`; + } + +} + +_defineProperty__default["default"](ModifierVersion, "seperator", '-'); + +_defineProperty__default["default"](ModifierVersion, "tags", ['DEV', 'ALPHA', 'BETA', 'RC']); + +class Version { + constructor(version, seperator) { + this.seperator = seperator; + this.versionStringHasModifier = version.versionStringHasModifier; + this.datever = null; + this.semanticver = null; + this.modifierver = null; + this.parse(version); + } + + parse(version) { + if (Object.keys(version.calendar).length > 0) { + this.datever = new DateVersion(version.calendar, this.seperator); + } + + if (Object.keys(version.semantic).length > 0) { + this.semanticver = new SemanticVersion(version.semantic, this.seperator); + } + + if (Object.keys(version.modifier).length > 0) { + this.modifierver = new ModifierVersion(version.modifier, this.seperator); + } + } + + inc(levels) { + const l = levels[0]; + const removeModifier = levels.length === 1 && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 && this.versionStringHasModifier ? true : false; + + if (removeModifier) { + this.modifierver = null; + return this; + } + + if (l == 'CALENDAR') this.datever.inc(l); + if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l); + if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l); + + if (levels.length > 1) { + const l2 = levels[1]; + if (ModifierVersion.tags.indexOf(l2) !== -1 && ModifierVersion.tags.indexOf(l) === -1) this.modifierver.inc(l2);else { + throw new Error(`The second tag of the level should be a modifier tag. You specified "${l2}" as the second tag and "${l}" as the first tag.`); + } + } + + return this; + } + + asObject() { + const result = { + calendar: {}, + semantic: {}, + modifier: {} + }; + if (this.datever) result.calendar = this.datever.asObject(); + if (this.semanticver) result.semantic = this.semanticver.asObject(); + if (this.modifierver) result.modifier = this.modifierver.asObject(); + return result; + } + +} + +class Calver { + constructor() { + this.seperator = '.'; + this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]; + } + + inc(format, version, levels) { + levels = this.validateLevels(levels); + format = this.validateFormat(format, levels); + version = this.parseVersion(version, format, levels); + const obj = new Version(version, this.seperator).inc(levels).asObject(); + return this.asString(format, obj); + } + + getTagType(tag) { + tag = tag.toUpperCase(); + if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar'; + if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic'; + if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier'; + return undefined; + } + + asString(format, obj) { + const result = []; + + for (const tag of format.sorted) { + if (DateVersion.tags.indexOf(tag) !== -1) { + result.push(obj.calendar[tag]); + } + + if (SemanticVersion.tags.indexOf(tag) !== -1) { + result.push(obj.semantic[tag]); + } + + if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) { + result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag]); + } + } + + return result.join(this.seperator).replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator); + } + + parseVersion(version, format, levels) { + const map = { + versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version), + sorted: {}, + calendar: {}, + semantic: {}, + modifier: {} + }; + let startIndex = 0, + endIndex = 0; + + for (const tag of format.sorted) { + endIndex = version.indexOf(this.seperator, startIndex + 1); + if (endIndex === -1) endIndex = undefined; + let value = version.slice(startIndex, endIndex); + + if (value.indexOf(ModifierVersion.seperator) !== -1) { + endIndex = version.indexOf(ModifierVersion.seperator, startIndex + 1); + value = version.slice(startIndex, endIndex); + } + + if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) { + if (value.toUpperCase() != tag) value = '-1';else value = version.slice(startIndex + value.length + 1); + } + + if (isNaN(startIndex)) { + value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'; + } + + if (value == '') { + value = '0'; + } + + map.sorted[tag] = value; + if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value; + if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value; + if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value; + startIndex = endIndex + 1; + } + + return map; + } + + validateFormat(format, levels) { + const result = { + sorted: [], + calendar: [], + semantic: [], + modifier: [] + }; + const tags = format.toUpperCase().split(this.seperator); + + for (const tag of tags) { + if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag);else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag);else throw new Error(`[CALVER]: Invalid format tag "${tag}".`); + result.sorted.push(tag); + } + + for (const level of levels) { + if (ModifierVersion.tags.indexOf(level) !== -1) { + result.modifier.push(level); + result.sorted.push(level); + } + } + + return result; + } + + validateLevels(levels) { + const result = []; + const arr = levels.split('.'); + + for (const level of arr) { + const formatted = level.toUpperCase(); + + if (this.levels.indexOf(formatted) !== -1) { + result.push(formatted); + } else { + throw new Error(`[CALVER]: Invalid level "${level}".`); + } + } + + return result; + } + +} + +var index = new Calver(); + +module.exports = index; +//# sourceMappingURL=index.js.map diff --git a/dist/node/lts/cjs/index.js.map b/dist/node/lts/cjs/index.js.map new file mode 100644 index 0000000..632cd53 --- /dev/null +++ b/dist/node/lts/cjs/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/DateVersion.js","../../../../src/SemanticVersion.js","../../../../src/ModifierVersion.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 constructor(obj, parentSeperator) {\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.parentSeperator = parentSeperator\n this.props = []\n this.date = new Date(Date.now())\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const yearstr = this.date.getUTCFullYear().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.getUTCMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.getUTCWeek(this.date).toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getUTCDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n return this\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 getUTCWeek(date) {\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\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 SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n constructor(obj, parentSeperator) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n this[prop] = obj[prop]\n this.props.push(prop)\n }\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 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 constructor(obj, parentSeperator) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\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 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 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","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.datever = null\n this.semanticver = null\n this.modifierver = null\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)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator)\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 ? true : false\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 const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && \n ModifierVersion.tags.indexOf(l) === -1) this.modifierver.inc(l2)\n else {\n throw new Error(`The second tag of the level should be a modifier tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\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 Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n version = this.parseVersion(version, format, levels)\n\n const obj = (new Version(version, this.seperator)).inc(levels).asObject()\n\n return this.asString(format, obj)\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 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 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\nexport default new Calver()\n"],"names":["DateVersion","constructor","obj","parentSeperator","props","date","Date","now","parse","prop","push","inc","level","yearstr","getUTCFullYear","toString","parseInt","slice","padStart","monthstr","getUTCMonth","weekstr","getUTCWeek","daystr","getUTCDate","asObject","reduce","memo","asString","result","tag","tags","indexOf","join","d","UTC","getFullYear","getMonth","getDate","daynum","getUTCDay","setUTCDate","yearstart","Math","ceil","SemanticVersion","MAJOR","MINOR","PATCH","Error","ModifierVersion","DEV","ALPHA","BETA","RC","seperator","Version","version","versionStringHasModifier","datever","semanticver","modifierver","Object","keys","calendar","length","semantic","modifier","levels","l","removeModifier","l2","Calver","format","validateLevels","validateFormat","parseVersion","getTagType","toUpperCase","undefined","sorted","toLowerCase","replace","map","test","startIndex","endIndex","value","isNaN","split","arr","formatted"],"mappings":"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"} \ No newline at end of file diff --git a/dist/node/lts/cjs/package.json b/dist/node/lts/cjs/package.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/dist/node/lts/cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/dist/node/lts/es/index.js b/dist/node/lts/es/index.js new file mode 100644 index 0000000..722ef5b --- /dev/null +++ b/dist/node/lts/es/index.js @@ -0,0 +1,369 @@ +import _defineProperty from '@babel/runtime-corejs3/helpers/defineProperty'; + +class DateVersion { + constructor(obj, parentSeperator) { + this['YYYY'] = null; + this['YY'] = null; + this['0Y'] = null; + this['MM'] = null; + this['0M'] = null; + this['WW'] = null; + this['0W'] = null; + this['DD'] = null; + this['0D'] = null; + this.parentSeperator = parentSeperator; + this.props = []; + this.date = new Date(Date.now()); + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this[prop] = obj[prop]; + this.props.push(prop); + } + } + + inc(level) { + const yearstr = this.date.getUTCFullYear().toString(); + this['YYYY'] = yearstr; + this['YY'] = parseInt(yearstr.slice(2)).toString(); + this['0Y'] = this['YY'].padStart(2, '0'); + const monthstr = (this.date.getUTCMonth() + 1).toString(); + this['MM'] = monthstr; + this['0M'] = this['MM'].padStart(2, '0'); + const weekstr = this.getUTCWeek(this.date).toString(); + this['WW'] = weekstr; + this['0W'] = this['WW'].padStart(2, '0'); + const daystr = this.date.getUTCDate().toString(); + this['DD'] = daystr; + this['0D'] = this['DD'].padStart(2, '0'); + return this; + } + + asObject() { + return this.props.reduce((memo, prop) => { + memo[prop] = this[prop]; + return memo; + }, {}); + } + + asString() { + const result = []; + + for (const tag of this.constructor.tags) { + if (this.props.indexOf(tag) !== -1) result.push(this[tag]); + } + + return result.join(this.parentSeperator); + } + + getUTCWeek(date) { + const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); + const daynum = d.getUTCDay() || 7; + d.setUTCDate(d.getUTCDate() + 4 - daynum); + const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); + return Math.ceil(((d - yearstart) / 86400000 + 1) / 7); + } + +} + +_defineProperty(DateVersion, "tags", ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D']); + +class SemanticVersion { + constructor(obj, parentSeperator) { + this.MAJOR = null; + this.MINOR = null; + this.PATCH = null; + this.parentSeperator = parentSeperator; + this.props = []; + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this[prop] = obj[prop]; + this.props.push(prop); + } + } + + inc(level) { + if (this.props.indexOf(level) === -1) { + throw new Error(`[CALVER]: You have requested to increment "${level}" but your format doesn't have it.`); + } + + if (level == 'MAJOR') { + this.MAJOR = (parseInt(this.MAJOR) + 1).toString(); + if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0'; + if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'; + } + + if (level == 'MINOR') { + this.MINOR = (parseInt(this.MINOR) + 1).toString(); + if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0'; + } + + if (level == 'PATCH') { + this.PATCH = (parseInt(this.PATCH) + 1).toString(); + } + + return this; + } + + asObject() { + return this.props.reduce((memo, prop) => { + memo[prop] = this[prop]; + return memo; + }, {}); + } + + asString() { + const result = []; + + for (const tag of this.constructor.tags) { + if (this.props.indexOf(tag) !== -1) result.push(this[tag]); + } + + return result.join(this.parentSeperator); + } + +} + +_defineProperty(SemanticVersion, "tags", ['MAJOR', 'MINOR', 'PATCH']); + +class ModifierVersion { + constructor(obj, parentSeperator) { + this.DEV = null; + this.ALPHA = null; + this.BETA = null; + this.RC = null; + this.parentSeperator = parentSeperator; + this.prop = null; + this.parse(obj); + } + + parse(obj) { + for (const prop in obj) { + this.prop = prop; + this[prop] = obj[prop]; + } + } + + inc(level) { + if (level != this.prop) { + throw new Error(`[CALVER]: You have requested to increment "${level}" but your format doesn't have it.`); + } + + this[this.prop] = (parseInt(this[this.prop]) + 1).toString(); + return this; + } + + asObject() { + const result = {}; + result[this.prop] = this[this.prop]; + return result; + } + + asString() { + return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}`; + } + +} + +_defineProperty(ModifierVersion, "seperator", '-'); + +_defineProperty(ModifierVersion, "tags", ['DEV', 'ALPHA', 'BETA', 'RC']); + +class Version { + constructor(version, seperator) { + this.seperator = seperator; + this.versionStringHasModifier = version.versionStringHasModifier; + this.datever = null; + this.semanticver = null; + this.modifierver = null; + this.parse(version); + } + + parse(version) { + if (Object.keys(version.calendar).length > 0) { + this.datever = new DateVersion(version.calendar, this.seperator); + } + + if (Object.keys(version.semantic).length > 0) { + this.semanticver = new SemanticVersion(version.semantic, this.seperator); + } + + if (Object.keys(version.modifier).length > 0) { + this.modifierver = new ModifierVersion(version.modifier, this.seperator); + } + } + + inc(levels) { + const l = levels[0]; + const removeModifier = levels.length === 1 && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 && this.versionStringHasModifier ? true : false; + + if (removeModifier) { + this.modifierver = null; + return this; + } + + if (l == 'CALENDAR') this.datever.inc(l); + if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l); + if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l); + + if (levels.length > 1) { + const l2 = levels[1]; + if (ModifierVersion.tags.indexOf(l2) !== -1 && ModifierVersion.tags.indexOf(l) === -1) this.modifierver.inc(l2);else { + throw new Error(`The second tag of the level should be a modifier tag. You specified "${l2}" as the second tag and "${l}" as the first tag.`); + } + } + + return this; + } + + asObject() { + const result = { + calendar: {}, + semantic: {}, + modifier: {} + }; + if (this.datever) result.calendar = this.datever.asObject(); + if (this.semanticver) result.semantic = this.semanticver.asObject(); + if (this.modifierver) result.modifier = this.modifierver.asObject(); + return result; + } + +} + +class Calver { + constructor() { + this.seperator = '.'; + this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]; + } + + inc(format, version, levels) { + levels = this.validateLevels(levels); + format = this.validateFormat(format, levels); + version = this.parseVersion(version, format, levels); + const obj = new Version(version, this.seperator).inc(levels).asObject(); + return this.asString(format, obj); + } + + getTagType(tag) { + tag = tag.toUpperCase(); + if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar'; + if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic'; + if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier'; + return undefined; + } + + asString(format, obj) { + const result = []; + + for (const tag of format.sorted) { + if (DateVersion.tags.indexOf(tag) !== -1) { + result.push(obj.calendar[tag]); + } + + if (SemanticVersion.tags.indexOf(tag) !== -1) { + result.push(obj.semantic[tag]); + } + + if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) { + result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag]); + } + } + + return result.join(this.seperator).replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator); + } + + parseVersion(version, format, levels) { + const map = { + versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version), + sorted: {}, + calendar: {}, + semantic: {}, + modifier: {} + }; + let startIndex = 0, + endIndex = 0; + + for (const tag of format.sorted) { + endIndex = version.indexOf(this.seperator, startIndex + 1); + if (endIndex === -1) endIndex = undefined; + let value = version.slice(startIndex, endIndex); + + if (value.indexOf(ModifierVersion.seperator) !== -1) { + endIndex = version.indexOf(ModifierVersion.seperator, startIndex + 1); + value = version.slice(startIndex, endIndex); + } + + if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) { + if (value.toUpperCase() != tag) value = '-1';else value = version.slice(startIndex + value.length + 1); + } + + if (isNaN(startIndex)) { + value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0'; + } + + if (value == '') { + value = '0'; + } + + map.sorted[tag] = value; + if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value; + if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value; + if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value; + startIndex = endIndex + 1; + } + + return map; + } + + validateFormat(format, levels) { + const result = { + sorted: [], + calendar: [], + semantic: [], + modifier: [] + }; + const tags = format.toUpperCase().split(this.seperator); + + for (const tag of tags) { + if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag);else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag);else throw new Error(`[CALVER]: Invalid format tag "${tag}".`); + result.sorted.push(tag); + } + + for (const level of levels) { + if (ModifierVersion.tags.indexOf(level) !== -1) { + result.modifier.push(level); + result.sorted.push(level); + } + } + + return result; + } + + validateLevels(levels) { + const result = []; + const arr = levels.split('.'); + + for (const level of arr) { + const formatted = level.toUpperCase(); + + if (this.levels.indexOf(formatted) !== -1) { + result.push(formatted); + } else { + throw new Error(`[CALVER]: Invalid level "${level}".`); + } + } + + return result; + } + +} + +var index = new Calver(); + +export { index as default }; +//# sourceMappingURL=index.js.map diff --git a/dist/node/lts/es/index.js.map b/dist/node/lts/es/index.js.map new file mode 100644 index 0000000..cdeb3fc --- /dev/null +++ b/dist/node/lts/es/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../../../src/DateVersion.js","../../../../src/SemanticVersion.js","../../../../src/ModifierVersion.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 constructor(obj, parentSeperator) {\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.parentSeperator = parentSeperator\n this.props = []\n this.date = new Date(Date.now())\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n this[prop] = obj[prop]\n this.props.push(prop)\n }\n }\n\n inc(level) {\n const yearstr = this.date.getUTCFullYear().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.getUTCMonth() + 1).toString()\n this['MM'] = monthstr\n this['0M'] = this['MM'].padStart(2, '0')\n\n const weekstr = this.getUTCWeek(this.date).toString()\n this['WW'] = weekstr\n this['0W'] = this['WW'].padStart(2, '0')\n\n const daystr = this.date.getUTCDate().toString()\n this['DD'] = daystr\n this['0D'] = this['DD'].padStart(2, '0')\n\n return this\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 getUTCWeek(date) {\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\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 SemanticVersion {\n static tags = ['MAJOR', 'MINOR', 'PATCH']\n\n constructor(obj, parentSeperator) {\n this.MAJOR = null\n this.MINOR = null\n this.PATCH = null\n\n this.parentSeperator = parentSeperator\n this.props = []\n\n this.parse(obj)\n }\n\n parse(obj) {\n for (const prop in obj) {\n this[prop] = obj[prop]\n this.props.push(prop)\n }\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 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 constructor(obj, parentSeperator) {\n this.DEV = null\n this.ALPHA = null\n this.BETA = null\n this.RC = null\n\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 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 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","import DateVersion from './DateVersion.js'\nimport SemanticVersion from './SemanticVersion.js'\nimport ModifierVersion from './ModifierVersion.js'\n\nexport default class Version {\n constructor(version, seperator) {\n this.seperator = seperator\n this.versionStringHasModifier = version.versionStringHasModifier\n this.datever = null\n this.semanticver = null\n this.modifierver = null\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)\n }\n\n if (Object.keys(version.semantic).length > 0) {\n this.semanticver = new SemanticVersion(version.semantic, this.seperator)\n }\n\n if (Object.keys(version.modifier).length > 0) {\n this.modifierver = new ModifierVersion(version.modifier, this.seperator)\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 ? true : false\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 const l2 = levels[1]\n\n if (ModifierVersion.tags.indexOf(l2) !== -1 && \n ModifierVersion.tags.indexOf(l) === -1) this.modifierver.inc(l2)\n else {\n throw new Error(`The second tag of the level should be a modifier tag. You specified \"${l2}\" as the second tag and \"${l}\" as the first tag.`)\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 Version from './Version.js'\n\nclass Calver {\n constructor() {\n this.seperator = '.'\n this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags]\n }\n\n inc(format, version, levels) {\n levels = this.validateLevels(levels)\n format = this.validateFormat(format, levels)\n version = this.parseVersion(version, format, levels)\n\n const obj = (new Version(version, this.seperator)).inc(levels).asObject()\n\n return this.asString(format, obj)\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 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 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\nexport default new Calver()\n"],"names":["DateVersion","constructor","obj","parentSeperator","props","date","Date","now","parse","prop","push","inc","level","yearstr","getUTCFullYear","toString","parseInt","slice","padStart","monthstr","getUTCMonth","weekstr","getUTCWeek","daystr","getUTCDate","asObject","reduce","memo","asString","result","tag","tags","indexOf","join","d","UTC","getFullYear","getMonth","getDate","daynum","getUTCDay","setUTCDate","yearstart","Math","ceil","SemanticVersion","MAJOR","MINOR","PATCH","Error","ModifierVersion","DEV","ALPHA","BETA","RC","seperator","Version","version","versionStringHasModifier","datever","semanticver","modifierver","Object","keys","calendar","length","semantic","modifier","levels","l","removeModifier","l2","Calver","format","validateLevels","validateFormat","parseVersion","getTagType","toUpperCase","undefined","sorted","toLowerCase","replace","map","test","startIndex","endIndex","value","isNaN","split","arr","formatted"],"mappings":"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"} \ No newline at end of file diff --git a/dist/node/lts/es/package.json b/dist/node/lts/es/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/dist/node/lts/es/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/package-lock.json b/package-lock.json index 24329f1..daf56c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22 +1,4181 @@ { "name": "calver", - "version": "21.1.4", - "lockfileVersion": 1, + "version": "21.1.5", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "calver", + "version": "21.1.5", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.15.4", + "@babel/runtime-corejs3": "^7.15.4" + }, + "devDependencies": { + "@babel/cli": "^7.15.7", + "@babel/core": "^7.15.5", + "@babel/plugin-transform-runtime": "^7.15.0", + "@babel/preset-env": "^7.15.6", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^13.0.5", + "core-js": "^3.18.3", + "rollup": "^2.57.0", + "rollup-plugin-terser": "^7.0.2" + }, + "funding": { + "type": "ko-fi", + "url": "https://ko-fi.com/muratgozel" + } + }, + "node_modules/@babel/cli": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", + "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", + "dev": true, + "dependencies": { + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "optionalDependencies": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", + "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz", + "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "regexpu-core": "^4.7.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz", + "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz", + "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz", + "integrity": "sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.0.tgz", + "integrity": "sha512-XgnQEm1CevKROPx+udOi/8f8TiGhrUWiHiaUCIp47tE0tpFDjzXNTZc9E5CmCwxNjXTWEVqvRfWZYOTFvMa/ZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.0.tgz", + "integrity": "sha512-zlPf1/XFn5+vWdve3AAhf+Sxl+MVa5VlwTwWgnLx23u4GlatSRQJ3Eoo9vllf0a9il3woQsT4SK+5Z7c06h8ag==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.3", + "babel-plugin-polyfill-corejs3": "^0.3.0", + "babel-plugin-polyfill-regenerator": "^0.2.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.0.tgz", + "integrity": "sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.0", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.2.3", + "babel-plugin-polyfill-corejs3": "^0.3.0", + "babel-plugin-polyfill-regenerator": "^0.2.3", + "core-js-compat": "^3.19.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.0.tgz", + "integrity": "sha512-Oi2qwQ21X7/d9gn3WiwkDTJmq3TQtYNz89lRnoFy8VeZpWlsyXvzSwiRrRZ8cXluvSwqKxqHJ6dBd9Rv+p0ZGQ==", + "dependencies": { + "core-js-pure": "^3.19.0", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "dev": true, + "optional": true + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.0.8" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^2.42.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "optional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", + "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.4", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz", + "integrity": "sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.4", + "core-js-compat": "^3.18.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz", + "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001276", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001276.tgz", + "integrity": "sha512-psUNoaG1ilknZPxi8HuhQWobuhLqtYSRUxplfVkEJdgZNB9TETVYGSBtv4YyfAdGvE6gn2eb0ztiXqHoWJcGnw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz", + "integrity": "sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", + "dev": true, + "dependencies": { + "browserslist": "^4.17.6", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-js-pure": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz", + "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.888", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.888.tgz", + "integrity": "sha512-5iD1zgyPpFER4kJ716VsA4MxQ6x405dxdFNCEK2mITL075VHO5ResjY0xzQUZguCww/KlBxCA6JmBA9sDt1PRw==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/terser": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "@babel/cli": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", + "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", + "dev": true, + "requires": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.4.0", + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + } + }, + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/compat-data": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", + "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", + "dev": true + }, + "@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz", + "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz", + "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz", + "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helpers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", + "dev": true, + "requires": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz", + "integrity": "sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.0.tgz", + "integrity": "sha512-XgnQEm1CevKROPx+udOi/8f8TiGhrUWiHiaUCIp47tE0tpFDjzXNTZc9E5CmCwxNjXTWEVqvRfWZYOTFvMa/ZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.0.tgz", + "integrity": "sha512-zlPf1/XFn5+vWdve3AAhf+Sxl+MVa5VlwTwWgnLx23u4GlatSRQJ3Eoo9vllf0a9il3woQsT4SK+5Z7c06h8ag==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.3", + "babel-plugin-polyfill-corejs3": "^0.3.0", + "babel-plugin-polyfill-regenerator": "^0.2.3", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/preset-env": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.0.tgz", + "integrity": "sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.0", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.2.3", + "babel-plugin-polyfill-corejs3": "^0.3.0", + "babel-plugin-polyfill-regenerator": "^0.2.3", + "core-js-compat": "^3.19.0", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.0.tgz", + "integrity": "sha512-Oi2qwQ21X7/d9gn3WiwkDTJmq3TQtYNz89lRnoFy8VeZpWlsyXvzSwiRrRZ8cXluvSwqKxqHJ6dBd9Rv+p0ZGQ==", + "requires": { + "core-js-pure": "^3.19.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, + "@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "dev": true, + "optional": true + }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + } + }, + "@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/plugin-node-resolve": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/node": { + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", "dev": true }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", + "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.4", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz", + "integrity": "sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.4", + "core-js-compat": "^3.18.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz", + "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.4" } }, "balanced-match": { @@ -25,6 +4184,13 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "optional": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -35,36 +4201,110 @@ "concat-map": "0.0.1" } }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caniuse-lite": { + "version": "1.0.30001276", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001276.tgz", + "integrity": "sha512-psUNoaG1ilknZPxi8HuhQWobuhLqtYSRUxplfVkEJdgZNB9TETVYGSBtv4YyfAdGvE6gn2eb0ztiXqHoWJcGnw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, + "optional": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" } }, "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "concat-map": { @@ -73,10 +4313,72 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-js": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz", + "integrity": "sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==", + "dev": true + }, + "core-js-compat": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", + "dev": true, + "requires": { + "browserslist": "^4.17.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz", + "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==" + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "electron-to-chromium": { + "version": "1.3.888", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.888.tgz", + "integrity": "sha512-5iD1zgyPpFER4kJ716VsA4MxQ6x405dxdFNCEK2mITL075VHO5ResjY0xzQUZguCww/KlBxCA6JmBA9sDt1PRw==", "dev": true }, "escalade": { @@ -85,22 +4387,80 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -111,6 +4471,43 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -127,26 +4524,150 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "optional": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, - "jasmine": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.7.0.tgz", - "integrity": "sha512-wlzGQ+cIFzMEsI+wDqmOwvnjTvolLFwlcpYLCqSPPH0prOQaW3P+IzMhHYn934l1imNvw07oCyX+vGUv3wmtSQ==", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "glob": "^7.1.6", - "jasmine-core": "~3.7.0" + "@types/estree": "*" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "jasmine-core": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.7.1.tgz", - "integrity": "sha512-DH3oYDS/AUvvr22+xUBW62m1Xoy7tUlY1tsxKEJvl5JeJ7q8zd1K5bUwiOxdH+erj6l2vAMM3hV25Xs9/WrmuQ==", + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, "minimatch": { @@ -158,6 +4679,49 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -173,74 +4737,285 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "safe-buffer": "^5.1.0" } }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "optional": true, "requires": { - "ansi-regex": "^5.0.0" + "picomatch": "^2.2.1" } }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "regenerate": "^1.4.2" } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "rollup": { + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "randombytes": "^2.1.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "terser": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true } } diff --git a/package.json b/package.json index 3a2f2d2..2582a49 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,23 @@ { "name": "calver", - "version": "21.1.5", - "description": "The calver parser for node. Because we love calendar versioning! πŸ’™πŸŽˆ", - "main": "src/index.js", + "version": "21.11.0", + "description": "The calver parser for node. πŸ“† πŸš€", + "main": "./dist/node/lts/cjs/index.js", + "module": "./dist/node/lts/es/index.js", + "type": "module", "scripts": { - "test": "NODE_ENV=test jasmine", - "commit": "node dev/commit.js commit" + "test": "for i in tests/*.js; do node \"$i\"; done", + "build": "rollup --config rollup.config.js" + }, + "exports": { + ".": { + "import": "./dist/node/es/index.js", + "require": "./dist/node/cjs/index.js" + }, + "./node/lts": { + "import": "./dist/node/lts/es/index.js", + "require": "./dist/node/lts/cjs/index.js" + } }, "repository": { "type": "git", @@ -20,15 +32,35 @@ "versioning", "versioning" ], - "author": "Murat GΓΆzel ", + "author": { + "name": "Murat GΓΆzel", + "email": "murat@gozel.com.tr", + "url": "https://gozel.com.tr" + }, + "funding": { + "type": "ko-fi", + "url": "https://ko-fi.com/muratgozel" + }, "license": "MIT", "bugs": { "url": "https://github.com/muratgozel/node-calver/issues" }, "homepage": "https://github.com/muratgozel/node-calver#readme", "devDependencies": { - "colors": "^1.4.0", - "jasmine": "^3.7.0", - "yargs": "^16.2.0" + "@babel/cli": "^7.15.7", + "@babel/core": "^7.15.5", + "@babel/plugin-transform-runtime": "^7.15.0", + "@babel/preset-env": "^7.15.6", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^13.0.5", + "core-js": "^3.18.3", + "rollup": "^2.57.0", + "rollup-plugin-terser": "^7.0.2" + }, + "dependencies": { + "@babel/runtime": "^7.15.4", + "@babel/runtime-corejs3": "^7.15.4" } } \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..95a910b --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,76 @@ +const {nodeResolve} = require('@rollup/plugin-node-resolve') +const commonjs = require('@rollup/plugin-commonjs') +const {babel} = require('@rollup/plugin-babel') +const {terser} = require('rollup-plugin-terser') +const json = require('@rollup/plugin-json') + +const babelPlugins=[] + +babelPlugins.push(['@babel/plugin-transform-runtime', { + corejs: {version: 3, proposals: true}, + helpers: true, + regenerator: true, + absoluteRuntime: false +}]) + +const externals = [ + /@babel\/runtime/, /core-js/ +] + +module.exports = [ + { + external: externals, + input: 'src/index.js', + output: [ + { + format: 'cjs', + file: 'dist/node/lts/cjs/index.js', + sourcemap: true + }, + { + format: 'es', + file: 'dist/node/lts/es/index.js', + sourcemap: true + } + ], + plugins: [ + nodeResolve({preferBuiltins: true}), + commonjs({sourceMap: true}), + json(), + babel({ + babelHelpers: 'runtime', + babelrc: false, + exclude: ['node_modules/**'], + presets: [ + ['@babel/env', { + useBuiltIns: 'usage', + corejs: {version: 3, proposals: true}, + debug: false + }] + ], + plugins: babelPlugins + }) + ] + }, + { + external: externals, + input: 'src/index.js', + output: [ + { + format: 'cjs', + file: 'dist/node/cjs/index.js', + sourcemap: true + }, + { + format: 'es', + file: 'dist/node/es/index.js', + sourcemap: true + } + ], + plugins: [ + nodeResolve({preferBuiltins: true}), + commonjs({sourceMap: true}), + json() + ] + } +] diff --git a/spec/functional/simple.spec.js b/spec/functional/simple.spec.js deleted file mode 100644 index 74bf68e..0000000 --- a/spec/functional/simple.spec.js +++ /dev/null @@ -1,58 +0,0 @@ -describe('Simple app', function() { - const format = 'yy.mm.minor.micro.modifier' - const format2 = 'yy.mm.micro' - const format3 = 'yy.mm.micro' - - it('creates its initial version.', function() { - expect(calver.init(format)).toBe('21.1.0.0') - expect(calver.init(format2)).toBe('21.1.0') - }) - - it('increments dev tag two times', function() { - expect(calver.inc(format, '21.1.0.0', 'dev')).toBe('21.1.0.0-dev.1') - expect(calver.inc(format, '21.1.0.0-dev.1', 'dev')).toBe('21.1.0.0-dev.2') - }) - - it('goes alpha', function() { - expect(calver.inc(format, '21.1.0.0-dev.2', 'alpha')).toBe('21.1.0.0-alpha.1') - }) - - it('goes beta and rc', function() { - expect(calver.inc(format, '21.1.0.0-alpha.0', 'beta')).toBe('21.1.0.0-beta.1') - expect(calver.inc(format, '21.1.0.0-beta.0', 'rc')).toBe('21.1.0.0-rc.1') - expect(calver.inc(format, '21.1.0.0-rc.0', 'rc')).toBe('21.1.0.0-rc.1') - expect(calver.inc(format, '21.1.0.0-rc.1', 'rc')).toBe('21.1.0.0-rc.2') - expect(calver.inc(format, '21.1.0.0-rc.2', 'rc')).toBe('21.1.0.0-rc.3') - expect(calver.inc(format, '21.1.0.0-rc.3', 'rc')).toBe('21.1.0.0-rc.4') - }) - - it('first production release', function() { - expect(calver.inc(format, '21.1.0.0-rc.4', 'minor')).toBe('21.1.1.0') - }) - - it('releases some bug fixes', function() { - expect(calver.inc(format, '21.1.1.0', 'micro')).toBe('21.1.1.1') - expect(calver.inc(format, '21.1.1.1', 'micro')).toBe('21.1.1.2') - expect(calver.inc(format, '21.1.1.2', 'micro')).toBe('21.1.1.3') - expect(calver.inc(format, '21.1.1.3', 'micro')).toBe('21.1.1.4') - - expect(calver.inc(format2, '21.1.0', 'micro')).toBe('21.1.1') - expect(calver.inc(format2, '21.1.1', 'micro')).toBe('21.1.2') - expect(calver.inc(format2, '21.1.2', 'micro')).toBe('21.1.3') - - expect(calver.inc(format3, '20.9.2', 'micro')).toBe('20.9.3') - expect(calver.inc(format3, '20.9.3', 'micro')).toBe('20.9.4') - }) - - it('added some new features', function() { - expect(calver.inc(format, '21.1.1.4', 'minor')).toBe('21.1.2.0') - }) - - it('decided to make a calendar release', function() { - expect(calver.inc(format, '20.1.2.0', 'calendar.dev')).toBe('21.1.0.0-dev.1') - - expect(calver.inc(format3, '20.9.4', 'calendar.micro')).toBe('21.1.0') - expect(calver.inc(format3, '21.1.0', 'calendar.micro')).toBe('21.1.1') - expect(calver.inc(format3, '21.1.1', 'calendar.micro')).toBe('21.1.2') - }) -}) diff --git a/spec/helpers/calver.js b/spec/helpers/calver.js deleted file mode 100644 index af52c9c..0000000 --- a/spec/helpers/calver.js +++ /dev/null @@ -1,7 +0,0 @@ -// fixed current time stamp in test environment. -// 1611069856248: 19 Jan 2021 -Date.now = function now() { - return 1611069856248; -} - -global.calver = require('../../src') diff --git a/spec/support/jasmine.json b/spec/support/jasmine.json deleted file mode 100644 index 370fc44..0000000 --- a/spec/support/jasmine.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "spec_dir": "spec", - "spec_files": [ - "**/*[sS]pec.js" - ], - "helpers": [ - "helpers/**/*.js" - ], - "stopSpecOnExpectationFailure": false, - "random": true -} diff --git a/spec/unit/getTagType.spec.js b/spec/unit/getTagType.spec.js deleted file mode 100644 index 9a1dca4..0000000 --- a/spec/unit/getTagType.spec.js +++ /dev/null @@ -1,9 +0,0 @@ -describe('getTagType', function() { - it('Returns the type of the tag. It is one of date, semantic or modifier', function() { - expect(calver.getTagType('mm')).toBe('date') - expect(calver.getTagType('MM')).toBe('date') - expect(calver.getTagType('micro')).toBe('semantic') - expect(calver.getTagType('dev')).toBe('modifier') - expect(calver.getTagType('asd')).toBe('') - }) -}) diff --git a/spec/unit/inc.spec.js b/spec/unit/inc.spec.js deleted file mode 100644 index 62b02f5..0000000 --- a/spec/unit/inc.spec.js +++ /dev/null @@ -1,59 +0,0 @@ -describe('inc', function() { - it('throws if arguments doesn\'t satisfy each other.', function() { - expect(() => calver.inc()).toThrow() - expect(() => calver.inc('yyyy')).toThrow() - expect(() => calver.inc('yyyy', '2021')).toThrow() - expect(() => calver.inc('yyyy', '2021', 'minor')).toThrow() - expect(() => calver.inc('yyyy.minor.mm', '2021.5.5', 'minor')).toThrow() - expect(() => calver.inc('yyyy.mm.minor', '2021.5', 'minor')).toThrow() - expect(() => calver.inc('yyyy.mm.minor.modifier', '2021.5-alpha.1', 'minor')).toThrow() - }) - - it('date tags.', function() { - expect(calver.inc('yyyy', '2020', 'calendar')).toBe('2021') - expect(calver.inc('yyyy.0m', '2020.02', 'calendar')).toBe('2021.01') - expect(calver.inc('yyyy.mm', '2020.2', 'calendar')).toBe('2021.1') - expect(calver.inc('yy.mm.ww.dd', '20.2.7.22', 'calendar')).toBe('21.1.3.19') - expect(() => calver.inc('yy.mm.dd', '21.1.19', 'calendar')).toThrow() - }) - - it('semantic tags.', function() { - expect(calver.inc('minor', '4', 'minor')).toBe('5') - expect(calver.inc('major.minor', '4.3', 'minor')).toBe('4.4') - expect(calver.inc('major.minor.micro', '1.2.3', 'micro')).toBe('1.2.4') - expect(calver.inc('major.minor.micro', '1.2.3', 'minor')).toBe('1.3.0') - expect(calver.inc('major.minor.micro', '1.2.3', 'major')).toBe('2.0.0') - }) - - it('calver.', function() { - expect(calver.inc('yy.mm.major.minor.micro', '20.4.1.2.3', 'micro')).toBe('20.4.1.2.4') - expect(calver.inc('yy.mm.major.minor.micro', '20.4.1.2.3', 'minor')).toBe('20.4.1.3.0') - expect(calver.inc('yy.mm.major.minor.micro', '20.4.1.2.3', 'major')).toBe('20.4.2.0.0') - expect(calver.inc('yy.mm.major.minor.micro', '20.4.1.2.3', 'calendar')).toBe('21.1.0.0.0') - expect(calver.inc('yy.0m.dd.minor.micro', '20.04.19.1.2', 'calendar')).toBe('21.01.19.0.0') - expect(() => calver.inc('yy.0m.dd.minor.micro', '21.01.19.0.0', 'calendar')).toThrow() - }) - - it('modifier tags.', function() { - expect(calver.inc('yy.mm.minor.micro.modifier', '20.4.1.2-alpha.0', 'alpha')).toBe('20.4.1.2-alpha.1') - expect(calver.inc('yy.mm.minor.micro.modifier', '20.4.1.2-alpha.1', 'minor')).toBe('20.4.2.0') - expect(calver.inc('yy.mm.minor.micro.modifier', '20.4.2.0', 'alpha')).toBe('20.4.2.0-alpha.1') - expect(calver.inc('yy.mm.minor.micro.modifier', '20.4.2.0-alpha.0', 'alpha')).toBe('20.4.2.0-alpha.1') - expect(calver.inc('yy.mm.minor.micro.modifier', '20.4.2.0-alpha.1', 'beta')).toBe('20.4.2.0-beta.1') - expect(calver.inc('yy.mm.minor.micro.modifier', '20.4.2.0', 'beta')).toBe('20.4.2.0-beta.1') - }) - - it('semantic + modifier tags.', function() { - expect(calver.inc('yy.mm.minor.micro.modifier', '21.1.1.0', 'minor.beta')).toBe('21.1.2.0-beta.1') - }) - - it('date + modifier tags.', function() { - expect(calver.inc('yy.mm.minor.micro.modifier', '19.1.1.0', 'calendar.beta')).toBe('21.1.0.0-beta.1') - expect(calver.inc('yy.mm.minor.micro.modifier', '20.4.1.2-alpha.1', 'calendar.alpha')).toBe('21.1.0.0-alpha.1') - expect(calver.inc('yy.mm.minor.micro.modifier', '20.4.1.2-alpha.1', 'micro.alpha')).toBe('20.4.1.3-alpha.1') - expect(calver.inc('yy.mm.micro', '20.4.1', 'calendar.micro')).toBe('21.1.0') - expect(calver.inc('yy.mm.micro.modifier', '20.4.1-dev.3', 'calendar.micro')).toBe('21.1.0') - expect(calver.inc('yy.mm.micro', '21.1.0', 'calendar.micro')).toBe('21.1.1') - expect(calver.inc('yy.mm.micro', '21.1.3', 'calendar.micro')).toBe('21.1.4') - }) -}) diff --git a/spec/unit/init.spec.js b/spec/unit/init.spec.js deleted file mode 100644 index 967c28a..0000000 --- a/spec/unit/init.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -describe('init', function() { - it('creates initial calver versions', function() { - expect(calver.init('yy')).toBe('21') - expect(calver.init('yyyy.mm.micro')).toBe('2021.1.0') - expect(calver.init('yyyy.mm.minor.micro')).toBe('2021.1.0.0') - expect(calver.init('minor.micro')).toBe('1.0') - expect(calver.init('major.minor.micro')).toBe('1.0.0') - expect(calver.init('major.minor.micro.dev')).toBe('1.0.0-dev.1') - expect(calver.init('yy.mm.minor.micro.alpha')).toBe('21.1.0.0-alpha.1') - expect(calver.init('yy.mm.minor.micro.modifier')).toBe('21.1.0.0') - }) -}) diff --git a/spec/unit/pretty.spec.js b/spec/unit/pretty.spec.js deleted file mode 100644 index 42f5b50..0000000 --- a/spec/unit/pretty.spec.js +++ /dev/null @@ -1,16 +0,0 @@ -describe('pretty', function() { - it('shows version in a localized format.', function() { - //'March 2021 #24' - expect(calver.pretty('yyyy.mm.micro', '2021.3.24')).toBe('March 2021 v24') - expect(calver.pretty('yyyy.mm.micro', '2021.3.24', 'tr')).toBe('Mart 2021 v24') - expect(calver.pretty('yy.mm.micro', '21.3.24')).toBe('March 2021 v24') - expect(calver.pretty('yy.mm.micro', '21.3.24', 'tr')).toBe('Mart 2021 v24') - expect(calver.pretty('yy.mm.micro', '21.3.1', 'tr')).toBe('Mart 2021 v1') - expect(calver.pretty('yy.mm.micro', '21.3.1', 'en')).toBe('March 2021 v1') - expect(calver.pretty('yy.mm.minor.micro', '21.3.4.2', 'en')).toBe('March 2021 v4.2') - expect(calver.pretty('yy.mm.major.minor.micro', '21.3.6.4.2', 'en')).toBe('March 2021 v6.4.2') - expect(calver.pretty('yy.mm.micro.dev', '21.3.4-dev.2', 'en')).toBe('March 2021 v4-dev.2') - expect(calver.pretty('yy.mm.micro.modifier', '21.3.4-alpha.1', 'en')).toBe('March 2021 v4-alpha.1') - expect(calver.pretty('yy.mm.micro.modifier', '21.3.4', 'en')).toBe('March 2021 v4') - }) -}) diff --git a/spec/unit/valid.spec.js b/spec/unit/valid.spec.js deleted file mode 100644 index fa4ca68..0000000 --- a/spec/unit/valid.spec.js +++ /dev/null @@ -1,7 +0,0 @@ -describe('validate', function() { - it('format and version strings.', function() { - expect(() => calver.valid('yyyy', '20')).toThrow() - expect(() => calver.valid('yy.mm', '22')).toThrow() - expect(() => calver.valid('yyyy.mm.minor.modifier', '2021.5-alpha.1')).toThrow() - }) -}) diff --git a/src/DateVersion.js b/src/DateVersion.js new file mode 100644 index 0000000..5e6ca36 --- /dev/null +++ b/src/DateVersion.js @@ -0,0 +1,75 @@ +export default class DateVersion { + static tags = ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D'] + + constructor(obj, parentSeperator) { + this['YYYY'] = null + this['YY'] = null + this['0Y'] = null + this['MM'] = null + this['0M'] = null + this['WW'] = null + this['0W'] = null + this['DD'] = null + this['0D'] = null + + this.parentSeperator = parentSeperator + this.props = [] + this.date = new Date(Date.now()) + + this.parse(obj) + } + + parse(obj) { + for (const prop in obj) { + this[prop] = obj[prop] + this.props.push(prop) + } + } + + inc(level) { + const yearstr = this.date.getUTCFullYear().toString() + this['YYYY'] = yearstr + this['YY'] = parseInt(yearstr.slice(2)).toString() + this['0Y'] = this['YY'].padStart(2, '0') + + const monthstr = (this.date.getUTCMonth() + 1).toString() + this['MM'] = monthstr + this['0M'] = this['MM'].padStart(2, '0') + + const weekstr = this.getUTCWeek(this.date).toString() + this['WW'] = weekstr + this['0W'] = this['WW'].padStart(2, '0') + + const daystr = this.date.getUTCDate().toString() + this['DD'] = daystr + this['0D'] = this['DD'].padStart(2, '0') + + return this + } + + asObject() { + return this.props.reduce((memo, prop) => { + memo[prop] = this[prop] + return memo + }, {}) + } + + asString() { + const result = [] + for (const tag of this.constructor.tags) { + if (this.props.indexOf(tag) !== -1) result.push(this[tag]) + } + return result.join(this.parentSeperator) + } + + getUTCWeek(date) { + const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())) + const daynum = d.getUTCDay() || 7 + + d.setUTCDate(d.getUTCDate() + 4 - daynum) + + const yearstart = new Date( Date.UTC(d.getUTCFullYear(), 0, 1) ) + + return Math.ceil((((d - yearstart) / 86400000) + 1)/7) + } +} diff --git a/src/ModifierVersion.js b/src/ModifierVersion.js new file mode 100644 index 0000000..31d9db2 --- /dev/null +++ b/src/ModifierVersion.js @@ -0,0 +1,43 @@ +export default class ModifierVersion { + static seperator = '-' + static tags = ['DEV', 'ALPHA', 'BETA', 'RC'] + + constructor(obj, parentSeperator) { + this.DEV = null + this.ALPHA = null + this.BETA = null + this.RC = null + + this.parentSeperator = parentSeperator + this.prop = null + + this.parse(obj) + } + + parse(obj) { + for (const prop in obj) { + this.prop = prop + this[prop] = obj[prop] + } + } + + inc(level) { + if (level != this.prop) { + throw new Error(`[CALVER]: You have requested to increment "${level}" but your format doesn't have it.`) + } + + this[this.prop] = (parseInt(this[this.prop]) + 1).toString() + + return this + } + + asObject() { + const result = {} + result[this.prop] = this[this.prop] + return result + } + + asString() { + return `${this.constructor.seperator}${this.prop}${this.parentSeperator}${this[this.prop]}` + } +} diff --git a/src/SemanticVersion.js b/src/SemanticVersion.js new file mode 100644 index 0000000..badd679 --- /dev/null +++ b/src/SemanticVersion.js @@ -0,0 +1,59 @@ +export default class SemanticVersion { + static tags = ['MAJOR', 'MINOR', 'PATCH'] + + constructor(obj, parentSeperator) { + this.MAJOR = null + this.MINOR = null + this.PATCH = null + + this.parentSeperator = parentSeperator + this.props = [] + + this.parse(obj) + } + + parse(obj) { + for (const prop in obj) { + this[prop] = obj[prop] + this.props.push(prop) + } + } + + inc(level) { + if (this.props.indexOf(level) === -1) { + throw new Error(`[CALVER]: You have requested to increment "${level}" but your format doesn't have it.`) + } + + if (level == 'MAJOR') { + this.MAJOR = (parseInt(this.MAJOR) + 1).toString() + if (this.props.indexOf('MINOR') !== -1) this.MINOR = '0' + if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0' + } + + if (level == 'MINOR') { + this.MINOR = (parseInt(this.MINOR) + 1).toString() + if (this.props.indexOf('PATCH') !== -1) this.PATCH = '0' + } + + if (level == 'PATCH') { + this.PATCH = (parseInt(this.PATCH) + 1).toString() + } + + return this + } + + asObject() { + return this.props.reduce((memo, prop) => { + memo[prop] = this[prop] + return memo + }, {}) + } + + asString() { + const result = [] + for (const tag of this.constructor.tags) { + if (this.props.indexOf(tag) !== -1) result.push(this[tag]) + } + return result.join(this.parentSeperator) + } +} diff --git a/src/Version.js b/src/Version.js new file mode 100644 index 0000000..1aeb2b9 --- /dev/null +++ b/src/Version.js @@ -0,0 +1,72 @@ +import DateVersion from './DateVersion.js' +import SemanticVersion from './SemanticVersion.js' +import ModifierVersion from './ModifierVersion.js' + +export default class Version { + constructor(version, seperator) { + this.seperator = seperator + this.versionStringHasModifier = version.versionStringHasModifier + this.datever = null + this.semanticver = null + this.modifierver = null + + this.parse(version) + } + + parse(version) { + if (Object.keys(version.calendar).length > 0) { + this.datever = new DateVersion(version.calendar, this.seperator) + } + + if (Object.keys(version.semantic).length > 0) { + this.semanticver = new SemanticVersion(version.semantic, this.seperator) + } + + if (Object.keys(version.modifier).length > 0) { + this.modifierver = new ModifierVersion(version.modifier, this.seperator) + } + } + + inc(levels) { + const l = levels[0] + + const removeModifier = levels.length === 1 + && ['MAJOR', 'MINOR', 'PATCH', 'CALENDAR'].indexOf(l) !== -1 + && this.versionStringHasModifier ? true : false + if (removeModifier) { + this.modifierver = null + + return this + } + + if (l == 'CALENDAR') this.datever.inc(l) + if (SemanticVersion.tags.indexOf(l) !== -1) this.semanticver.inc(l) + if (ModifierVersion.tags.indexOf(l) !== -1) this.modifierver.inc(l) + + if (levels.length > 1) { + const l2 = levels[1] + + if (ModifierVersion.tags.indexOf(l2) !== -1 && + ModifierVersion.tags.indexOf(l) === -1) this.modifierver.inc(l2) + else { + throw new Error(`The second tag of the level should be a modifier tag. You specified "${l2}" as the second tag and "${l}" as the first tag.`) + } + } + + return this + } + + asObject() { + const result = { + calendar: {}, + semantic: {}, + modifier: {} + } + + if (this.datever) result.calendar = this.datever.asObject() + if (this.semanticver) result.semantic = this.semanticver.asObject() + if (this.modifierver) result.modifier = this.modifierver.asObject() + + return result + } +} diff --git a/src/domain/datever.js b/src/domain/datever.js deleted file mode 100644 index 1551c1a..0000000 --- a/src/domain/datever.js +++ /dev/null @@ -1,124 +0,0 @@ -module.exports = function createDateVersion(format, ver, now, alltags) { - const tags = format.split('.').filter(f => alltags.date.indexOf(f) !== -1) - const verarr = ver.length > 0 ? ver.split(/[.-]/) : [] - - const months = Array(12).fill(1).map((item, i) => (i + 1).toString()) - const monthsz = Array(12).fill(1).map((item, i) => (i > 8 ? '' : '0') + (i + 1)) - const weeks = Array(52).fill(1).map((item, i) => (i + 1).toString()) - const weeksz = Array(52).fill(1).map((item, i) => (i > 8 ? '' : '0') + (i + 1)) - const days = Array(31).fill(1).map((item, i) => (i + 1).toString()) - const daysz = Array(31).fill(1).map((item, i) => (i > 8 ? '' : '0') + (i + 1)) - - let dateversion = {} - if (verarr.length > 0) { - for (let i = 0; i < tags.length; i++) { - const t = tags[i] - const v = verarr[i] - validate(t, v) - dateversion[t] = v - } - } - - function validate(t, v) { - if (t == 'YYYY' && /^[0-9]{4}$/.test(v) !== true) throw new Error('Invalid year.') - if (t == 'YY' && /^[0-9]{1,3}$/.test(v) !== true) throw new Error('Invalid year.') - if (t == '0Y' && /^[0-9]{2,3}$/.test(v) !== true) throw new Error('Invalid year.') - if (t == 'MM' && months.indexOf(v) === -1) throw new Error('Invalid month.') - if (t == '0M' && monthsz.indexOf(v) === -1) throw new Error('Invalid month.') - if (t == 'WW' && weeks.indexOf(v) === -1) throw new Error('Invalid week.') - if (t == '0W' && weeksz.indexOf(v) === -1) throw new Error('Invalid week.') - if (t == 'DD' && days.indexOf(v) === -1) throw new Error('Invalid day.') - if (t == '0D' && daysz.indexOf(v) === -1) throw new Error('Invalid day.') - return true; - } - - function getLiveValue(t) { - if (t == 'YYYY') - return now.getUTCFullYear() - if (t == 'YY') - return parseInt(now.getUTCFullYear().toString().slice(1)) - if (t == '0Y') { - const yy = now.getUTCFullYear().toString().slice(1) - return (yy.length == 1 ? '0' : '') + yy - } - if (t == 'MM') - return now.getUTCMonth() + 1 - if (t == '0M') { - const mm = now.getUTCMonth() + 1 - return (mm < 10 ? '0' : '') + mm - } - if (t == 'WW') - return getWeekNumber(now, {zeroPadded: false}) - if (t == '0W') - return getWeekNumber(now, {zeroPadded: true}) - if (t == 'DD') - return now.getUTCDate() - if (t == '0D') { - const dd = now.getUTCDate() - return (dd < 10 ? '0' : '') + dd - } - } - - function getWeekNumber(date, opts={zeroPadded: false}) { - const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())) - const daynum = d.getUTCDay() || 7; - d.setUTCDate(d.getUTCDate() + 4 - daynum) - const yearstart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)) - const result = Math.ceil((((d - yearstart) / 86400000) + 1)/7) - return opts.zeroPadded && result < 10 ? '0' + result : result - } - - function getYear() { - const year = getLiveValue('YYYY') - const yearbase = parseInt(year.toString().slice(0, 1)) * 1000 - if (dateversion.hasOwnProperty('YYYY')) return parseInt(dateversion.YYYY) - if (dateversion.hasOwnProperty('YY')) return parseInt(dateversion.YY) + yearbase - if (dateversion.hasOwnProperty('0Y')) return parseInt(dateversion['0Y']) + yearbase - return parseInt(year) - } - - function getMonth() { - const m = dateversion.hasOwnProperty('MM') ? parseInt(dateversion.MM) : - dateversion.hasOwnProperty('0M') ? parseInt(dateversion['0M']) : - 1; - return m - 1; - } - - function getDay() { - const m = dateversion.hasOwnProperty('DD') ? parseInt(dateversion.DD) : - dateversion.hasOwnProperty('0D') ? parseInt(dateversion['0D']) : - 1; - return m; - } - - function asNumeric() { - return Date.UTC(getYear(), getMonth(), getDay()) - } - - function inc(level) { - if (level !== 'CALENDAR') return false; - let updated = false - for (let i = 0; i < tags.length; i++) { - const t = tags[i] - const lv = getLiveValue(t) - if (Number(dateversion[t]) !== lv) updated = true - dateversion[t] = lv.toString() - } - return updated - } - - function asString() { - return Object.keys(dateversion).map(t => dateversion[t]).join('.') - } - - function pretty(locale=undefined) { - return new Date(asNumeric()).toLocaleString(locale, {year: 'numeric', month: 'long', timeZone: 'UTC'}) - } - - return { - inc: inc, - asString: asString, - asNumeric: asNumeric, - pretty: pretty - } -} diff --git a/src/domain/semver.js b/src/domain/semver.js deleted file mode 100644 index d6e28e0..0000000 --- a/src/domain/semver.js +++ /dev/null @@ -1,66 +0,0 @@ -module.exports = function createSemanticVersion(format, ver, alltags) { - const tags = format.split('.').filter(f => alltags.semantic.indexOf(f) !== -1) - const verarr = ver.length > 0 ? ver.split(/[.-]/) : [] - const tagsdate = format.split('.').filter(f => alltags.date.indexOf(f) !== -1) - tagsdate.map(t => verarr.shift()) - - const semversion = {} - for (let i = 0; i < tags.length; i++) { - const t = tags[i] - if (verarr.length === 0) { - semversion[t] = alltags.modifier.indexOf(t) !== -1 ? 'modifier.0' : '0' - } - else { - semversion[t] = - t == 'MODIFIER' && verarr.length == i + 2 ? verarr[i] + '.' + verarr[i+1] : - t == 'MODIFIER' && verarr.length != i + 2 ? 'modifier.0' : - verarr[i]; - } - } - - function inc(level) { - if (['DEV', 'ALPHA', 'BETA', 'RC'].indexOf(level) !== -1) { - const isLevelChanged = semversion.MODIFIER.split('.')[0].toUpperCase() != level - const mv = semversion.MODIFIER.split('.')[1] - semversion.MODIFIER = level.toLowerCase() + '.' + - ( - semversion.MODIFIER == 'modifier.0' - ? '1' - : (isLevelChanged ? '1' : (parseInt(mv) + 1)) - ) - } - - if (['MAJOR', 'MINOR', 'MICRO'].indexOf(level) !== -1) { - semversion[level] = (Number(semversion[level]) + 1).toString() - semversion.MODIFIER = '' - switch (level) { - case 'MINOR': - if (semversion.hasOwnProperty('MICRO')) semversion.MICRO = '0' - break; - case 'MAJOR': - if (semversion.hasOwnProperty('MICRO')) semversion.MICRO = '0' - if (semversion.hasOwnProperty('MINOR')) semversion.MINOR = '0' - break; - } - } - - if ('CALENDAR' === level) { - semversion.MODIFIER = '' - if (semversion.hasOwnProperty('MICRO')) semversion.MICRO = '0' - if (semversion.hasOwnProperty('MINOR')) semversion.MINOR = '0' - if (semversion.hasOwnProperty('MAJOR')) semversion.MAJOR = '0' - } - } - - function asString() { - return Object.keys(semversion) - .filter(t => semversion[t] && t != 'MODIFIER') - .map(t => semversion[t]).join('.') - + (semversion.MODIFIER && semversion.MODIFIER != 'modifier.0' ? '-' + semversion.MODIFIER : '') - } - - return { - inc: inc, - asString: asString - } -} diff --git a/src/index.js b/src/index.js index a03f76e..3f06830 100644 --- a/src/index.js +++ b/src/index.js @@ -1,199 +1,143 @@ -const createDateVersion = require('./domain/datever') -const createSemanticVersion = require('./domain/semver') - -function Calver() { - const tags = { - date: ['YYYY', 'YY', '0Y', 'MM', '0M', 'WW', '0W', 'DD', '0D'], - semantic: ['MAJOR', 'MINOR', 'MICRO', 'MODIFIER'], - modifier: ['DEV', 'ALPHA', 'BETA', 'RC'] - } - const levels = ['CALENDAR', 'MAJOR', 'MINOR', 'MICRO', ...tags.modifier] - const date = { - now: new Date(Date.now()) +import DateVersion from './DateVersion.js' +import SemanticVersion from './SemanticVersion.js' +import ModifierVersion from './ModifierVersion.js' +import Version from './Version.js' + +class Calver { + constructor() { + this.seperator = '.' + this.levels = ['CALENDAR', 'MAJOR', 'MINOR', 'PATCH', ...ModifierVersion.tags] } - function valid(format, ver) { - format = format.toUpperCase() + inc(format, version, levels) { + levels = this.validateLevels(levels) + format = this.validateFormat(format, levels) + version = this.parseVersion(version, format, levels) - validateFormat(format) - validateVersion(ver, format) - createDateVersion(format, ver, date.now, tags) - createSemanticVersion(format, ver, tags) + const obj = (new Version(version, this.seperator)).inc(levels).asObject() - return true; + return this.asString(format, obj) } - function init(format) { - format = validateFormat(format, {transformModifiers: false}) + getTagType(tag) { + tag = tag.toUpperCase() - const datever = createDateVersion(format, '', date.now, tags) - const semver = createSemanticVersion(format, '', tags) + if (DateVersion.tags.indexOf(tag) !== -1) return 'calendar' + if (SemanticVersion.tags.indexOf(tag) !== -1) return 'semantic' + if (ModifierVersion.tags.indexOf(tag) !== -1) return 'modifier' + + return undefined; + } - const tagssemantic = format.split('.').filter(f => tags.semantic.indexOf(f) !== -1) - if (tagssemantic.length > 0) { - semver.inc(tagssemantic[0]) - } - const tagsdate = format.split('.').filter(f => tags.date.indexOf(f) !== -1) - if (tagsdate.length > 0) { - datever.inc('CALENDAR') - semver.inc('CALENDAR') - } - const tagsmodifier = format.split('.').filter(f => tags.modifier.indexOf(f) !== -1) - if (tagsmodifier.length > 0) { - semver.inc(tagsmodifier[0]) + asString(format, obj) { + const result = [] + + for (const tag of format.sorted) { + if (DateVersion.tags.indexOf(tag) !== -1) { + result.push(obj.calendar[tag]) + } + if (SemanticVersion.tags.indexOf(tag) !== -1) { + result.push(obj.semantic[tag]) + } + if (ModifierVersion.tags.indexOf(tag) !== -1 && obj.modifier) { + result.push(ModifierVersion.seperator + tag.toLowerCase() + this.seperator + obj.modifier[tag]) + } } - return [datever.asString(), semver.asString()].filter(s => s).join('.') + return result + .join(this.seperator) + .replace(this.seperator + ModifierVersion.seperator, ModifierVersion.seperator) } - function inc(format, ver, level) { - format = validateFormat(format) - ver = validateVersion(ver, format) - level = validateLevel(level, format) - - const datever = createDateVersion(format, ver, date.now, tags) - const semver = createSemanticVersion(format, ver, tags) - - let dateUpdated = false; - for (const l of level.split('.')) { - if (l === 'CALENDAR') { - if (datever.inc(l)) { - dateUpdated = true; - semver.inc('CALENDAR') - } - } else if (!dateUpdated || tags.modifier.includes(l)) - semver.inc(l) + parseVersion(version, format, levels) { + const map = { + versionStringHasModifier: /(dev|DEV|alpha|ALPHA|beta|BETA|rc|RC)/.test(version), + sorted: {}, + calendar: {}, + semantic: {}, + modifier: {} } - const newVer = [datever.asString(), semver.asString()].filter(s => s).join('.'); - if (ver === newVer) { - throw new Error('There is no change in the version.') - } + let startIndex=0, endIndex=0 + for (const tag of format.sorted) { + endIndex = version.indexOf(this.seperator, startIndex+1) + if (endIndex === -1) endIndex = undefined - return newVer; - } + let value = version.slice(startIndex, endIndex) - function pretty(format, ver, locale=undefined) { - format = validateFormat(format) - ver = validateVersion(ver, format) + if (value.indexOf(ModifierVersion.seperator) !== -1) { + endIndex = version.indexOf(ModifierVersion.seperator, startIndex+1) + value = version.slice(startIndex, endIndex) + } - const datever = createDateVersion(format, ver, date.now, tags) - const semver = createSemanticVersion(format, ver, tags) + if (ModifierVersion.tags.indexOf(value.toUpperCase()) !== -1) { + if (value.toUpperCase() != tag) value = '-1' + else value = version.slice(startIndex + value.length + 1) + } - return datever.pretty(locale) + ' v' + semver.asString() + '' - } + if (isNaN(startIndex)) { + value = ModifierVersion.tags.indexOf(tag) !== -1 ? '-1' : '0' + } - function getTagType(input) { - input = input.toUpperCase() + if (value == '') { + value = '0' + } - if (tags.date.indexOf(input) !== -1) return 'date' - else if (tags.semantic.indexOf(input) !== -1) return 'semantic' - else if (tags.modifier.indexOf(input) !== -1) return 'modifier' - else return '' - } + map.sorted[tag] = value + if (format.calendar.indexOf(tag) !== -1) map.calendar[tag] = value + if (format.semantic.indexOf(tag) !== -1) map.semantic[tag] = value + if (format.modifier.indexOf(tag) !== -1) map.modifier[tag] = value - function validateLevel(level, format) { - if (!level) - throw new Error('Please specify a valid level.'); - level = level.trim().toUpperCase() - const formatarr = format.split('.') - const levelsarr = level.split('.') - if (levelsarr.length > 2) - throw new Error('You can specify 2 levels at max.'); - if (!levelsarr) - throw new Error('You should specify at least one level.'); - - for (var i = 0; i < levelsarr.length; i++) { - const l = levelsarr[i] - if (levels.indexOf(l) === -1) - throw new Error('Invalid level.'); - if (tags.modifier.indexOf(l) !== -1 && formatarr.indexOf('MODIFIER') === -1) - throw new Error('Level and format doesn\'t match.'); - if (tags.semantic.indexOf(l) !== -1 && formatarr.indexOf(l) === -1) - throw new Error('Level and format doesn\'t match.'); + startIndex = endIndex + 1 } - return level + return map } - function validateVersion(ver, format) { - if (!ver) - throw new Error('Please specify a valid version.'); - - ver = ver.trim().toLowerCase() - if (/[^a-zA-Z0-9.-]/.test(ver) === true) - throw new Error('Unexpected characters in your version string.') + validateFormat(format, levels) { + const result = { + sorted: [], + calendar: [], + semantic: [], + modifier: [] + } - const formatarr = format.split('.') - const verarr = ver.split(/[.-]/) - if ((formatarr.indexOf('MODIFIER') === -1 && verarr.length < formatarr.length) || - (formatarr.indexOf('MODIFIER') !== -1 && verarr.length + 1 != formatarr.length && - verarr.length - 1 != formatarr.length)) - throw new Error('Version and format lengths mismatch.'); + const tags = format.toUpperCase().split(this.seperator) - return ver - } + for (const tag of tags) { + if (DateVersion.tags.indexOf(tag) !== -1) result.calendar.push(tag) + else if (SemanticVersion.tags.indexOf(tag) !== -1) result.semantic.push(tag) + else throw new Error(`[CALVER]: Invalid format tag "${tag}".`) - function validateFormat(format, opts={transformModifiers: true}) { - if (!format) - throw new Error('Please specify a valid format.'); - format = format.trim().toUpperCase().split('.') - .map(t => - tags.modifier.indexOf(t) !== -1 && opts.transformModifiers === true - ? 'MODIFIER' - : t) - .join('.') - const tagsrepo = [] - const tagsarr = format.split('.') - for (let i = 0; i < tagsarr.length; i++) { - const t = tagsarr[i].toUpperCase() - - if (tags.date.indexOf(t) === -1 && tags.semantic.indexOf(t) === -1 && - tags.modifier.indexOf(t) === -1) - throw new Error('Your format contains invalid tags.'); - - if (tagsrepo.indexOf(t) !== -1) - throw new Error('Your format is repeating the same tag.') - tagsrepo.push(t); + result.sorted.push(tag) } - const tagsdate = tagsrepo.filter(t => tags.date.indexOf(t) !== -1) - let largestDateTagIndex = null - if (tagsdate.length > 0) { - const tagsdatesorted = tags.date.filter(t => tagsdate.indexOf(t) !== -1) - for (let j = 0; j < tagsdatesorted.length; j++) { - if (tagsdatesorted[j] != tagsdate[j]) - throw new Error('Date tags are in the wrong order.'); - largestDateTagIndex = tagsrepo.indexOf(tagsdate[j]) + for (const level of levels) { + if (ModifierVersion.tags.indexOf(level) !== -1) { + result.modifier.push(level) + result.sorted.push(level) } } - const tagssemantic = tagsrepo.filter(t => tags.semantic.indexOf(t) !== -1) - let largestSemanticTagIndex = null - if (tagssemantic.length > 0) { - const tagssemanticsorted = tags.semantic.filter(t => tagssemantic.indexOf(t) !== -1) - for (let k = 0; k < tagssemanticsorted.length; k++) { - if (tagssemanticsorted[k] != tagssemantic[k]) - throw new Error('Semantic tags are in the wrong order.'); - if (largestSemanticTagIndex === null) - largestSemanticTagIndex = tagsrepo.indexOf(tagssemantic[k]) - } - } + return result + } - if (largestDateTagIndex !== null && largestSemanticTagIndex !== null && - largestDateTagIndex > largestSemanticTagIndex) - throw new Error('Semantic tags should come after date tags.'); + validateLevels(levels) { + const result = [] + const arr = levels.split('.') - return format - } + for (const level of arr) { + const formatted = level.toUpperCase() + if (this.levels.indexOf(formatted) !== -1) { + result.push(formatted) + } + else { + throw new Error(`[CALVER]: Invalid level "${level}".`) + } + } - return { - init: init, - inc: inc, - pretty: pretty, - getTagType: getTagType, - valid: valid + return result } } -module.exports = Calver() +export default new Calver() diff --git a/tests/index.js b/tests/index.js new file mode 100644 index 0000000..ba4292c --- /dev/null +++ b/tests/index.js @@ -0,0 +1,49 @@ +import assert from 'assert' +import calver from '../src/index.js' + +// fixed current time stamp in test environment. +// 1611069856248: 19 Jan 2021 +Date.now = function now() { + return 1611069856248; +} + +assert.strictEqual(calver.inc('yyyy.mm.ww', '2020.6.1', 'dev'), '2020.6.1-dev.0') +assert.strictEqual(calver.inc('yyyy.mm.ww', '2020.6.1-dev.0', 'dev'), '2020.6.1-dev.1') +assert.strictEqual(calver.inc('yyyy.mm.ww', '2020.6.1-dev.1', 'alpha'), '2020.6.1-alpha.0') +assert.strictEqual(calver.inc('yyyy.mm.ww', '2020.6.1-alpha.0', 'alpha'), '2020.6.1-alpha.1') +assert.strictEqual(calver.inc('yyyy.mm.ww', '2020.6.1-alpha.1', 'alpha'), '2020.6.1-alpha.2') +assert.strictEqual(calver.inc('yyyy.mm.ww', '2020.6.1-alpha.2', 'calendar'), '2020.6.1') +assert.strictEqual(calver.inc('yyyy.mm.0w', '2020.6.1', 'calendar'), '2021.1.03') + +assert.strictEqual(calver.inc('yyyy.mm.major.minor', '2020.6.30.40', 'calendar'), '2021.1.30.40') +assert.strictEqual(calver.inc('yyyy.0m.major.minor', '2020.06.30.40', 'calendar'), '2021.01.30.40') +assert.strictEqual(calver.inc('yyyy.mm.major.minor', '2020.6.30.40', 'calendar.dev'), '2021.1.30.40-dev.0') +assert.strictEqual(calver.inc('yyyy.0m.major.minor', '2020.06.30.40-dev.0', 'calendar.dev'), '2021.01.30.40-dev.1') +assert.strictEqual(calver.inc('yyyy.0m.major.minor', '2020.06.30.40-dev.22', 'calendar.dev'), '2021.01.30.40-dev.23') +assert.strictEqual(calver.inc('yyyy.0m.major.minor', '2020.06.30.40-dev.23', 'calendar'), '2020.06.30.40') + +assert.strictEqual(calver.inc('yyyy.mm.minor', '2020.6.38', 'minor'), '2020.6.39') +assert.strictEqual(calver.inc('yyyy.mm.major.minor.patch', '2020.6.10.38.123', 'minor'), '2020.6.10.39.0') +assert.strictEqual(calver.inc('yyyy.mm.major.minor.patch', '2020.6.10.38.123', 'minor.dev'), '2020.6.10.39.0-dev.0') +assert.strictEqual(calver.inc('yyyy.mm.major.minor.patch', '2020.6.10.39.0-dev.0', 'dev'), '2020.6.10.39.0-dev.1') +assert.strictEqual(calver.inc('yyyy.mm.major.minor.patch', '2020.6.10.39.0-dev.1', 'minor'), '2020.6.10.39.0') +assert.strictEqual(calver.inc('yyyy.mm.major.minor.patch', '2020.6.10.38.123', 'major.dev'), '2020.6.11.0.0-dev.0') + +assert.strictEqual(calver.inc('major.minor.patch', '1.2.3', 'major'), '2.0.0') +assert.strictEqual(calver.inc('major.minor.patch', '1.2.3', 'minor'), '1.3.0') +assert.strictEqual(calver.inc('major.minor.patch', '1.2.3', 'patch'), '1.2.4') + +assert.strictEqual(calver.getTagType('yy'), 'calendar') +assert.strictEqual(calver.getTagType('yyyy'), 'calendar') +assert.strictEqual(calver.getTagType('0w'), 'calendar') +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.inc('major.minor.patch', '', 'major'), '1.0.0') +assert.strictEqual(calver.inc('yyyy.mm', '', 'calendar'), '2021.1') +assert.strictEqual(calver.inc('yyyy.mm.major.minor.patch', '', 'calendar'), '2021.1.0.0.0') +assert.strictEqual(calver.inc('yyyy.mm.major.minor.patch', '', 'minor'), '0.0.0.1.0') +assert.strictEqual(calver.inc('yyyy.mm.major.minor.patch', '0.0.0.1.0', 'calendar'), '2021.1.0.1.0') +assert.strictEqual(calver.inc('yyyy.mm.major.minor.patch', '', 'calendar.dev'), '2021.1.0.0.0-dev.0')