+ var escapeStringRegexp = string => {
+ if (typeof string !== 'string') {
+ throw new TypeError('Expected a string');
+ } // Escape characters with special meaning either inside or outside character sets.
+ // Use a simple backslash escape when it’s always valid, and a \unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.
+
+
+ return string.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d');
+ };
+
+ var getLast = arr => arr[arr.length - 1];
+
+ function _objectWithoutPropertiesLoose(source, excluded) {
+ if (source == null) return {};
+ var target = {};
+ var sourceKeys = Object.keys(source);
+ var key, i;
+
+ for (i = 0; i < sourceKeys.length; i++) {
+ key = sourceKeys[i];
+ if (excluded.indexOf(key) >= 0) continue;
+ target[key] = source[key];
+ }
+
+ return target;
+ }
+
+ function _taggedTemplateLiteral(strings, raw) {
+ if (!raw) {
+ raw = strings.slice(0);
+ }
+
+ return Object.freeze(Object.defineProperties(strings, {
+ raw: {
+ value: Object.freeze(raw)
+ }
+ }));
+ }
+
+ var global$1 = typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {};
+
+ // based off https://github.com/defunctzombie/node-process/blob/master/browser.js
+
+ function defaultSetTimout() {
+ throw new Error('setTimeout has not been defined');
+ }
+
+ function defaultClearTimeout() {
+ throw new Error('clearTimeout has not been defined');
+ }
+
+ var cachedSetTimeout = defaultSetTimout;
+ var cachedClearTimeout = defaultClearTimeout;
+
+ if (typeof global$1.setTimeout === 'function') {
+ cachedSetTimeout = setTimeout;
+ }
+
+ if (typeof global$1.clearTimeout === 'function') {
+ cachedClearTimeout = clearTimeout;
+ }
+
+ function runTimeout(fun) {
+ if (cachedSetTimeout === setTimeout) {
+ //normal enviroments in sane situations
+ return setTimeout(fun, 0);
+ } // if setTimeout wasn't available but was latter defined
+
+
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+ cachedSetTimeout = setTimeout;
+ return setTimeout(fun, 0);
+ }
+
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedSetTimeout(fun, 0);
+ } catch (e) {
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedSetTimeout.call(null, fun, 0);
+ } catch (e) {
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+ return cachedSetTimeout.call(this, fun, 0);
+ }
+ }
+ }
+
+ function runClearTimeout(marker) {
+ if (cachedClearTimeout === clearTimeout) {
+ //normal enviroments in sane situations
+ return clearTimeout(marker);
+ } // if clearTimeout wasn't available but was latter defined
+
+
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+ cachedClearTimeout = clearTimeout;
+ return clearTimeout(marker);
+ }
+
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedClearTimeout(marker);
+ } catch (e) {
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedClearTimeout.call(null, marker);
+ } catch (e) {
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+ // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+ return cachedClearTimeout.call(this, marker);
+ }
+ }
+ }
+
+ var queue = [];
+ var draining = false;
+ var currentQueue;
+ var queueIndex = -1;
+
+ function cleanUpNextTick() {
+ if (!draining || !currentQueue) {
+ return;
+ }
+
+ draining = false;
+
+ if (currentQueue.length) {
+ queue = currentQueue.concat(queue);
+ } else {
+ queueIndex = -1;
+ }
+
+ if (queue.length) {
+ drainQueue();
+ }
+ }
+
+ function drainQueue() {
+ if (draining) {
+ return;
+ }
+
+ var timeout = runTimeout(cleanUpNextTick);
+ draining = true;
+ var len = queue.length;
+
+ while (len) {
+ currentQueue = queue;
+ queue = [];
+
+ while (++queueIndex < len) {
+ if (currentQueue) {
+ currentQueue[queueIndex].run();
+ }
+ }
+
+ queueIndex = -1;
+ len = queue.length;
+ }
+
+ currentQueue = null;
+ draining = false;
+ runClearTimeout(timeout);
+ }
+
+ function nextTick(fun) {
+ var args = new Array(arguments.length - 1);
+
+ if (arguments.length > 1) {
+ for (var i = 1; i < arguments.length; i++) {
+ args[i - 1] = arguments[i];
+ }
+ }
+
+ queue.push(new Item(fun, args));
+
+ if (queue.length === 1 && !draining) {
+ runTimeout(drainQueue);
+ }
+ } // v8 likes predictible objects
+
+ function Item(fun, array) {
+ this.fun = fun;
+ this.array = array;
+ }
+
+ Item.prototype.run = function () {
+ this.fun.apply(null, this.array);
+ };
+
+ var title = 'browser';
+ var platform = 'browser';
+ var browser = true;
+ var env = {};
+ var argv = [];
+ var version = ''; // empty string to avoid regexp issues
+
+ var versions = {};
+ var release = {};
+ var config = {};
+
+ function noop() {}
+
+ var on = noop;
+ var addListener = noop;
+ var once = noop;
+ var off = noop;
+ var removeListener = noop;
+ var removeAllListeners = noop;
+ var emit = noop;
+ function binding(name) {
+ throw new Error('process.binding is not supported');
+ }
+ function cwd() {
+ return '/';
+ }
+ function chdir(dir) {
+ throw new Error('process.chdir is not supported');
+ }
+ function umask() {
+ return 0;
+ } // from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js
+
+ var performance = global$1.performance || {};
+
+ var performanceNow = performance.now || performance.mozNow || performance.msNow || performance.oNow || performance.webkitNow || function () {
+ return new Date().getTime();
+ }; // generate timestamp or delta
+ // see http://nodejs.org/api/process.html#process_process_hrtime
+
+
+ function hrtime(previousTimestamp) {
+ var clocktime = performanceNow.call(performance) * 1e-3;
+ var seconds = Math.floor(clocktime);
+ var nanoseconds = Math.floor(clocktime % 1 * 1e9);
+
+ if (previousTimestamp) {
+ seconds = seconds - previousTimestamp[0];
+ nanoseconds = nanoseconds - previousTimestamp[1];
+
+ if (nanoseconds < 0) {
+ seconds--;
+ nanoseconds += 1e9;
+ }
+ }
+
+ return [seconds, nanoseconds];
+ }
+ var startTime = new Date();
+ function uptime() {
+ var currentTime = new Date();
+ var dif = currentTime - startTime;
+ return dif / 1000;
+ }
+ var process = {
+ nextTick: nextTick,
+ title: title,
+ browser: browser,
+ env: env,
+ argv: argv,
+ version: version,
+ versions: versions,
+ on: on,
+ addListener: addListener,
+ once: once,
+ off: off,
+ removeListener: removeListener,
+ removeAllListeners: removeAllListeners,
+ emit: emit,
+ binding: binding,
+ cwd: cwd,
+ chdir: chdir,
+ umask: umask,
+ hrtime: hrtime,
+ platform: platform,
+ release: release,
+ config: config,
+ uptime: uptime
+ };
+
+ const debug = typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error('SEMVER', ...args) : () => {};
+ var debug_1 = debug;
+
+ // Note: this is the semver.org version of the spec that it implements
+ // Not necessarily the package version of this code.
+ const SEMVER_SPEC_VERSION = '2.0.0';
+ const MAX_LENGTH = 256;
+ const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */
+ 9007199254740991; // Max safe segment length for coercion.
+
+ const MAX_SAFE_COMPONENT_LENGTH = 16;
+ var constants = {
+ SEMVER_SPEC_VERSION,
+ MAX_LENGTH,
+ MAX_SAFE_INTEGER,
+ MAX_SAFE_COMPONENT_LENGTH
+ };
+
+ function createCommonjsModule(fn, basedir, module) {
+ return module = {
+ path: basedir,
+ exports: {},
+ require: function (path, base) {
+ return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);
+ }
+ }, fn(module, module.exports), module.exports;
+ }
+
+ function commonjsRequire () {
+ throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
+ }
+
+ var re_1 = createCommonjsModule(function (module, exports) {
+ const {
+ MAX_SAFE_COMPONENT_LENGTH
+ } = constants;
+ exports = module.exports = {}; // The actual regexps go on exports.re
+
+ const re = exports.re = [];
+ const src = exports.src = [];
+ const t = exports.t = {};
+ let R = 0;
+
+ const createToken = (name, value, isGlobal) => {
+ const index = R++;
+ debug_1(index, value);
+ t[name] = index;
+ src[index] = value;
+ re[index] = new RegExp(value, isGlobal ? 'g' : undefined);
+ }; // The following Regular Expressions can be used for tokenizing,
+ // validating, and parsing SemVer version strings.
+ // ## Numeric Identifier
+ // A single `0`, or a non-zero digit followed by zero or more digits.
+
+
+ createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*');
+ createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+'); // ## Non-numeric Identifier
+ // Zero or more digits, followed by a letter or hyphen, and then zero or
+ // more letters, digits, or hyphens.
+
+ createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*'); // ## Main Version
+ // Three dot-separated numeric identifiers.
+
+ createToken('MAINVERSION', "(".concat(src[t.NUMERICIDENTIFIER], ")\\.") + "(".concat(src[t.NUMERICIDENTIFIER], ")\\.") + "(".concat(src[t.NUMERICIDENTIFIER], ")"));
+ createToken('MAINVERSIONLOOSE', "(".concat(src[t.NUMERICIDENTIFIERLOOSE], ")\\.") + "(".concat(src[t.NUMERICIDENTIFIERLOOSE], ")\\.") + "(".concat(src[t.NUMERICIDENTIFIERLOOSE], ")")); // ## Pre-release Version Identifier
+ // A numeric identifier, or a non-numeric identifier.
+
+ createToken('PRERELEASEIDENTIFIER', "(?:".concat(src[t.NUMERICIDENTIFIER], "|").concat(src[t.NONNUMERICIDENTIFIER], ")"));
+ createToken('PRERELEASEIDENTIFIERLOOSE', "(?:".concat(src[t.NUMERICIDENTIFIERLOOSE], "|").concat(src[t.NONNUMERICIDENTIFIER], ")")); // ## Pre-release Version
+ // Hyphen, followed by one or more dot-separated pre-release version
+ // identifiers.
+
+ createToken('PRERELEASE', "(?:-(".concat(src[t.PRERELEASEIDENTIFIER], "(?:\\.").concat(src[t.PRERELEASEIDENTIFIER], ")*))"));
+ createToken('PRERELEASELOOSE', "(?:-?(".concat(src[t.PRERELEASEIDENTIFIERLOOSE], "(?:\\.").concat(src[t.PRERELEASEIDENTIFIERLOOSE], ")*))")); // ## Build Metadata Identifier
+ // Any combination of digits, letters, or hyphens.
+
+ createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+'); // ## Build Metadata
+ // Plus sign, followed by one or more period-separated build metadata
+ // identifiers.
+
+ createToken('BUILD', "(?:\\+(".concat(src[t.BUILDIDENTIFIER], "(?:\\.").concat(src[t.BUILDIDENTIFIER], ")*))")); // ## Full Version String
+ // A main version, followed optionally by a pre-release version and
+ // build metadata.
+ // Note that the only major, minor, patch, and pre-release sections of
+ // the version string are capturing groups. The build metadata is not a
+ // capturing group, because it should not ever be used in version
+ // comparison.
+
+ createToken('FULLPLAIN', "v?".concat(src[t.MAINVERSION]).concat(src[t.PRERELEASE], "?").concat(src[t.BUILD], "?"));
+ createToken('FULL', "^".concat(src[t.FULLPLAIN], "$")); // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+ // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+ // common in the npm registry.
+
+ createToken('LOOSEPLAIN', "[v=\\s]*".concat(src[t.MAINVERSIONLOOSE]).concat(src[t.PRERELEASELOOSE], "?").concat(src[t.BUILD], "?"));
+ createToken('LOOSE', "^".concat(src[t.LOOSEPLAIN], "$"));
+ createToken('GTLT', '((?:<|>)?=?)'); // Something like "2.*" or "1.2.x".
+ // Note that "x.x" is a valid xRange identifer, meaning "any version"
+ // Only the first item is strictly required.
+
+ createToken('XRANGEIDENTIFIERLOOSE', "".concat(src[t.NUMERICIDENTIFIERLOOSE], "|x|X|\\*"));
+ createToken('XRANGEIDENTIFIER', "".concat(src[t.NUMERICIDENTIFIER], "|x|X|\\*"));
+ createToken('XRANGEPLAIN', "[v=\\s]*(".concat(src[t.XRANGEIDENTIFIER], ")") + "(?:\\.(".concat(src[t.XRANGEIDENTIFIER], ")") + "(?:\\.(".concat(src[t.XRANGEIDENTIFIER], ")") + "(?:".concat(src[t.PRERELEASE], ")?").concat(src[t.BUILD], "?") + ")?)?");
+ createToken('XRANGEPLAINLOOSE', "[v=\\s]*(".concat(src[t.XRANGEIDENTIFIERLOOSE], ")") + "(?:\\.(".concat(src[t.XRANGEIDENTIFIERLOOSE], ")") + "(?:\\.(".concat(src[t.XRANGEIDENTIFIERLOOSE], ")") + "(?:".concat(src[t.PRERELEASELOOSE], ")?").concat(src[t.BUILD], "?") + ")?)?");
+ createToken('XRANGE', "^".concat(src[t.GTLT], "\\s*").concat(src[t.XRANGEPLAIN], "$"));
+ createToken('XRANGELOOSE', "^".concat(src[t.GTLT], "\\s*").concat(src[t.XRANGEPLAINLOOSE], "$")); // Coercion.
+ // Extract anything that could conceivably be a part of a valid semver
+
+ createToken('COERCE', "".concat('(^|[^\\d])' + '(\\d{1,').concat(MAX_SAFE_COMPONENT_LENGTH, "})") + "(?:\\.(\\d{1,".concat(MAX_SAFE_COMPONENT_LENGTH, "}))?") + "(?:\\.(\\d{1,".concat(MAX_SAFE_COMPONENT_LENGTH, "}))?") + "(?:$|[^\\d])");
+ createToken('COERCERTL', src[t.COERCE], true); // Tilde ranges.
+ // Meaning is "reasonably at or greater than"
+
+ createToken('LONETILDE', '(?:~>?)');
+ createToken('TILDETRIM', "(\\s*)".concat(src[t.LONETILDE], "\\s+"), true);
+ exports.tildeTrimReplace = '$1~';
+ createToken('TILDE', "^".concat(src[t.LONETILDE]).concat(src[t.XRANGEPLAIN], "$"));
+ createToken('TILDELOOSE', "^".concat(src[t.LONETILDE]).concat(src[t.XRANGEPLAINLOOSE], "$")); // Caret ranges.
+ // Meaning is "at least and backwards compatible with"
+
+ createToken('LONECARET', '(?:\\^)');
+ createToken('CARETTRIM', "(\\s*)".concat(src[t.LONECARET], "\\s+"), true);
+ exports.caretTrimReplace = '$1^';
+ createToken('CARET', "^".concat(src[t.LONECARET]).concat(src[t.XRANGEPLAIN], "$"));
+ createToken('CARETLOOSE', "^".concat(src[t.LONECARET]).concat(src[t.XRANGEPLAINLOOSE], "$")); // A simple gt/lt/eq thing, or just "" to indicate "any version"
+
+ createToken('COMPARATORLOOSE', "^".concat(src[t.GTLT], "\\s*(").concat(src[t.LOOSEPLAIN], ")$|^$"));
+ createToken('COMPARATOR', "^".concat(src[t.GTLT], "\\s*(").concat(src[t.FULLPLAIN], ")$|^$")); // An expression to strip any whitespace between the gtlt and the thing
+ // it modifies, so that `> 1.2.3` ==> `>1.2.3`
+
+ createToken('COMPARATORTRIM', "(\\s*)".concat(src[t.GTLT], "\\s*(").concat(src[t.LOOSEPLAIN], "|").concat(src[t.XRANGEPLAIN], ")"), true);
+ exports.comparatorTrimReplace = '$1$2$3'; // Something like `1.2.3 - 1.2.4`
+ // Note that these all use the loose form, because they'll be
+ // checked against either the strict or loose comparator form
+ // later.
+
+ createToken('HYPHENRANGE', "^\\s*(".concat(src[t.XRANGEPLAIN], ")") + "\\s+-\\s+" + "(".concat(src[t.XRANGEPLAIN], ")") + "\\s*$");
+ createToken('HYPHENRANGELOOSE', "^\\s*(".concat(src[t.XRANGEPLAINLOOSE], ")") + "\\s+-\\s+" + "(".concat(src[t.XRANGEPLAINLOOSE], ")") + "\\s*$"); // Star ranges basically just allow anything at all.
+
+ createToken('STAR', '(<|>)?=?\\s*\\*'); // >=0.0.0 is like a star
+
+ createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$');
+ createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$');
+ });
+
+ const numeric = /^[0-9]+$/;
+
+ const compareIdentifiers = (a, b) => {
+ const anum = numeric.test(a);
+ const bnum = numeric.test(b);
+
+ if (anum && bnum) {
+ a = +a;
+ b = +b;
+ }
+
+ return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
+ };
+
+ const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a);
+
+ var identifiers = {
+ compareIdentifiers,
+ rcompareIdentifiers
+ };
+
+ const {
+ MAX_LENGTH: MAX_LENGTH$1,
+ MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1
+ } = constants;
+ const {
+ re,
+ t
+ } = re_1;
+ const {
+ compareIdentifiers: compareIdentifiers$1
+ } = identifiers;
+
+ class SemVer {
+ constructor(version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (version instanceof SemVer) {
+ if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {
+ return version;
+ } else {
+ version = version.version;
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError("Invalid Version: ".concat(version));
+ }
+
+ if (version.length > MAX_LENGTH$1) {
+ throw new TypeError("version is longer than ".concat(MAX_LENGTH$1, " characters"));
+ }
+
+ debug_1('SemVer', version, options);
+ this.options = options;
+ this.loose = !!options.loose; // this isn't actually relevant for versions, but keep it so that we
+ // don't run into trouble passing this.options around.
+
+ this.includePrerelease = !!options.includePrerelease;
+ const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
+
+ if (!m) {
+ throw new TypeError("Invalid Version: ".concat(version));
+ }
+
+ this.raw = version; // these are actually numbers
+
+ this.major = +m[1];
+ this.minor = +m[2];
+ this.patch = +m[3];
+
+ if (this.major > MAX_SAFE_INTEGER$1 || this.major < 0) {
+ throw new TypeError('Invalid major version');
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER$1 || this.minor < 0) {
+ throw new TypeError('Invalid minor version');
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER$1 || this.patch < 0) {
+ throw new TypeError('Invalid patch version');
+ } // numberify any prerelease numeric ids
+
+
+ if (!m[4]) {
+ this.prerelease = [];
+ } else {
+ this.prerelease = m[4].split('.').map(id => {
+ if (/^[0-9]+$/.test(id)) {
+ const num = +id;
+
+ if (num >= 0 && num < MAX_SAFE_INTEGER$1) {
+ return num;
+ }
+ }
+
+ return id;
+ });
+ }
+
+ this.build = m[5] ? m[5].split('.') : [];
+ this.format();
+ }
+
+ format() {
+ this.version = "".concat(this.major, ".").concat(this.minor, ".").concat(this.patch);
+
+ if (this.prerelease.length) {
+ this.version += "-".concat(this.prerelease.join('.'));
+ }
+
+ return this.version;
+ }
+
+ toString() {
+ return this.version;
+ }
+
+ compare(other) {
+ debug_1('SemVer.compare', this.version, this.options, other);
+
+ if (!(other instanceof SemVer)) {
+ if (typeof other === 'string' && other === this.version) {
+ return 0;
+ }
+
+ other = new SemVer(other, this.options);
+ }
+
+ if (other.version === this.version) {
+ return 0;
+ }
+
+ return this.compareMain(other) || this.comparePre(other);
+ }
+
+ compareMain(other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ return compareIdentifiers$1(this.major, other.major) || compareIdentifiers$1(this.minor, other.minor) || compareIdentifiers$1(this.patch, other.patch);
+ }
+
+ comparePre(other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ } // NOT having a prerelease is > having one
+
+
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1;
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1;
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0;
+ }
+
+ let i = 0;
+
+ do {
+ const a = this.prerelease[i];
+ const b = other.prerelease[i];
+ debug_1('prerelease compare', i, a, b);
+
+ if (a === undefined && b === undefined) {
+ return 0;
+ } else if (b === undefined) {
+ return 1;
+ } else if (a === undefined) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers$1(a, b);
+ }
+ } while (++i);
+ }
+
+ compareBuild(other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ let i = 0;
+
+ do {
+ const a = this.build[i];
+ const b = other.build[i];
+ debug_1('prerelease compare', i, a, b);
+
+ if (a === undefined && b === undefined) {
+ return 0;
+ } else if (b === undefined) {
+ return 1;
+ } else if (a === undefined) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers$1(a, b);
+ }
+ } while (++i);
+ } // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+
+
+ inc(release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor = 0;
+ this.major++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'preminor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0;
+ this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier);
+ }
+
+ this.inc('pre', identifier);
+ break;
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
+ this.major++;
+ }
+
+ this.minor = 0;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++;
+ }
+
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++;
+ }
+
+ this.prerelease = [];
+ break;
+ // This probably shouldn't be used publicly.
+ // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
+
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0];
+ } else {
+ let i = this.prerelease.length;
+
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++;
+ i = -2;
+ }
+ }
+
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0);
+ }
+ }
+
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0];
+ }
+ } else {
+ this.prerelease = [identifier, 0];
+ }
+ }
+
+ break;
+
+ default:
+ throw new Error("invalid increment argument: ".concat(release));
+ }
+
+ this.format();
+ this.raw = this.version;
+ return this;
+ }
+
+ }
+
+ var semver = SemVer;
+
+ const compare = (a, b, loose) => new semver(a, loose).compare(new semver(b, loose));
+
+ var compare_1 = compare;
+
+ const lt = (a, b, loose) => compare_1(a, b, loose) < 0;
+
+ var lt_1 = lt;
+
+ const gte = (a, b, loose) => compare_1(a, b, loose) >= 0;
+
+ var gte_1 = gte;
+
+ var arrayify = (object, keyName) => Object.entries(object).map(([key, value]) => Object.assign({
+ [keyName]: key
+ }, value));
+
+ var name = "prettier";
+ var version$1 = "2.2.1";
+ var description = "Prettier is an opinionated code formatter";
+ var bin = "./bin/prettier.js";
+ var repository = "prettier/prettier";
+ var homepage = "https://prettier.io";
+ var author = "James Long";
+ var license = "MIT";
+ var main = "./index.js";
+ var browser$1 = "./standalone.js";
+ var unpkg = "./standalone.js";
+ var engines = {
+ node: ">=10.13.0"
+ };
+ var files = [
+ "index.js",
+ "standalone.js",
+ "src",
+ "bin"
+ ];
+ var dependencies = {
+ "@angular/compiler": "10.2.3",
+ "@babel/code-frame": "7.10.4",
+ "@babel/parser": "7.12.5",
+ "@glimmer/syntax": "0.66.0",
+ "@iarna/toml": "2.2.5",
+ "@typescript-eslint/typescript-estree": "4.8.1",
+ "angular-estree-parser": "2.2.1",
+ "angular-html-parser": "1.7.1",
+ camelcase: "6.2.0",
+ chalk: "4.1.0",
+ "ci-info": "watson/ci-info#f43f6a1cefff47fb361c88cf4b943fdbcaafe540",
+ "cjk-regex": "2.0.0",
+ cosmiconfig: "7.0.0",
+ dashify: "2.0.0",
+ diff: "5.0.0",
+ editorconfig: "0.15.3",
+ "editorconfig-to-prettier": "0.2.0",
+ "escape-string-regexp": "4.0.0",
+ espree: "7.3.0",
+ esutils: "2.0.3",
+ "fast-glob": "3.2.4",
+ "fast-json-stable-stringify": "2.1.0",
+ "find-parent-dir": "0.3.0",
+ "flow-parser": "0.138.0",
+ "get-stdin": "8.0.0",
+ globby: "11.0.1",
+ graphql: "15.4.0",
+ "html-element-attributes": "2.3.0",
+ "html-styles": "1.0.0",
+ "html-tag-names": "1.1.5",
+ "html-void-elements": "1.0.5",
+ ignore: "4.0.6",
+ "jest-docblock": "26.0.0",
+ json5: "2.1.3",
+ leven: "3.1.0",
+ "lines-and-columns": "1.1.6",
+ "linguist-languages": "7.12.1",
+ lodash: "4.17.20",
+ mem: "8.0.0",
+ meriyah: "3.1.6",
+ minimatch: "3.0.4",
+ minimist: "1.2.5",
+ "n-readlines": "1.0.1",
+ outdent: "0.7.1",
+ "parse-srcset": "ikatyang/parse-srcset#54eb9c1cb21db5c62b4d0e275d7249516df6f0ee",
+ "please-upgrade-node": "3.2.0",
+ "postcss-less": "3.1.4",
+ "postcss-media-query-parser": "0.2.3",
+ "postcss-scss": "2.1.1",
+ "postcss-selector-parser": "2.2.3",
+ "postcss-values-parser": "2.0.1",
+ "regexp-util": "1.2.2",
+ "remark-footnotes": "2.0.0",
+ "remark-math": "3.0.1",
+ "remark-parse": "8.0.3",
+ resolve: "1.19.0",
+ semver: "7.3.2",
+ "string-width": "4.2.0",
+ typescript: "4.1.2",
+ "unicode-regex": "3.0.0",
+ unified: "9.2.0",
+ vnopts: "1.0.2",
+ "yaml-unist-parser": "1.3.1"
+ };
+ var devDependencies = {
+ "@babel/core": "7.12.3",
+ "@babel/preset-env": "7.12.1",
+ "@babel/types": "7.12.6",
+ "@glimmer/reference": "0.66.0",
+ "@rollup/plugin-alias": "3.1.1",
+ "@rollup/plugin-babel": "5.2.1",
+ "@rollup/plugin-commonjs": "16.0.0",
+ "@rollup/plugin-json": "4.1.0",
+ "@rollup/plugin-node-resolve": "10.0.0",
+ "@rollup/plugin-replace": "2.3.4",
+ "@types/estree": "0.0.45",
+ "@types/node": "14.14.0",
+ "@typescript-eslint/types": "4.8.1",
+ "babel-jest": "26.6.3",
+ "babel-loader": "8.2.1",
+ benchmark: "2.1.4",
+ "builtin-modules": "3.1.0",
+ "cross-env": "7.0.2",
+ cspell: "4.2.2",
+ eslint: "7.13.0",
+ "eslint-config-prettier": "6.15.0",
+ "eslint-formatter-friendly": "7.0.0",
+ "eslint-plugin-import": "2.22.1",
+ "eslint-plugin-jest": "24.1.3",
+ "eslint-plugin-prettier-internal-rules": "file:scripts/tools/eslint-plugin-prettier-internal-rules",
+ "eslint-plugin-react": "7.21.5",
+ "eslint-plugin-unicorn": "23.0.0",
+ execa: "4.1.0",
+ jest: "26.6.3",
+ "jest-snapshot-serializer-ansi": "1.0.0",
+ "jest-snapshot-serializer-raw": "1.1.0",
+ "jest-watch-typeahead": "0.6.1",
+ "npm-run-all": "4.1.5",
+ "path-browserify": "1.0.1",
+ prettier: "2.2.0",
+ rimraf: "3.0.2",
+ rollup: "2.33.3",
+ "rollup-plugin-node-globals": "1.4.0",
+ "rollup-plugin-terser": "7.0.2",
+ shelljs: "0.8.4",
+ "snapshot-diff": "0.8.1",
+ "strip-ansi": "6.0.0",
+ "synchronous-promise": "2.0.15",
+ tempy: "1.0.0",
+ "terser-webpack-plugin": "5.0.3",
+ webpack: "5.5.1"
+ };
+ var scripts = {
+ prepublishOnly: "echo \"Error: must publish from dist/\" && exit 1",
+ "prepare-release": "yarn && yarn build && yarn test:dist",
+ test: "jest",
+ "test:dev-package": "cross-env INSTALL_PACKAGE=1 jest",
+ "test:dist": "cross-env NODE_ENV=production jest",
+ "test:dist-standalone": "cross-env NODE_ENV=production TEST_STANDALONE=1 jest",
+ "test:integration": "jest tests_integration",
+ "perf:repeat": "yarn && yarn build && cross-env NODE_ENV=production node ./dist/bin-prettier.js --debug-repeat ${PERF_REPEAT:-1000} --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "perf:repeat-inspect": "yarn && yarn build && cross-env NODE_ENV=production node --inspect-brk ./dist/bin-prettier.js --debug-repeat ${PERF_REPEAT:-1000} --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "perf:benchmark": "yarn && yarn build && cross-env NODE_ENV=production node ./dist/bin-prettier.js --debug-benchmark --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ lint: "run-p lint:*",
+ "lint:typecheck": "tsc",
+ "lint:eslint": "cross-env EFF_NO_LINK_RULES=true eslint . --format friendly",
+ "lint:changelog": "node ./scripts/lint-changelog.js",
+ "lint:prettier": "prettier . \"!test*\" --check",
+ "lint:dist": "eslint --no-eslintrc --no-ignore --env=es6,browser --parser-options=ecmaVersion:2018 \"dist/!(bin-prettier|index|third-party).js\"",
+ "lint:spellcheck": "cspell \"**/*\" \".github/**/*\"",
+ "lint:deps": "node ./scripts/check-deps.js",
+ fix: "run-s fix:eslint fix:prettier",
+ "fix:eslint": "yarn lint:eslint --fix",
+ "fix:prettier": "yarn lint:prettier --write",
+ build: "node --max-old-space-size=3072 ./scripts/build/build.js",
+ "build-docs": "node ./scripts/build-docs.js"
+ };
+ var require$$3 = {
+ name: name,
+ version: version$1,
+ description: description,
+ bin: bin,
+ repository: repository,
+ homepage: homepage,
+ author: author,
+ license: license,
+ main: main,
+ browser: browser$1,
+ unpkg: unpkg,
+ engines: engines,
+ files: files,
+ dependencies: dependencies,
+ devDependencies: devDependencies,
+ scripts: scripts
+ };
+
+ var lib = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ }); // In the absence of a WeakSet or WeakMap implementation, don't break, but don't cache either.
+
+ function noop() {
+ var args = [];
+
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ }
+
+ function createWeakMap() {
+ if (typeof WeakMap !== 'undefined') {
+ return new WeakMap();
+ } else {
+ return fakeSetOrMap();
+ }
+ }
+ /**
+ * Creates and returns a no-op implementation of a WeakMap / WeakSet that never stores anything.
+ */
+
+
+ function fakeSetOrMap() {
+ return {
+ add: noop,
+ delete: noop,
+ get: noop,
+ set: noop,
+ has: function (k) {
+ return false;
+ }
+ };
+ } // Safe hasOwnProperty
+
+
+ var hop = Object.prototype.hasOwnProperty;
+
+ var has = function (obj, prop) {
+ return hop.call(obj, prop);
+ }; // Copy all own enumerable properties from source to target
+
+
+ function extend(target, source) {
+ for (var prop in source) {
+ if (has(source, prop)) {
+ target[prop] = source[prop];
+ }
+ }
+
+ return target;
+ }
+
+ var reLeadingNewline = /^[ \t]*(?:\r\n|\r|\n)/;
+ var reTrailingNewline = /(?:\r\n|\r|\n)[ \t]*$/;
+ var reStartsWithNewlineOrIsEmpty = /^(?:[\r\n]|$)/;
+ var reDetectIndentation = /(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/;
+ var reOnlyWhitespaceWithAtLeastOneNewline = /^[ \t]*[\r\n][ \t\r\n]*$/;
+
+ function _outdentArray(strings, firstInterpolatedValueSetsIndentationLevel, options) {
+ // If first interpolated value is a reference to outdent,
+ // determine indentation level from the indentation of the interpolated value.
+ var indentationLevel = 0;
+ var match = strings[0].match(reDetectIndentation);
+
+ if (match) {
+ indentationLevel = match[1].length;
+ }
+
+ var reSource = "(\\r\\n|\\r|\\n).{0," + indentationLevel + "}";
+ var reMatchIndent = new RegExp(reSource, 'g');
+
+ if (firstInterpolatedValueSetsIndentationLevel) {
+ strings = strings.slice(1);
+ }
+
+ var newline = options.newline,
+ trimLeadingNewline = options.trimLeadingNewline,
+ trimTrailingNewline = options.trimTrailingNewline;
+ var normalizeNewlines = typeof newline === 'string';
+ var l = strings.length;
+ var outdentedStrings = strings.map(function (v, i) {
+ // Remove leading indentation from all lines
+ v = v.replace(reMatchIndent, '$1'); // Trim a leading newline from the first string
+
+ if (i === 0 && trimLeadingNewline) {
+ v = v.replace(reLeadingNewline, '');
+ } // Trim a trailing newline from the last string
+
+
+ if (i === l - 1 && trimTrailingNewline) {
+ v = v.replace(reTrailingNewline, '');
+ } // Normalize newlines
+
+
+ if (normalizeNewlines) {
+ v = v.replace(/\r\n|\n|\r/g, function (_) {
+ return newline;
+ });
+ }
+
+ return v;
+ });
+ return outdentedStrings;
+ }
+
+ function concatStringsAndValues(strings, values) {
+ var ret = '';
+
+ for (var i = 0, l = strings.length; i < l; i++) {
+ ret += strings[i];
+
+ if (i < l - 1) {
+ ret += values[i];
+ }
+ }
+
+ return ret;
+ }
+
+ function isTemplateStringsArray(v) {
+ return has(v, 'raw') && has(v, 'length');
+ }
+ /**
+ * It is assumed that opts will not change. If this is a problem, clone your options object and pass the clone to
+ * makeInstance
+ * @param options
+ * @return {outdent}
+ */
+
+
+ function createInstance(options) {
+ /** Cache of pre-processed template literal arrays */
+ var arrayAutoIndentCache = createWeakMap();
+ /**
+ * Cache of pre-processed template literal arrays, where first interpolated value is a reference to outdent,
+ * before interpolated values are injected.
+ */
+
+ var arrayFirstInterpSetsIndentCache = createWeakMap();
+
+ function outdent(stringsOrOptions) {
+ var values = [];
+
+ for (var _i = 1; _i < arguments.length; _i++) {
+ values[_i - 1] = arguments[_i];
+ }
+ /* tslint:enable:no-shadowed-variable */
+
+
+ if (isTemplateStringsArray(stringsOrOptions)) {
+ var strings = stringsOrOptions; // Is first interpolated value a reference to outdent, alone on its own line, without any preceding non-whitespace?
+
+ var firstInterpolatedValueSetsIndentationLevel = (values[0] === outdent || values[0] === defaultOutdent) && reOnlyWhitespaceWithAtLeastOneNewline.test(strings[0]) && reStartsWithNewlineOrIsEmpty.test(strings[1]); // Perform outdentation
+
+ var cache = firstInterpolatedValueSetsIndentationLevel ? arrayFirstInterpSetsIndentCache : arrayAutoIndentCache;
+ var renderedArray = cache.get(strings);
+
+ if (!renderedArray) {
+ renderedArray = _outdentArray(strings, firstInterpolatedValueSetsIndentationLevel, options);
+ cache.set(strings, renderedArray);
+ }
+ /** If no interpolated values, skip concatenation step */
+
+
+ if (values.length === 0) {
+ return renderedArray[0];
+ }
+ /** Concatenate string literals with interpolated values */
+
+
+ var rendered = concatStringsAndValues(renderedArray, firstInterpolatedValueSetsIndentationLevel ? values.slice(1) : values);
+ return rendered;
+ } else {
+ // Create and return a new instance of outdent with the given options
+ return createInstance(extend(extend({}, options), stringsOrOptions || {}));
+ }
+ }
+
+ var fullOutdent = extend(outdent, {
+ string: function (str) {
+ return _outdentArray([str], false, options)[0];
+ }
+ });
+ return fullOutdent;
+ }
+
+ var defaultOutdent = createInstance({
+ trimLeadingNewline: true,
+ trimTrailingNewline: true
+ });
+ exports.outdent = defaultOutdent; // Named exports. Simple and preferred.
+ // import outdent from 'outdent';
+
+ exports.default = defaultOutdent;
+
+ {
+ // In webpack harmony-modules environments, module.exports is read-only,
+ // so we fail gracefully.
+ try {
+ module.exports = defaultOutdent;
+ Object.defineProperty(defaultOutdent, '__esModule', {
+ value: true
+ });
+ defaultOutdent.default = defaultOutdent;
+ defaultOutdent.outdent = defaultOutdent;
+ } catch (e) {}
+ }
+ });