Move `bin` path, in Windows, from D: to C: (#251)

951dd85 · Paulo F. Oliveira · 2024-02-13 04:03

8 files +1266 -1064

Files changed

modified .github/workflows/ubuntu.yml
+4 −4
@@ -199,7 +199,7 @@ jobs:
199 199 - run: env
200 200 - name: Check environment variables
201 201 run: |
202 ${INSTALL_DIR_FOR_ELIXIR}/elixir --version
203 ${INSTALL_DIR_FOR_GLEAM}/gleam --version
204 ${INSTALL_DIR_FOR_OTP}/erl -version
205 ${INSTALL_DIR_FOR_REBAR3}/rebar3 version
202 + ${INSTALL_DIR_FOR_ELIXIR}/bin/elixir -v
203 + ${INSTALL_DIR_FOR_GLEAM}/bin/gleam --version
204 + ${INSTALL_DIR_FOR_OTP}/bin/erl -version
205 + ${INSTALL_DIR_FOR_REBAR3}/bin/rebar3 version
modified .github/workflows/windows.yml
+5 −5
@@ -137,8 +137,8 @@ jobs:
137 137 - run: env
138 138 - name: Check environment variables
139 139 run: |
140 ${INSTALL_DIR_FOR_ELIXIR}/elixir --version
141 ${INSTALL_DIR_FOR_GLEAM}/gleam --version
142 ${INSTALL_DIR_FOR_OTP}/erl -version
143 ${INSTALL_DIR_FOR_REBAR3}/rebar3 version
144 shell: bash
140 + & "$Env:INSTALL_DIR_FOR_ELIXIR/bin/elixir" "-v"
141 + & "$Env:INSTALL_DIR_FOR_GLEAM/bin/gleam.exe" "--version"
142 + & "$Env:INSTALL_DIR_FOR_OTP/bin/erl.exe" "+V"
143 + & "$Env:INSTALL_DIR_FOR_REBAR3/bin/rebar3.cmd" "version"
144 + & "$Env:INSTALL_DIR_FOR_REBAR3/bin/rebar3.ps1" "version"
modified .gitignore
+0 −1
@@ -1,3 +1,2 @@
1 1 node_modules/**
2 dist/.github/workflows
3 2 test/.tool-versions
modified README.md
+3 −0
@@ -282,6 +282,9 @@ environment variables:
282 282 - `INSTALL_DIR_FOR_GLEAM`: base folder for Gleam
283 283 - `INSTALL_DIR_FOR_REBAR3`: base folder for `rebar3`
284 284
285 +In each of these you'll find folder `bin` where the appropriate binaries, platform-dependant,
286 +are found (i.e. `erl`, `erl.exe`, `rebar3`, `rebar3.exe`, ...).
287 +
285 288 ## Elixir Problem Matchers
286 289
287 290 The Elixir Problem Matchers in this repository are adapted from
modified dist/index.js
+719 −701
@@ -2547,11 +2547,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
2547 2547 };
2548 2548 var _a;
2549 2549 Object.defineProperty(exports, "__esModule", ({ value: true }));
2550 exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rename = exports.readlink = exports.readdir = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;
2550 +exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;
2551 2551 const fs = __importStar(__nccwpck_require__(7147));
2552 2552 const path = __importStar(__nccwpck_require__(1017));
2553 _a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
2553 +_a = fs.promises
2554 +// export const {open} = 'fs'
2555 +, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
2556 +// export const {open} = 'fs'
2554 2557 exports.IS_WINDOWS = process.platform === 'win32';
2558 +// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691
2559 +exports.UV_FS_O_EXLOCK = 0x10000000;
2560 +exports.READONLY = fs.constants.O_RDONLY;
2555 2561 function exists(fsPath) {
2556 2562 return __awaiter(this, void 0, void 0, function* () {
2557 2563 try {
@@ -2732,12 +2738,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
2732 2738 Object.defineProperty(exports, "__esModule", ({ value: true }));
2733 2739 exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;
2734 2740 const assert_1 = __nccwpck_require__(9491);
2735 const childProcess = __importStar(__nccwpck_require__(2081));
2736 2741 const path = __importStar(__nccwpck_require__(1017));
2737 const util_1 = __nccwpck_require__(3837);
2738 2742 const ioUtil = __importStar(__nccwpck_require__(1962));
2739 const exec = util_1.promisify(childProcess.exec);
2740 const execFile = util_1.promisify(childProcess.execFile);
2741 2743 /**
2742 2744 * Copies a file or folder.
2743 2745 * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
@@ -2818,61 +2820,23 @@ exports.mv = mv;
2818 2820 function rmRF(inputPath) {
2819 2821 return __awaiter(this, void 0, void 0, function* () {
2820 2822 if (ioUtil.IS_WINDOWS) {
2821 // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
2822 // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
2823 2823 // Check for invalid characters
2824 2824 // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
2825 2825 if (/[*"<>|]/.test(inputPath)) {
2826 2826 throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');
2827 2827 }
2828 try {
2829 const cmdPath = ioUtil.getCmdPath();
2830 if (yield ioUtil.isDirectory(inputPath, true)) {
2831 yield exec(`${cmdPath} /s /c "rd /s /q "%inputPath%""`, {
2832 env: { inputPath }
2833 });
2834 }
2835 else {
2836 yield exec(`${cmdPath} /s /c "del /f /a "%inputPath%""`, {
2837 env: { inputPath }
2838 });
2839 }
2840 }
2841 catch (err) {
2842 // if you try to delete a file that doesn't exist, desired result is achieved
2843 // other errors are valid
2844 if (err.code !== 'ENOENT')
2845 throw err;
2846 }
2847 // Shelling out fails to remove a symlink folder with missing source, this unlink catches that
2848 try {
2849 yield ioUtil.unlink(inputPath);
2850 }
2851 catch (err) {
2852 // if you try to delete a file that doesn't exist, desired result is achieved
2853 // other errors are valid
2854 if (err.code !== 'ENOENT')
2855 throw err;
2856 }
2857 2828 }
2858 else {
2859 let isDir = false;
2860 try {
2861 isDir = yield ioUtil.isDirectory(inputPath);
2862 }
2863 catch (err) {
2864 // if you try to delete a file that doesn't exist, desired result is achieved
2865 // other errors are valid
2866 if (err.code !== 'ENOENT')
2867 throw err;
2868 return;
2869 }
2870 if (isDir) {
2871 yield execFile(`rm`, [`-rf`, `${inputPath}`]);
2872 }
2873 else {
2874 yield ioUtil.unlink(inputPath);
2875 }
2829 + try {
2830 + // note if path does not exist, error is silent
2831 + yield ioUtil.rm(inputPath, {
2832 + force: true,
2833 + maxRetries: 3,
2834 + recursive: true,
2835 + retryDelay: 300
2836 + });
2837 + }
2838 + catch (err) {
2839 + throw new Error(`File was unable to be removed ${err}`);
2876 2840 }
2877 2841 });
2878 2842 }
@@ -3972,8 +3936,11 @@ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
3972 3936 // Max safe segment length for coercion.
3973 3937 var MAX_SAFE_COMPONENT_LENGTH = 16
3974 3938
3939 +var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
3940 +
3975 3941 // The actual regexps go on exports.re
3976 3942 var re = exports.re = []
3943 +var safeRe = exports.safeRe = []
3977 3944 var src = exports.src = []
3978 3945 var t = exports.tokens = {}
3979 3946 var R = 0
@@ -3982,6 +3949,31 @@ function tok (n) {
3982 3949 t[n] = R++
3983 3950 }
3984 3951
3952 +var LETTERDASHNUMBER = '[a-zA-Z0-9-]'
3953 +
3954 +// Replace some greedy regex tokens to prevent regex dos issues. These regex are
3955 +// used internally via the safeRe object since all inputs in this library get
3956 +// normalized first to trim and collapse all extra whitespace. The original
3957 +// regexes are exported for userland consumption and lower level usage. A
3958 +// future breaking change could export the safer regex only with a note that
3959 +// all input should have extra whitespace removed.
3960 +var safeRegexReplacements = [
3961 + ['\\s', 1],
3962 + ['\\d', MAX_LENGTH],
3963 + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
3964 +]
3965 +
3966 +function makeSafeRe (value) {
3967 + for (var i = 0; i < safeRegexReplacements.length; i++) {
3968 + var token = safeRegexReplacements[i][0]
3969 + var max = safeRegexReplacements[i][1]
3970 + value = value
3971 + .split(token + '*').join(token + '{0,' + max + '}')
3972 + .split(token + '+').join(token + '{1,' + max + '}')
3973 + }
3974 + return value
3975 +}
3976 +
3985 3977 // The following Regular Expressions can be used for tokenizing,
3986 3978 // validating, and parsing SemVer version strings.
3987 3979
@@ -3991,14 +3983,14 @@ function tok (n) {
3991 3983 tok('NUMERICIDENTIFIER')
3992 3984 src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
3993 3985 tok('NUMERICIDENTIFIERLOOSE')
3994 src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'
3986 +src[t.NUMERICIDENTIFIERLOOSE] = '\\d+'
3995 3987
3996 3988 // ## Non-numeric Identifier
3997 3989 // Zero or more digits, followed by a letter or hyphen, and then zero or
3998 3990 // more letters, digits, or hyphens.
3999 3991
4000 3992 tok('NONNUMERICIDENTIFIER')
4001 src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
3993 +src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*'
4002 3994
4003 3995 // ## Main Version
4004 3996 // Three dot-separated numeric identifiers.
@@ -4040,7 +4032,7 @@ src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
4040 4032 // Any combination of digits, letters, or hyphens.
4041 4033
4042 4034 tok('BUILDIDENTIFIER')
4043 src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
4035 +src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+'
4044 4036
4045 4037 // ## Build Metadata
4046 4038 // Plus sign, followed by one or more period-separated build metadata
@@ -4120,6 +4112,7 @@ src[t.COERCE] = '(^|[^\\d])' +
4120 4112 '(?:$|[^\\d])'
4121 4113 tok('COERCERTL')
4122 4114 re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
4115 +safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g')
4123 4116
4124 4117 // Tilde ranges.
4125 4118 // Meaning is "reasonably at or greater than"
@@ -4129,6 +4122,7 @@ src[t.LONETILDE] = '(?:~>?)'
4129 4122 tok('TILDETRIM')
4130 4123 src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
4131 4124 re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
4125 +safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g')
4132 4126 var tildeTrimReplace = '$1~'
4133 4127
4134 4128 tok('TILDE')
@@ -4144,6 +4138,7 @@ src[t.LONECARET] = '(?:\\^)'
4144 4138 tok('CARETTRIM')
4145 4139 src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
4146 4140 re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
4141 +safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g')
4147 4142 var caretTrimReplace = '$1^'
4148 4143
4149 4144 tok('CARET')
@@ -4165,6 +4160,7 @@ src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
4165 4160
4166 4161 // this one has to use the /g flag
4167 4162 re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
4163 +safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g')
4168 4164 var comparatorTrimReplace = '$1$2$3'
4169 4165
4170 4166 // Something like `1.2.3 - 1.2.4`
@@ -4193,6 +4189,14 @@ for (var i = 0; i < R; i++) {
4193 4189 debug(i, src[i])
4194 4190 if (!re[i]) {
4195 4191 re[i] = new RegExp(src[i])
4192 +
4193 + // Replace all greedy whitespace to prevent regex dos issues. These regex are
4194 + // used internally via the safeRe object since all inputs in this library get
4195 + // normalized first to trim and collapse all extra whitespace. The original
4196 + // regexes are exported for userland consumption and lower level usage. A
4197 + // future breaking change could export the safer regex only with a note that
4198 + // all input should have extra whitespace removed.
4199 + safeRe[i] = new RegExp(makeSafeRe(src[i]))
4196 4200 }
4197 4201 }
4198 4202
@@ -4217,7 +4221,7 @@ function parse (version, options) {
4217 4221 return null
4218 4222 }
4219 4223
4220 var r = options.loose ? re[t.LOOSE] : re[t.FULL]
4224 + var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]
4221 4225 if (!r.test(version)) {
4222 4226 return null
4223 4227 }
@@ -4272,7 +4276,7 @@ function SemVer (version, options) {
4272 4276 this.options = options
4273 4277 this.loose = !!options.loose
4274 4278
4275 var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
4279 + var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL])
4276 4280
4277 4281 if (!m) {
4278 4282 throw new TypeError('Invalid Version: ' + version)
@@ -4717,6 +4721,7 @@ function Comparator (comp, options) {
4717 4721 return new Comparator(comp, options)
4718 4722 }
4719 4723
4724 + comp = comp.trim().split(/\s+/).join(' ')
4720 4725 debug('comparator', comp, options)
4721 4726 this.options = options
4722 4727 this.loose = !!options.loose
@@ -4733,7 +4738,7 @@ function Comparator (comp, options) {
4733 4738
4734 4739 var ANY = {}
4735 4740 Comparator.prototype.parse = function (comp) {
4736 var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
4741 + var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]
4737 4742 var m = comp.match(r)
4738 4743
4739 4744 if (!m) {
@@ -4857,9 +4862,16 @@ function Range (range, options) {
4857 4862 this.loose = !!options.loose
4858 4863 this.includePrerelease = !!options.includePrerelease
4859 4864
4860 // First, split based on boolean or ||
4865 + // First reduce all whitespace as much as possible so we do not have to rely
4866 + // on potentially slow regexes like \s*. This is then stored and used for
4867 + // future error messages as well.
4861 4868 this.raw = range
4862 this.set = range.split(/\s*\|\|\s*/).map(function (range) {
4869 + .trim()
4870 + .split(/\s+/)
4871 + .join(' ')
4872 +
4873 + // First, split based on boolean or ||
4874 + this.set = this.raw.split('||').map(function (range) {
4863 4875 return this.parseRange(range.trim())
4864 4876 }, this).filter(function (c) {
4865 4877 // throw out any that are not relevant for whatever reason
@@ -4867,7 +4879,7 @@ function Range (range, options) {
4867 4879 })
4868 4880
4869 4881 if (!this.set.length) {
4870 throw new TypeError('Invalid SemVer Range: ' + range)
4882 + throw new TypeError('Invalid SemVer Range: ' + this.raw)
4871 4883 }
4872 4884
4873 4885 this.format()
@@ -4886,20 +4898,19 @@ Range.prototype.toString = function () {
4886 4898
4887 4899 Range.prototype.parseRange = function (range) {
4888 4900 var loose = this.options.loose
4889 range = range.trim()
4890 4901 // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
4891 var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
4902 + var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE]
4892 4903 range = range.replace(hr, hyphenReplace)
4893 4904 debug('hyphen replace', range)
4894 4905 // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
4895 range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
4896 debug('comparator trim', range, re[t.COMPARATORTRIM])
4906 + range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace)
4907 + debug('comparator trim', range, safeRe[t.COMPARATORTRIM])
4897 4908
4898 4909 // `~ 1.2.3` => `~1.2.3`
4899 range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
4910 + range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace)
4900 4911
4901 4912 // `^ 1.2.3` => `^1.2.3`
4902 range = range.replace(re[t.CARETTRIM], caretTrimReplace)
4913 + range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace)
4903 4914
4904 4915 // normalize spaces
4905 4916 range = range.split(/\s+/).join(' ')
@@ -4907,7 +4918,7 @@ Range.prototype.parseRange = function (range) {
4907 4918 // At this point, the range is completely trimmed and
4908 4919 // ready to be split into comparators.
4909 4920
4910 var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
4921 + var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]
4911 4922 var set = range.split(' ').map(function (comp) {
4912 4923 return parseComparator(comp, this.options)
4913 4924 }, this).join(' ').split(/\s+/)
@@ -5007,7 +5018,7 @@ function replaceTildes (comp, options) {
5007 5018 }
5008 5019
5009 5020 function replaceTilde (comp, options) {
5010 var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
5021 + var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE]
5011 5022 return comp.replace(r, function (_, M, m, p, pr) {
5012 5023 debug('tilde', comp, _, M, m, p, pr)
5013 5024 var ret
@@ -5048,7 +5059,7 @@ function replaceCarets (comp, options) {
5048 5059
5049 5060 function replaceCaret (comp, options) {
5050 5061 debug('caret', comp, options)
5051 var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
5062 + var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET]
5052 5063 return comp.replace(r, function (_, M, m, p, pr) {
5053 5064 debug('caret', comp, _, M, m, p, pr)
5054 5065 var ret
@@ -5107,7 +5118,7 @@ function replaceXRanges (comp, options) {
5107 5118
5108 5119 function replaceXRange (comp, options) {
5109 5120 comp = comp.trim()
5110 var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
5121 + var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE]
5111 5122 return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
5112 5123 debug('xRange', comp, ret, gtlt, M, m, p, pr)
5113 5124 var xM = isX(M)
@@ -5182,7 +5193,7 @@ function replaceXRange (comp, options) {
5182 5193 function replaceStars (comp, options) {
5183 5194 debug('replaceStars', comp, options)
5184 5195 // Looseness is ignored here. star is always as loose as it gets!
5185 return comp.trim().replace(re[t.STAR], '')
5196 + return comp.trim().replace(safeRe[t.STAR], '')
5186 5197 }
5187 5198
5188 5199 // This function is passed to string.replace(re[t.HYPHENRANGE])
@@ -5508,7 +5519,7 @@ function coerce (version, options) {
5508 5519
5509 5520 var match = null
5510 5521 if (!options.rtl) {
5511 match = version.match(re[t.COERCE])
5522 + match = version.match(safeRe[t.COERCE])
5512 5523 } else {
5513 5524 // Find the right-most coercible string that does not share
5514 5525 // a terminus with a more left-ward coercible string.
@@ -5519,17 +5530,17 @@ function coerce (version, options) {
5519 5530 // Stop when we get a match that ends at the string end, since no
5520 5531 // coercible string can be more right-ward without the same terminus.
5521 5532 var next
5522 while ((next = re[t.COERCERTL].exec(version)) &&
5533 + while ((next = safeRe[t.COERCERTL].exec(version)) &&
5523 5534 (!match || match.index + match[0].length !== version.length)
5524 5535 ) {
5525 5536 if (!match ||
5526 5537 next.index + next[0].length !== match.index + match[0].length) {
5527 5538 match = next
5528 5539 }
5529 re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
5540 + safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
5530 5541 }
5531 5542 // leave it in a clean state
5532 re[t.COERCERTL].lastIndex = -1
5543 + safeRe[t.COERCERTL].lastIndex = -1
5533 5544 }
5534 5545
5535 5546 if (match === null) {
@@ -5628,445 +5639,103 @@ module.exports = v4;
5628 5639
5629 5640 /***/ }),
5630 5641
5631 /***/ 7129:
5642 +/***/ 1532:
5632 5643 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
5633 5644
5634 "use strict";
5635
5636
5637 // A linked list to keep track of recently-used-ness
5638 const Yallist = __nccwpck_require__(665)
5639
5640 const MAX = Symbol('max')
5641 const LENGTH = Symbol('length')
5642 const LENGTH_CALCULATOR = Symbol('lengthCalculator')
5643 const ALLOW_STALE = Symbol('allowStale')
5644 const MAX_AGE = Symbol('maxAge')
5645 const DISPOSE = Symbol('dispose')
5646 const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')
5647 const LRU_LIST = Symbol('lruList')
5648 const CACHE = Symbol('cache')
5649 const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')
5650
5651 const naiveLength = () => 1
5652
5653 // lruList is a yallist where the head is the youngest
5654 // item, and the tail is the oldest. the list contains the Hit
5655 // objects as the entries.
5656 // Each Hit object has a reference to its Yallist.Node. This
5657 // never changes.
5658 //
5659 // cache is a Map (or PseudoMap) that matches the keys to
5660 // the Yallist.Node object.
5661 class LRUCache {
5662 constructor (options) {
5663 if (typeof options === 'number')
5664 options = { max: options }
5665
5666 if (!options)
5667 options = {}
5668
5669 if (options.max && (typeof options.max !== 'number' || options.max < 0))
5670 throw new TypeError('max must be a non-negative number')
5671 // Kind of weird to have a default max of Infinity, but oh well.
5672 const max = this[MAX] = options.max || Infinity
5673
5674 const lc = options.length || naiveLength
5675 this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc
5676 this[ALLOW_STALE] = options.stale || false
5677 if (options.maxAge && typeof options.maxAge !== 'number')
5678 throw new TypeError('maxAge must be a number')
5679 this[MAX_AGE] = options.maxAge || 0
5680 this[DISPOSE] = options.dispose
5681 this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false
5682 this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false
5683 this.reset()
5645 +const ANY = Symbol('SemVer ANY')
5646 +// hoisted class for cyclic dependency
5647 +class Comparator {
5648 + static get ANY () {
5649 + return ANY
5684 5650 }
5685 5651
5686 // resize the cache when the max changes.
5687 set max (mL) {
5688 if (typeof mL !== 'number' || mL < 0)
5689 throw new TypeError('max must be a non-negative number')
5652 + constructor (comp, options) {
5653 + options = parseOptions(options)
5690 5654
5691 this[MAX] = mL || Infinity
5692 trim(this)
5693 }
5694 get max () {
5695 return this[MAX]
5696 }
5655 + if (comp instanceof Comparator) {
5656 + if (comp.loose === !!options.loose) {
5657 + return comp
5658 + } else {
5659 + comp = comp.value
5660 + }
5661 + }
5697 5662
5698 set allowStale (allowStale) {
5699 this[ALLOW_STALE] = !!allowStale
5700 }
5701 get allowStale () {
5702 return this[ALLOW_STALE]
5703 }
5663 + comp = comp.trim().split(/\s+/).join(' ')
5664 + debug('comparator', comp, options)
5665 + this.options = options
5666 + this.loose = !!options.loose
5667 + this.parse(comp)
5704 5668
5705 set maxAge (mA) {
5706 if (typeof mA !== 'number')
5707 throw new TypeError('maxAge must be a non-negative number')
5669 + if (this.semver === ANY) {
5670 + this.value = ''
5671 + } else {
5672 + this.value = this.operator + this.semver.version
5673 + }
5708 5674
5709 this[MAX_AGE] = mA
5710 trim(this)
5711 }
5712 get maxAge () {
5713 return this[MAX_AGE]
5675 + debug('comp', this)
5714 5676 }
5715 5677
5716 // resize the cache when the lengthCalculator changes.
5717 set lengthCalculator (lC) {
5718 if (typeof lC !== 'function')
5719 lC = naiveLength
5678 + parse (comp) {
5679 + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
5680 + const m = comp.match(r)
5720 5681
5721 if (lC !== this[LENGTH_CALCULATOR]) {
5722 this[LENGTH_CALCULATOR] = lC
5723 this[LENGTH] = 0
5724 this[LRU_LIST].forEach(hit => {
5725 hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)
5726 this[LENGTH] += hit.length
5727 })
5682 + if (!m) {
5683 + throw new TypeError(`Invalid comparator: ${comp}`)
5728 5684 }
5729 trim(this)
5730 }
5731 get lengthCalculator () { return this[LENGTH_CALCULATOR] }
5732
5733 get length () { return this[LENGTH] }
5734 get itemCount () { return this[LRU_LIST].length }
5735 5685
5736 rforEach (fn, thisp) {
5737 thisp = thisp || this
5738 for (let walker = this[LRU_LIST].tail; walker !== null;) {
5739 const prev = walker.prev
5740 forEachStep(this, fn, walker, thisp)
5741 walker = prev
5686 + this.operator = m[1] !== undefined ? m[1] : ''
5687 + if (this.operator === '=') {
5688 + this.operator = ''
5742 5689 }
5743 }
5744 5690
5745 forEach (fn, thisp) {
5746 thisp = thisp || this
5747 for (let walker = this[LRU_LIST].head; walker !== null;) {
5748 const next = walker.next
5749 forEachStep(this, fn, walker, thisp)
5750 walker = next
5691 + // if it literally is just '>' or '' then allow anything.
5692 + if (!m[2]) {
5693 + this.semver = ANY
5694 + } else {
5695 + this.semver = new SemVer(m[2], this.options.loose)
5751 5696 }
5752 5697 }
5753 5698
5754 keys () {
5755 return this[LRU_LIST].toArray().map(k => k.key)
5699 + toString () {
5700 + return this.value
5756 5701 }
5757 5702
5758 values () {
5759 return this[LRU_LIST].toArray().map(k => k.value)
5760 }
5703 + test (version) {
5704 + debug('Comparator.test', version, this.options.loose)
5761 5705
5762 reset () {
5763 if (this[DISPOSE] &&
5764 this[LRU_LIST] &&
5765 this[LRU_LIST].length) {
5766 this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))
5706 + if (this.semver === ANY || version === ANY) {
5707 + return true
5767 5708 }
5768 5709
5769 this[CACHE] = new Map() // hash of items by key
5770 this[LRU_LIST] = new Yallist() // list of items in order of use recency
5771 this[LENGTH] = 0 // length of items in the list
5772 }
5710 + if (typeof version === 'string') {
5711 + try {
5712 + version = new SemVer(version, this.options)
5713 + } catch (er) {
5714 + return false
5715 + }
5716 + }
5773 5717
5774 dump () {
5775 return this[LRU_LIST].map(hit =>
5776 isStale(this, hit) ? false : {
5777 k: hit.key,
5778 v: hit.value,
5779 e: hit.now + (hit.maxAge || 0)
5780 }).toArray().filter(h => h)
5718 + return cmp(version, this.operator, this.semver, this.options)
5781 5719 }
5782 5720
5783 dumpLru () {
5784 return this[LRU_LIST]
5785 }
5721 + intersects (comp, options) {
5722 + if (!(comp instanceof Comparator)) {
5723 + throw new TypeError('a Comparator is required')
5724 + }
5786 5725
5787 set (key, value, maxAge) {
5788 maxAge = maxAge || this[MAX_AGE]
5726 + if (this.operator === '') {
5727 + if (this.value === '') {
5728 + return true
5729 + }
5730 + return new Range(comp.value, options).test(this.value)
5731 + } else if (comp.operator === '') {
5732 + if (comp.value === '') {
5733 + return true
5734 + }
5735 + return new Range(this.value, options).test(comp.semver)
5736 + }
5789 5737
5790 if (maxAge && typeof maxAge !== 'number')
5791 throw new TypeError('maxAge must be a number')
5792
5793 const now = maxAge ? Date.now() : 0
5794 const len = this[LENGTH_CALCULATOR](value, key)
5795
5796 if (this[CACHE].has(key)) {
5797 if (len > this[MAX]) {
5798 del(this, this[CACHE].get(key))
5799 return false
5800 }
5801
5802 const node = this[CACHE].get(key)
5803 const item = node.value
5804
5805 // dispose of the old one before overwriting
5806 // split out into 2 ifs for better coverage tracking
5807 if (this[DISPOSE]) {
5808 if (!this[NO_DISPOSE_ON_SET])
5809 this[DISPOSE](key, item.value)
5810 }
5811
5812 item.now = now
5813 item.maxAge = maxAge
5814 item.value = value
5815 this[LENGTH] += len - item.length
5816 item.length = len
5817 this.get(key)
5818 trim(this)
5819 return true
5820 }
5821
5822 const hit = new Entry(key, value, len, now, maxAge)
5823
5824 // oversized objects fall out of cache automatically.
5825 if (hit.length > this[MAX]) {
5826 if (this[DISPOSE])
5827 this[DISPOSE](key, value)
5828
5829 return false
5830 }
5831
5832 this[LENGTH] += hit.length
5833 this[LRU_LIST].unshift(hit)
5834 this[CACHE].set(key, this[LRU_LIST].head)
5835 trim(this)
5836 return true
5837 }
5838
5839 has (key) {
5840 if (!this[CACHE].has(key)) return false
5841 const hit = this[CACHE].get(key).value
5842 return !isStale(this, hit)
5843 }
5844
5845 get (key) {
5846 return get(this, key, true)
5847 }
5848
5849 peek (key) {
5850 return get(this, key, false)
5851 }
5852
5853 pop () {
5854 const node = this[LRU_LIST].tail
5855 if (!node)
5856 return null
5857
5858 del(this, node)
5859 return node.value
5860 }
5861
5862 del (key) {
5863 del(this, this[CACHE].get(key))
5864 }
5865
5866 load (arr) {
5867 // reset the cache
5868 this.reset()
5869
5870 const now = Date.now()
5871 // A previous serialized cache has the most recent items first
5872 for (let l = arr.length - 1; l >= 0; l--) {
5873 const hit = arr[l]
5874 const expiresAt = hit.e || 0
5875 if (expiresAt === 0)
5876 // the item was created without expiration in a non aged cache
5877 this.set(hit.k, hit.v)
5878 else {
5879 const maxAge = expiresAt - now
5880 // dont add already expired items
5881 if (maxAge > 0) {
5882 this.set(hit.k, hit.v, maxAge)
5883 }
5884 }
5885 }
5886 }
5887
5888 prune () {
5889 this[CACHE].forEach((value, key) => get(this, key, false))
5890 }
5891 }
5892
5893 const get = (self, key, doUse) => {
5894 const node = self[CACHE].get(key)
5895 if (node) {
5896 const hit = node.value
5897 if (isStale(self, hit)) {
5898 del(self, node)
5899 if (!self[ALLOW_STALE])
5900 return undefined
5901 } else {
5902 if (doUse) {
5903 if (self[UPDATE_AGE_ON_GET])
5904 node.value.now = Date.now()
5905 self[LRU_LIST].unshiftNode(node)
5906 }
5907 }
5908 return hit.value
5909 }
5910 }
5911
5912 const isStale = (self, hit) => {
5913 if (!hit || (!hit.maxAge && !self[MAX_AGE]))
5914 return false
5915
5916 const diff = Date.now() - hit.now
5917 return hit.maxAge ? diff > hit.maxAge
5918 : self[MAX_AGE] && (diff > self[MAX_AGE])
5919 }
5920
5921 const trim = self => {
5922 if (self[LENGTH] > self[MAX]) {
5923 for (let walker = self[LRU_LIST].tail;
5924 self[LENGTH] > self[MAX] && walker !== null;) {
5925 // We know that we're about to delete this one, and also
5926 // what the next least recently used key will be, so just
5927 // go ahead and set it now.
5928 const prev = walker.prev
5929 del(self, walker)
5930 walker = prev
5931 }
5932 }
5933 }
5934
5935 const del = (self, node) => {
5936 if (node) {
5937 const hit = node.value
5938 if (self[DISPOSE])
5939 self[DISPOSE](hit.key, hit.value)
5940
5941 self[LENGTH] -= hit.length
5942 self[CACHE].delete(hit.key)
5943 self[LRU_LIST].removeNode(node)
5944 }
5945 }
5946
5947 class Entry {
5948 constructor (key, value, length, now, maxAge) {
5949 this.key = key
5950 this.value = value
5951 this.length = length
5952 this.now = now
5953 this.maxAge = maxAge || 0
5954 }
5955 }
5956
5957 const forEachStep = (self, fn, node, thisp) => {
5958 let hit = node.value
5959 if (isStale(self, hit)) {
5960 del(self, node)
5961 if (!self[ALLOW_STALE])
5962 hit = undefined
5963 }
5964 if (hit)
5965 fn.call(thisp, hit.value, hit.key, self)
5966 }
5967
5968 module.exports = LRUCache
5969
5970
5971 /***/ }),
5972
5973 /***/ 1532:
5974 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
5975
5976 const ANY = Symbol('SemVer ANY')
5977 // hoisted class for cyclic dependency
5978 class Comparator {
5979 static get ANY () {
5980 return ANY
5981 }
5982
5983 constructor (comp, options) {
5984 options = parseOptions(options)
5985
5986 if (comp instanceof Comparator) {
5987 if (comp.loose === !!options.loose) {
5988 return comp
5989 } else {
5990 comp = comp.value
5991 }
5992 }
5993
5994 comp = comp.trim().split(/\s+/).join(' ')
5995 debug('comparator', comp, options)
5996 this.options = options
5997 this.loose = !!options.loose
5998 this.parse(comp)
5999
6000 if (this.semver === ANY) {
6001 this.value = ''
6002 } else {
6003 this.value = this.operator + this.semver.version
6004 }
6005
6006 debug('comp', this)
6007 }
6008
6009 parse (comp) {
6010 const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
6011 const m = comp.match(r)
6012
6013 if (!m) {
6014 throw new TypeError(`Invalid comparator: ${comp}`)
6015 }
6016
6017 this.operator = m[1] !== undefined ? m[1] : ''
6018 if (this.operator === '=') {
6019 this.operator = ''
6020 }
6021
6022 // if it literally is just '>' or '' then allow anything.
6023 if (!m[2]) {
6024 this.semver = ANY
6025 } else {
6026 this.semver = new SemVer(m[2], this.options.loose)
6027 }
6028 }
6029
6030 toString () {
6031 return this.value
6032 }
6033
6034 test (version) {
6035 debug('Comparator.test', version, this.options.loose)
6036
6037 if (this.semver === ANY || version === ANY) {
6038 return true
6039 }
6040
6041 if (typeof version === 'string') {
6042 try {
6043 version = new SemVer(version, this.options)
6044 } catch (er) {
6045 return false
6046 }
6047 }
6048
6049 return cmp(version, this.operator, this.semver, this.options)
6050 }
6051
6052 intersects (comp, options) {
6053 if (!(comp instanceof Comparator)) {
6054 throw new TypeError('a Comparator is required')
6055 }
6056
6057 if (this.operator === '') {
6058 if (this.value === '') {
6059 return true
6060 }
6061 return new Range(comp.value, options).test(this.value)
6062 } else if (comp.operator === '') {
6063 if (comp.value === '') {
6064 return true
6065 }
6066 return new Range(this.value, options).test(comp.semver)
6067 }
6068
6069 options = parseOptions(options)
5738 + options = parseOptions(options)
6070 5739
6071 5740 // Special cases where nothing can possibly be lower
6072 5741 if (options.includePrerelease &&
@@ -6321,7 +5990,7 @@ class Range {
6321 5990
6322 5991 module.exports = Range
6323 5992
6324 const LRU = __nccwpck_require__(7129)
5993 +const LRU = __nccwpck_require__(1196)
6325 5994 const cache = new LRU({ max: 1000 })
6326 5995
6327 5996 const parseOptions = __nccwpck_require__(785)
@@ -7581,270 +7250,612 @@ module.exports = debug
7581 7250 /***/ 2463:
7582 7251 /***/ ((module) => {
7583 7252
7584 const numeric = /^[0-9]+$/
7585 const compareIdentifiers = (a, b) => {
7586 const anum = numeric.test(a)
7587 const bnum = numeric.test(b)
7253 +const numeric = /^[0-9]+$/
7254 +const compareIdentifiers = (a, b) => {
7255 + const anum = numeric.test(a)
7256 + const bnum = numeric.test(b)
7257 +
7258 + if (anum && bnum) {
7259 + a = +a
7260 + b = +b
7261 + }
7262 +
7263 + return a === b ? 0
7264 + : (anum && !bnum) ? -1
7265 + : (bnum && !anum) ? 1
7266 + : a < b ? -1
7267 + : 1
7268 +}
7269 +
7270 +const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
7271 +
7272 +module.exports = {
7273 + compareIdentifiers,
7274 + rcompareIdentifiers,
7275 +}
7276 +
7277 +
7278 +/***/ }),
7279 +
7280 +/***/ 785:
7281 +/***/ ((module) => {
7282 +
7283 +// parse out just the options we care about
7284 +const looseOption = Object.freeze({ loose: true })
7285 +const emptyOpts = Object.freeze({ })
7286 +const parseOptions = options => {
7287 + if (!options) {
7288 + return emptyOpts
7289 + }
7290 +
7291 + if (typeof options !== 'object') {
7292 + return looseOption
7293 + }
7294 +
7295 + return options
7296 +}
7297 +module.exports = parseOptions
7298 +
7299 +
7300 +/***/ }),
7301 +
7302 +/***/ 9523:
7303 +/***/ ((module, exports, __nccwpck_require__) => {
7304 +
7305 +const {
7306 + MAX_SAFE_COMPONENT_LENGTH,
7307 + MAX_SAFE_BUILD_LENGTH,
7308 + MAX_LENGTH,
7309 +} = __nccwpck_require__(2293)
7310 +const debug = __nccwpck_require__(427)
7311 +exports = module.exports = {}
7312 +
7313 +// The actual regexps go on exports.re
7314 +const re = exports.re = []
7315 +const safeRe = exports.safeRe = []
7316 +const src = exports.src = []
7317 +const t = exports.t = {}
7318 +let R = 0
7319 +
7320 +const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
7321 +
7322 +// Replace some greedy regex tokens to prevent regex dos issues. These regex are
7323 +// used internally via the safeRe object since all inputs in this library get
7324 +// normalized first to trim and collapse all extra whitespace. The original
7325 +// regexes are exported for userland consumption and lower level usage. A
7326 +// future breaking change could export the safer regex only with a note that
7327 +// all input should have extra whitespace removed.
7328 +const safeRegexReplacements = [
7329 + ['\\s', 1],
7330 + ['\\d', MAX_LENGTH],
7331 + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
7332 +]
7333 +
7334 +const makeSafeRegex = (value) => {
7335 + for (const [token, max] of safeRegexReplacements) {
7336 + value = value
7337 + .split(`${token}*`).join(`${token}{0,${max}}`)
7338 + .split(`${token}+`).join(`${token}{1,${max}}`)
7339 + }
7340 + return value
7341 +}
7342 +
7343 +const createToken = (name, value, isGlobal) => {
7344 + const safe = makeSafeRegex(value)
7345 + const index = R++
7346 + debug(name, index, value)
7347 + t[name] = index
7348 + src[index] = value
7349 + re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
7350 + safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
7351 +}
7352 +
7353 +// The following Regular Expressions can be used for tokenizing,
7354 +// validating, and parsing SemVer version strings.
7355 +
7356 +// ## Numeric Identifier
7357 +// A single `0`, or a non-zero digit followed by zero or more digits.
7358 +
7359 +createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
7360 +createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
7361 +
7362 +// ## Non-numeric Identifier
7363 +// Zero or more digits, followed by a letter or hyphen, and then zero or
7364 +// more letters, digits, or hyphens.
7365 +
7366 +createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
7367 +
7368 +// ## Main Version
7369 +// Three dot-separated numeric identifiers.
7370 +
7371 +createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
7372 + `(${src[t.NUMERICIDENTIFIER]})\\.` +
7373 + `(${src[t.NUMERICIDENTIFIER]})`)
7374 +
7375 +createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
7376 + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
7377 + `(${src[t.NUMERICIDENTIFIERLOOSE]})`)
7378 +
7379 +// ## Pre-release Version Identifier
7380 +// A numeric identifier, or a non-numeric identifier.
7381 +
7382 +createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
7383 +}|${src[t.NONNUMERICIDENTIFIER]})`)
7384 +
7385 +createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
7386 +}|${src[t.NONNUMERICIDENTIFIER]})`)
7387 +
7388 +// ## Pre-release Version
7389 +// Hyphen, followed by one or more dot-separated pre-release version
7390 +// identifiers.
7391 +
7392 +createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
7393 +}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
7394 +
7395 +createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
7396 +}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
7397 +
7398 +// ## Build Metadata Identifier
7399 +// Any combination of digits, letters, or hyphens.
7400 +
7401 +createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
7402 +
7403 +// ## Build Metadata
7404 +// Plus sign, followed by one or more period-separated build metadata
7405 +// identifiers.
7406 +
7407 +createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
7408 +}(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
7409 +
7410 +// ## Full Version String
7411 +// A main version, followed optionally by a pre-release version and
7412 +// build metadata.
7413 +
7414 +// Note that the only major, minor, patch, and pre-release sections of
7415 +// the version string are capturing groups. The build metadata is not a
7416 +// capturing group, because it should not ever be used in version
7417 +// comparison.
7418 +
7419 +createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
7420 +}${src[t.PRERELEASE]}?${
7421 + src[t.BUILD]}?`)
7422 +
7423 +createToken('FULL', `^${src[t.FULLPLAIN]}$`)
7424 +
7425 +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
7426 +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
7427 +// common in the npm registry.
7428 +createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
7429 +}${src[t.PRERELEASELOOSE]}?${
7430 + src[t.BUILD]}?`)
7431 +
7432 +createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
7433 +
7434 +createToken('GTLT', '((?:<|>)?=?)')
7435 +
7436 +// Something like "2.*" or "1.2.x".
7437 +// Note that "x.x" is a valid xRange identifer, meaning "any version"
7438 +// Only the first item is strictly required.
7439 +createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
7440 +createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
7441 +
7442 +createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
7443 + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
7444 + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
7445 + `(?:${src[t.PRERELEASE]})?${
7446 + src[t.BUILD]}?` +
7447 + `)?)?`)
7448 +
7449 +createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
7450 + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
7451 + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
7452 + `(?:${src[t.PRERELEASELOOSE]})?${
7453 + src[t.BUILD]}?` +
7454 + `)?)?`)
7455 +
7456 +createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
7457 +createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
7458 +
7459 +// Coercion.
7460 +// Extract anything that could conceivably be a part of a valid semver
7461 +createToken('COERCE', `${'(^|[^\\d])' +
7462 + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
7463 + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
7464 + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
7465 + `(?:$|[^\\d])`)
7466 +createToken('COERCERTL', src[t.COERCE], true)
7467 +
7468 +// Tilde ranges.
7469 +// Meaning is "reasonably at or greater than"
7470 +createToken('LONETILDE', '(?:~>?)')
7471 +
7472 +createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
7473 +exports.tildeTrimReplace = '$1~'
7474 +
7475 +createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
7476 +createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
7477 +
7478 +// Caret ranges.
7479 +// Meaning is "at least and backwards compatible with"
7480 +createToken('LONECARET', '(?:\\^)')
7481 +
7482 +createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
7483 +exports.caretTrimReplace = '$1^'
7484 +
7485 +createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
7486 +createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
7487 +
7488 +// A simple gt/lt/eq thing, or just "" to indicate "any version"
7489 +createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
7490 +createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
7588 7491
7589 if (anum && bnum) {
7590 a = +a
7591 b = +b
7592 }
7492 +// An expression to strip any whitespace between the gtlt and the thing
7493 +// it modifies, so that `> 1.2.3` ==> `>1.2.3`
7494 +createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
7495 +}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
7496 +exports.comparatorTrimReplace = '$1$2$3'
7593 7497
7594 return a === b ? 0
7595 : (anum && !bnum) ? -1
7596 : (bnum && !anum) ? 1
7597 : a < b ? -1
7598 : 1
7599 }
7498 +// Something like `1.2.3 - 1.2.4`
7499 +// Note that these all use the loose form, because they'll be
7500 +// checked against either the strict or loose comparator form
7501 +// later.
7502 +createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
7503 + `\\s+-\\s+` +
7504 + `(${src[t.XRANGEPLAIN]})` +
7505 + `\\s*$`)
7600 7506
7601 const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
7507 +createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
7508 + `\\s+-\\s+` +
7509 + `(${src[t.XRANGEPLAINLOOSE]})` +
7510 + `\\s*$`)
7602 7511
7603 module.exports = {
7604 compareIdentifiers,
7605 rcompareIdentifiers,
7606 }
7512 +// Star ranges basically just allow anything at all.
7513 +createToken('STAR', '(<|>)?=?\\s*\\*')
7514 +// >=0.0.0 is like a star
7515 +createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
7516 +createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
7607 7517
7608 7518
7609 7519 /***/ }),
7610 7520
7611 /***/ 785:
7612 /***/ ((module) => {
7521 +/***/ 1196:
7522 +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
7613 7523
7614 // parse out just the options we care about
7615 const looseOption = Object.freeze({ loose: true })
7616 const emptyOpts = Object.freeze({ })
7617 const parseOptions = options => {
7618 if (!options) {
7619 return emptyOpts
7620 }
7524 +"use strict";
7621 7525
7622 if (typeof options !== 'object') {
7623 return looseOption
7624 }
7625 7526
7626 return options
7627 }
7628 module.exports = parseOptions
7527 +// A linked list to keep track of recently-used-ness
7528 +const Yallist = __nccwpck_require__(665)
7629 7529
7530 +const MAX = Symbol('max')
7531 +const LENGTH = Symbol('length')
7532 +const LENGTH_CALCULATOR = Symbol('lengthCalculator')
7533 +const ALLOW_STALE = Symbol('allowStale')
7534 +const MAX_AGE = Symbol('maxAge')
7535 +const DISPOSE = Symbol('dispose')
7536 +const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')
7537 +const LRU_LIST = Symbol('lruList')
7538 +const CACHE = Symbol('cache')
7539 +const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')
7630 7540
7631 /***/ }),
7541 +const naiveLength = () => 1
7632 7542
7633 /***/ 9523:
7634 /***/ ((module, exports, __nccwpck_require__) => {
7543 +// lruList is a yallist where the head is the youngest
7544 +// item, and the tail is the oldest. the list contains the Hit
7545 +// objects as the entries.
7546 +// Each Hit object has a reference to its Yallist.Node. This
7547 +// never changes.
7548 +//
7549 +// cache is a Map (or PseudoMap) that matches the keys to
7550 +// the Yallist.Node object.
7551 +class LRUCache {
7552 + constructor (options) {
7553 + if (typeof options === 'number')
7554 + options = { max: options }
7635 7555
7636 const {
7637 MAX_SAFE_COMPONENT_LENGTH,
7638 MAX_SAFE_BUILD_LENGTH,
7639 MAX_LENGTH,
7640 } = __nccwpck_require__(2293)
7641 const debug = __nccwpck_require__(427)
7642 exports = module.exports = {}
7556 + if (!options)
7557 + options = {}
7643 7558
7644 // The actual regexps go on exports.re
7645 const re = exports.re = []
7646 const safeRe = exports.safeRe = []
7647 const src = exports.src = []
7648 const t = exports.t = {}
7649 let R = 0
7559 + if (options.max && (typeof options.max !== 'number' || options.max < 0))
7560 + throw new TypeError('max must be a non-negative number')
7561 + // Kind of weird to have a default max of Infinity, but oh well.
7562 + const max = this[MAX] = options.max || Infinity
7650 7563
7651 const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
7564 + const lc = options.length || naiveLength
7565 + this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc
7566 + this[ALLOW_STALE] = options.stale || false
7567 + if (options.maxAge && typeof options.maxAge !== 'number')
7568 + throw new TypeError('maxAge must be a number')
7569 + this[MAX_AGE] = options.maxAge || 0
7570 + this[DISPOSE] = options.dispose
7571 + this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false
7572 + this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false
7573 + this.reset()
7574 + }
7652 7575
7653 // Replace some greedy regex tokens to prevent regex dos issues. These regex are
7654 // used internally via the safeRe object since all inputs in this library get
7655 // normalized first to trim and collapse all extra whitespace. The original
7656 // regexes are exported for userland consumption and lower level usage. A
7657 // future breaking change could export the safer regex only with a note that
7658 // all input should have extra whitespace removed.
7659 const safeRegexReplacements = [
7660 ['\\s', 1],
7661 ['\\d', MAX_LENGTH],
7662 [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
7663 ]
7576 + // resize the cache when the max changes.
7577 + set max (mL) {
7578 + if (typeof mL !== 'number' || mL < 0)
7579 + throw new TypeError('max must be a non-negative number')
7664 7580
7665 const makeSafeRegex = (value) => {
7666 for (const [token, max] of safeRegexReplacements) {
7667 value = value
7668 .split(`${token}*`).join(`${token}{0,${max}}`)
7669 .split(`${token}+`).join(`${token}{1,${max}}`)
7581 + this[MAX] = mL || Infinity
7582 + trim(this)
7583 + }
7584 + get max () {
7585 + return this[MAX]
7670 7586 }
7671 return value
7672 }
7673 7587
7674 const createToken = (name, value, isGlobal) => {
7675 const safe = makeSafeRegex(value)
7676 const index = R++
7677 debug(name, index, value)
7678 t[name] = index
7679 src[index] = value
7680 re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
7681 safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
7682 }
7588 + set allowStale (allowStale) {
7589 + this[ALLOW_STALE] = !!allowStale
7590 + }
7591 + get allowStale () {
7592 + return this[ALLOW_STALE]
7593 + }
7683 7594
7684 // The following Regular Expressions can be used for tokenizing,
7685 // validating, and parsing SemVer version strings.
7595 + set maxAge (mA) {
7596 + if (typeof mA !== 'number')
7597 + throw new TypeError('maxAge must be a non-negative number')
7686 7598
7687 // ## Numeric Identifier
7688 // A single `0`, or a non-zero digit followed by zero or more digits.
7599 + this[MAX_AGE] = mA
7600 + trim(this)
7601 + }
7602 + get maxAge () {
7603 + return this[MAX_AGE]
7604 + }
7689 7605
7690 createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
7691 createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
7606 + // resize the cache when the lengthCalculator changes.
7607 + set lengthCalculator (lC) {
7608 + if (typeof lC !== 'function')
7609 + lC = naiveLength
7692 7610
7693 // ## Non-numeric Identifier
7694 // Zero or more digits, followed by a letter or hyphen, and then zero or
7695 // more letters, digits, or hyphens.
7611 + if (lC !== this[LENGTH_CALCULATOR]) {
7612 + this[LENGTH_CALCULATOR] = lC
7613 + this[LENGTH] = 0
7614 + this[LRU_LIST].forEach(hit => {
7615 + hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)
7616 + this[LENGTH] += hit.length
7617 + })
7618 + }
7619 + trim(this)
7620 + }
7621 + get lengthCalculator () { return this[LENGTH_CALCULATOR] }
7696 7622
7697 createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
7623 + get length () { return this[LENGTH] }
7624 + get itemCount () { return this[LRU_LIST].length }
7698 7625
7699 // ## Main Version
7700 // Three dot-separated numeric identifiers.
7626 + rforEach (fn, thisp) {
7627 + thisp = thisp || this
7628 + for (let walker = this[LRU_LIST].tail; walker !== null;) {
7629 + const prev = walker.prev
7630 + forEachStep(this, fn, walker, thisp)
7631 + walker = prev
7632 + }
7633 + }
7701 7634
7702 createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
7703 `(${src[t.NUMERICIDENTIFIER]})\\.` +
7704 `(${src[t.NUMERICIDENTIFIER]})`)
7635 + forEach (fn, thisp) {
7636 + thisp = thisp || this
7637 + for (let walker = this[LRU_LIST].head; walker !== null;) {
7638 + const next = walker.next
7639 + forEachStep(this, fn, walker, thisp)
7640 + walker = next
7641 + }
7642 + }
7705 7643
7706 createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
7707 `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
7708 `(${src[t.NUMERICIDENTIFIERLOOSE]})`)
7644 + keys () {
7645 + return this[LRU_LIST].toArray().map(k => k.key)
7646 + }
7709 7647
7710 // ## Pre-release Version Identifier
7711 // A numeric identifier, or a non-numeric identifier.
7648 + values () {
7649 + return this[LRU_LIST].toArray().map(k => k.value)
7650 + }
7712 7651
7713 createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
7714 }|${src[t.NONNUMERICIDENTIFIER]})`)
7652 + reset () {
7653 + if (this[DISPOSE] &&
7654 + this[LRU_LIST] &&
7655 + this[LRU_LIST].length) {
7656 + this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))
7657 + }
7715 7658
7716 createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
7717 }|${src[t.NONNUMERICIDENTIFIER]})`)
7659 + this[CACHE] = new Map() // hash of items by key
7660 + this[LRU_LIST] = new Yallist() // list of items in order of use recency
7661 + this[LENGTH] = 0 // length of items in the list
7662 + }
7718 7663
7719 // ## Pre-release Version
7720 // Hyphen, followed by one or more dot-separated pre-release version
7721 // identifiers.
7664 + dump () {
7665 + return this[LRU_LIST].map(hit =>
7666 + isStale(this, hit) ? false : {
7667 + k: hit.key,
7668 + v: hit.value,
7669 + e: hit.now + (hit.maxAge || 0)
7670 + }).toArray().filter(h => h)
7671 + }
7672 +
7673 + dumpLru () {
7674 + return this[LRU_LIST]
7675 + }
7722 7676
7723 createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
7724 }(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
7677 + set (key, value, maxAge) {
7678 + maxAge = maxAge || this[MAX_AGE]
7725 7679
7726 createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
7727 }(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
7680 + if (maxAge && typeof maxAge !== 'number')
7681 + throw new TypeError('maxAge must be a number')
7728 7682
7729 // ## Build Metadata Identifier
7730 // Any combination of digits, letters, or hyphens.
7683 + const now = maxAge ? Date.now() : 0
7684 + const len = this[LENGTH_CALCULATOR](value, key)
7731 7685
7732 createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
7686 + if (this[CACHE].has(key)) {
7687 + if (len > this[MAX]) {
7688 + del(this, this[CACHE].get(key))
7689 + return false
7690 + }
7733 7691
7734 // ## Build Metadata
7735 // Plus sign, followed by one or more period-separated build metadata
7736 // identifiers.
7692 + const node = this[CACHE].get(key)
7693 + const item = node.value
7737 7694
7738 createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
7739 }(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
7695 + // dispose of the old one before overwriting
7696 + // split out into 2 ifs for better coverage tracking
7697 + if (this[DISPOSE]) {
7698 + if (!this[NO_DISPOSE_ON_SET])
7699 + this[DISPOSE](key, item.value)
7700 + }
7740 7701
7741 // ## Full Version String
7742 // A main version, followed optionally by a pre-release version and
7743 // build metadata.
7702 + item.now = now
7703 + item.maxAge = maxAge
7704 + item.value = value
7705 + this[LENGTH] += len - item.length
7706 + item.length = len
7707 + this.get(key)
7708 + trim(this)
7709 + return true
7710 + }
7744 7711
7745 // Note that the only major, minor, patch, and pre-release sections of
7746 // the version string are capturing groups. The build metadata is not a
7747 // capturing group, because it should not ever be used in version
7748 // comparison.
7712 + const hit = new Entry(key, value, len, now, maxAge)
7749 7713
7750 createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
7751 }${src[t.PRERELEASE]}?${
7752 src[t.BUILD]}?`)
7714 + // oversized objects fall out of cache automatically.
7715 + if (hit.length > this[MAX]) {
7716 + if (this[DISPOSE])
7717 + this[DISPOSE](key, value)
7753 7718
7754 createToken('FULL', `^${src[t.FULLPLAIN]}$`)
7719 + return false
7720 + }
7755 7721
7756 // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
7757 // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
7758 // common in the npm registry.
7759 createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
7760 }${src[t.PRERELEASELOOSE]}?${
7761 src[t.BUILD]}?`)
7722 + this[LENGTH] += hit.length
7723 + this[LRU_LIST].unshift(hit)
7724 + this[CACHE].set(key, this[LRU_LIST].head)
7725 + trim(this)
7726 + return true
7727 + }
7762 7728
7763 createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
7729 + has (key) {
7730 + if (!this[CACHE].has(key)) return false
7731 + const hit = this[CACHE].get(key).value
7732 + return !isStale(this, hit)
7733 + }
7764 7734
7765 createToken('GTLT', '((?:<|>)?=?)')
7735 + get (key) {
7736 + return get(this, key, true)
7737 + }
7766 7738
7767 // Something like "2.*" or "1.2.x".
7768 // Note that "x.x" is a valid xRange identifer, meaning "any version"
7769 // Only the first item is strictly required.
7770 createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
7771 createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
7739 + peek (key) {
7740 + return get(this, key, false)
7741 + }
7772 7742
7773 createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
7774 `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
7775 `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
7776 `(?:${src[t.PRERELEASE]})?${
7777 src[t.BUILD]}?` +
7778 `)?)?`)
7743 + pop () {
7744 + const node = this[LRU_LIST].tail
7745 + if (!node)
7746 + return null
7779 7747
7780 createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
7781 `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
7782 `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
7783 `(?:${src[t.PRERELEASELOOSE]})?${
7784 src[t.BUILD]}?` +
7785 `)?)?`)
7748 + del(this, node)
7749 + return node.value
7750 + }
7786 7751
7787 createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
7788 createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
7752 + del (key) {
7753 + del(this, this[CACHE].get(key))
7754 + }
7789 7755
7790 // Coercion.
7791 // Extract anything that could conceivably be a part of a valid semver
7792 createToken('COERCE', `${'(^|[^\\d])' +
7793 '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
7794 `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
7795 `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
7796 `(?:$|[^\\d])`)
7797 createToken('COERCERTL', src[t.COERCE], true)
7756 + load (arr) {
7757 + // reset the cache
7758 + this.reset()
7798 7759
7799 // Tilde ranges.
7800 // Meaning is "reasonably at or greater than"
7801 createToken('LONETILDE', '(?:~>?)')
7760 + const now = Date.now()
7761 + // A previous serialized cache has the most recent items first
7762 + for (let l = arr.length - 1; l >= 0; l--) {
7763 + const hit = arr[l]
7764 + const expiresAt = hit.e || 0
7765 + if (expiresAt === 0)
7766 + // the item was created without expiration in a non aged cache
7767 + this.set(hit.k, hit.v)
7768 + else {
7769 + const maxAge = expiresAt - now
7770 + // dont add already expired items
7771 + if (maxAge > 0) {
7772 + this.set(hit.k, hit.v, maxAge)
7773 + }
7774 + }
7775 + }
7776 + }
7802 7777
7803 createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
7804 exports.tildeTrimReplace = '$1~'
7778 + prune () {
7779 + this[CACHE].forEach((value, key) => get(this, key, false))
7780 + }
7781 +}
7805 7782
7806 createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
7807 createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
7783 +const get = (self, key, doUse) => {
7784 + const node = self[CACHE].get(key)
7785 + if (node) {
7786 + const hit = node.value
7787 + if (isStale(self, hit)) {
7788 + del(self, node)
7789 + if (!self[ALLOW_STALE])
7790 + return undefined
7791 + } else {
7792 + if (doUse) {
7793 + if (self[UPDATE_AGE_ON_GET])
7794 + node.value.now = Date.now()
7795 + self[LRU_LIST].unshiftNode(node)
7796 + }
7797 + }
7798 + return hit.value
7799 + }
7800 +}
7808 7801
7809 // Caret ranges.
7810 // Meaning is "at least and backwards compatible with"
7811 createToken('LONECARET', '(?:\\^)')
7802 +const isStale = (self, hit) => {
7803 + if (!hit || (!hit.maxAge && !self[MAX_AGE]))
7804 + return false
7812 7805
7813 createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
7814 exports.caretTrimReplace = '$1^'
7806 + const diff = Date.now() - hit.now
7807 + return hit.maxAge ? diff > hit.maxAge
7808 + : self[MAX_AGE] && (diff > self[MAX_AGE])
7809 +}
7815 7810
7816 createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
7817 createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
7811 +const trim = self => {
7812 + if (self[LENGTH] > self[MAX]) {
7813 + for (let walker = self[LRU_LIST].tail;
7814 + self[LENGTH] > self[MAX] && walker !== null;) {
7815 + // We know that we're about to delete this one, and also
7816 + // what the next least recently used key will be, so just
7817 + // go ahead and set it now.
7818 + const prev = walker.prev
7819 + del(self, walker)
7820 + walker = prev
7821 + }
7822 + }
7823 +}
7818 7824
7819 // A simple gt/lt/eq thing, or just "" to indicate "any version"
7820 createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
7821 createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
7825 +const del = (self, node) => {
7826 + if (node) {
7827 + const hit = node.value
7828 + if (self[DISPOSE])
7829 + self[DISPOSE](hit.key, hit.value)
7822 7830
7823 // An expression to strip any whitespace between the gtlt and the thing
7824 // it modifies, so that `> 1.2.3` ==> `>1.2.3`
7825 createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
7826 }\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
7827 exports.comparatorTrimReplace = '$1$2$3'
7831 + self[LENGTH] -= hit.length
7832 + self[CACHE].delete(hit.key)
7833 + self[LRU_LIST].removeNode(node)
7834 + }
7835 +}
7828 7836
7829 // Something like `1.2.3 - 1.2.4`
7830 // Note that these all use the loose form, because they'll be
7831 // checked against either the strict or loose comparator form
7832 // later.
7833 createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
7834 `\\s+-\\s+` +
7835 `(${src[t.XRANGEPLAIN]})` +
7836 `\\s*$`)
7837 +class Entry {
7838 + constructor (key, value, length, now, maxAge) {
7839 + this.key = key
7840 + this.value = value
7841 + this.length = length
7842 + this.now = now
7843 + this.maxAge = maxAge || 0
7844 + }
7845 +}
7837 7846
7838 createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
7839 `\\s+-\\s+` +
7840 `(${src[t.XRANGEPLAINLOOSE]})` +
7841 `\\s*$`)
7847 +const forEachStep = (self, fn, node, thisp) => {
7848 + let hit = node.value
7849 + if (isStale(self, hit)) {
7850 + del(self, node)
7851 + if (!self[ALLOW_STALE])
7852 + hit = undefined
7853 + }
7854 + if (hit)
7855 + fn.call(thisp, hit.value, hit.key, self)
7856 +}
7842 7857
7843 // Star ranges basically just allow anything at all.
7844 createToken('STAR', '(<|>)?=?\\s*\\*')
7845 // >=0.0.0 is like a star
7846 createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
7847 createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
7858 +module.exports = LRUCache
7848 7859
7849 7860
7850 7861 /***/ }),
@@ -9955,7 +9966,6 @@ async function maybeInstallGleam(gleamSpec) {
9955 9966 core.startGroup(`Installing Gleam ${gleamVersion}`)
9956 9967 await install('gleam', { toolVersion: gleamVersion })
9957 9968 core.setOutput('gleam-version', gleamVersion)
9958 core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/gleam/bin`)
9959 9969 core.endGroup()
9960 9970
9961 9971 installed = true
@@ -9976,7 +9986,6 @@ async function maybeInstallRebar3(rebar3Spec) {
9976 9986 core.startGroup(`Installing rebar3 ${rebar3Version}`)
9977 9987 await install('rebar3', { toolVersion: rebar3Version })
9978 9988 core.setOutput('rebar3-version', rebar3Version)
9979 core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/rebar3/bin`)
9980 9989 core.endGroup()
9981 9990
9982 9991 installed = true
@@ -10774,16 +10783,25 @@ async function installTool(opts) {
10774 10783 core.debug(` ... it is, at ${cachePath}`)
10775 10784 }
10776 10785
10786 + // This makes sure we run, e.g. in Windows, the installer in the runner
10787 + // We're not caching the install, just the downloaded tool
10788 + const runnerToolPath = path.join(
10789 + process.env.RUNNER_TEMP,
10790 + '.setup-beam',
10791 + toolName,
10792 + )
10793 + fs.cpSync(cachePath, runnerToolPath, { recursive: true })
10794 +
10777 10795 core.debug('Performing post extract operations...')
10778 await platformOpts.postExtract(cachePath)
10796 + await platformOpts.postExtract(runnerToolPath)
10779 10797
10780 core.debug(`Adding ${cachePath}'s bin to system path`)
10781 const catchPathBin = path.join(cachePath, 'bin')
10782 core.addPath(catchPathBin)
10798 + core.debug(`Adding ${runnerToolPath}' bin to system path`)
10799 + const runnerToolPathBin = path.join(runnerToolPath, 'bin')
10800 + core.addPath(runnerToolPathBin)
10783 10801
10784 10802 const installDirForVarName = `INSTALL_DIR_FOR_${toolName}`.toUpperCase()
10785 core.debug(`Exporting ${installDirForVarName} as ${catchPathBin}`)
10786 core.exportVariable(installDirForVarName, catchPathBin)
10803 + core.debug(`Exporting ${installDirForVarName} as ${runnerToolPath}`)
10804 + core.exportVariable(installDirForVarName, runnerToolPath)
10787 10805
10788 10806 core.info(`Installed ${installOpts.tool} version`)
10789 10807 const [cmd, args] = platformOpts.reportVersion()
modified package-lock.json
+517 −344
@@ -26,6 +26,15 @@
26 26 "node": ">=20"
27 27 }
28 28 },
29 + "node_modules/@aashutoshrathi/word-wrap": {
30 + "version": "1.2.6",
31 + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
32 + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
33 + "dev": true,
34 + "engines": {
35 + "node": ">=0.10.0"
36 + }
37 + },
29 38 "node_modules/@actions/core": {
30 39 "version": "1.10.0",
31 40 "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
@@ -52,9 +61,9 @@
52 61 }
53 62 },
54 63 "node_modules/@actions/io": {
55 "version": "1.1.2",
56 "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
57 "integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
64 + "version": "1.1.3",
65 + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz",
66 + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
58 67 },
59 68 "node_modules/@actions/tool-cache": {
60 69 "version": "2.0.1",
@@ -70,9 +79,9 @@
70 79 }
71 80 },
72 81 "node_modules/@actions/tool-cache/node_modules/semver": {
73 "version": "6.3.0",
74 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
75 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
82 + "version": "6.3.1",
83 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
84 + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
76 85 "bin": {
77 86 "semver": "bin/semver.js"
78 87 }
@@ -102,23 +111,23 @@
102 111 }
103 112 },
104 113 "node_modules/@eslint-community/regexpp": {
105 "version": "4.5.1",
106 "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
107 "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
114 + "version": "4.10.0",
115 + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
116 + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
108 117 "dev": true,
109 118 "engines": {
110 119 "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
111 120 }
112 121 },
113 122 "node_modules/@eslint/eslintrc": {
114 "version": "2.0.3",
115 "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
116 "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
123 + "version": "2.1.4",
124 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
125 + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
117 126 "dev": true,
118 127 "dependencies": {
119 128 "ajv": "^6.12.4",
120 129 "debug": "^4.3.2",
121 "espree": "^9.5.2",
130 + "espree": "^9.6.0",
122 131 "globals": "^13.19.0",
123 132 "ignore": "^5.2.0",
124 133 "import-fresh": "^3.2.1",
@@ -143,13 +152,13 @@
143 152 }
144 153 },
145 154 "node_modules/@humanwhocodes/config-array": {
146 "version": "0.11.10",
147 "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
148 "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
155 + "version": "0.11.14",
156 + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
157 + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
149 158 "dev": true,
150 159 "dependencies": {
151 "@humanwhocodes/object-schema": "^1.2.1",
152 "debug": "^4.1.1",
160 + "@humanwhocodes/object-schema": "^2.0.2",
161 + "debug": "^4.3.1",
153 162 "minimatch": "^3.0.5"
154 163 },
155 164 "engines": {
@@ -170,9 +179,9 @@
170 179 }
171 180 },
172 181 "node_modules/@humanwhocodes/object-schema": {
173 "version": "1.2.1",
174 "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
175 "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
182 + "version": "2.0.2",
183 + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
184 + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
176 185 "dev": true
177 186 },
178 187 "node_modules/@isaacs/cliui": {
@@ -204,35 +213,6 @@
204 213 "url": "https://github.com/chalk/ansi-regex?sponsor=1"
205 214 }
206 215 },
207 "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
208 "version": "6.2.1",
209 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
210 "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
211 "dev": true,
212 "engines": {
213 "node": ">=12"
214 },
215 "funding": {
216 "url": "https://github.com/chalk/ansi-styles?sponsor=1"
217 }
218 },
219 "node_modules/@isaacs/cliui/node_modules/string-width": {
220 "version": "5.1.2",
221 "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
222 "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
223 "dev": true,
224 "dependencies": {
225 "eastasianwidth": "^0.2.0",
226 "emoji-regex": "^9.2.2",
227 "strip-ansi": "^7.0.1"
228 },
229 "engines": {
230 "node": ">=12"
231 },
232 "funding": {
233 "url": "https://github.com/sponsors/sindresorhus"
234 }
235 },
236 216 "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
237 217 "version": "7.1.0",
238 218 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
@@ -248,23 +228,6 @@
248 228 "url": "https://github.com/chalk/strip-ansi?sponsor=1"
249 229 }
250 230 },
251 "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
252 "version": "8.1.0",
253 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
254 "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
255 "dev": true,
256 "dependencies": {
257 "ansi-styles": "^6.1.0",
258 "string-width": "^5.0.1",
259 "strip-ansi": "^7.0.1"
260 },
261 "engines": {
262 "node": ">=12"
263 },
264 "funding": {
265 "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
266 }
267 },
268 231 "node_modules/@nodelib/fs.scandir": {
269 232 "version": "2.1.5",
270 233 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -320,9 +283,9 @@
320 283 }
321 284 },
322 285 "node_modules/acorn": {
323 "version": "8.9.0",
324 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
325 "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
286 + "version": "8.11.3",
287 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
288 + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
326 289 "dev": true,
327 290 "bin": {
328 291 "acorn": "bin/acorn"
@@ -396,9 +359,9 @@
396 359 }
397 360 },
398 361 "node_modules/async": {
399 "version": "3.2.3",
400 "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
401 "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==",
362 + "version": "3.2.5",
363 + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
364 + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
402 365 "dev": true
403 366 },
404 367 "node_modules/balanced-match": {
@@ -556,6 +519,43 @@
556 519 "wrap-ansi": "^7.0.0"
557 520 }
558 521 },
522 + "node_modules/cliui/node_modules/emoji-regex": {
523 + "version": "8.0.0",
524 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
525 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
526 + "dev": true
527 + },
528 + "node_modules/cliui/node_modules/string-width": {
529 + "version": "4.2.3",
530 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
531 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
532 + "dev": true,
533 + "dependencies": {
534 + "emoji-regex": "^8.0.0",
535 + "is-fullwidth-code-point": "^3.0.0",
536 + "strip-ansi": "^6.0.1"
537 + },
538 + "engines": {
539 + "node": ">=8"
540 + }
541 + },
542 + "node_modules/cliui/node_modules/wrap-ansi": {
543 + "version": "7.0.0",
544 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
545 + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
546 + "dev": true,
547 + "dependencies": {
548 + "ansi-styles": "^4.0.0",
549 + "string-width": "^4.1.0",
550 + "strip-ansi": "^6.0.0"
551 + },
552 + "engines": {
553 + "node": ">=10"
554 + },
555 + "funding": {
556 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
557 + }
558 + },
559 559 "node_modules/color-convert": {
560 560 "version": "2.0.1",
561 561 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -575,15 +575,18 @@
575 575 "dev": true
576 576 },
577 577 "node_modules/commander": {
578 "version": "2.20.3",
579 "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
580 "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
581 "dev": true
578 + "version": "11.0.0",
579 + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz",
580 + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==",
581 + "dev": true,
582 + "engines": {
583 + "node": ">=16"
584 + }
582 585 },
583 586 "node_modules/concat-map": {
584 587 "version": "0.0.1",
585 588 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
586 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
589 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
587 590 "dev": true
588 591 },
589 592 "node_modules/consola": {
@@ -740,12 +743,27 @@
740 743 "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
741 744 "dev": true
742 745 },
746 + "node_modules/define-data-property": {
747 + "version": "1.1.1",
748 + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
749 + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
750 + "dev": true,
751 + "dependencies": {
752 + "get-intrinsic": "^1.2.1",
753 + "gopd": "^1.0.1",
754 + "has-property-descriptors": "^1.0.0"
755 + },
756 + "engines": {
757 + "node": ">= 0.4"
758 + }
759 + },
743 760 "node_modules/define-properties": {
744 "version": "1.2.0",
745 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
746 "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
761 + "version": "1.2.1",
762 + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
763 + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
747 764 "dev": true,
748 765 "dependencies": {
766 + "define-data-property": "^1.0.1",
749 767 "has-property-descriptors": "^1.0.0",
750 768 "object-keys": "^1.1.1"
751 769 },
@@ -903,9 +921,9 @@
903 921 }
904 922 },
905 923 "node_modules/eslint-scope": {
906 "version": "7.2.0",
907 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
908 "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
924 + "version": "7.2.2",
925 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
926 + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
909 927 "dev": true,
910 928 "dependencies": {
911 929 "esrecurse": "^4.3.0",
@@ -919,9 +937,9 @@
919 937 }
920 938 },
921 939 "node_modules/eslint-visitor-keys": {
922 "version": "3.4.1",
923 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
924 "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
940 + "version": "3.4.3",
941 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
942 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
925 943 "dev": true,
926 944 "engines": {
927 945 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -930,83 +948,13 @@
930 948 "url": "https://opencollective.com/eslint"
931 949 }
932 950 },
933 "node_modules/eslint/node_modules/find-up": {
934 "version": "5.0.0",
935 "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
936 "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
937 "dev": true,
938 "dependencies": {
939 "locate-path": "^6.0.0",
940 "path-exists": "^4.0.0"
941 },
942 "engines": {
943 "node": ">=10"
944 },
945 "funding": {
946 "url": "https://github.com/sponsors/sindresorhus"
947 }
948 },
949 "node_modules/eslint/node_modules/locate-path": {
950 "version": "6.0.0",
951 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
952 "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
953 "dev": true,
954 "dependencies": {
955 "p-locate": "^5.0.0"
956 },
957 "engines": {
958 "node": ">=10"
959 },
960 "funding": {
961 "url": "https://github.com/sponsors/sindresorhus"
962 }
963 },
964 "node_modules/eslint/node_modules/p-limit": {
965 "version": "3.1.0",
966 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
967 "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
968 "dev": true,
969 "dependencies": {
970 "yocto-queue": "^0.1.0"
971 },
972 "engines": {
973 "node": ">=10"
974 },
975 "funding": {
976 "url": "https://github.com/sponsors/sindresorhus"
977 }
978 },
979 "node_modules/eslint/node_modules/p-locate": {
980 "version": "5.0.0",
981 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
982 "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
983 "dev": true,
984 "dependencies": {
985 "p-limit": "^3.0.2"
986 },
987 "engines": {
988 "node": ">=10"
989 },
990 "funding": {
991 "url": "https://github.com/sponsors/sindresorhus"
992 }
993 },
994 "node_modules/eslint/node_modules/path-exists": {
995 "version": "4.0.0",
996 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
997 "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
998 "dev": true,
999 "engines": {
1000 "node": ">=8"
1001 }
1002 },
1003 951 "node_modules/espree": {
1004 "version": "9.5.2",
1005 "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
1006 "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
952 + "version": "9.6.1",
953 + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
954 + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
1007 955 "dev": true,
1008 956 "dependencies": {
1009 "acorn": "^8.8.0",
957 + "acorn": "^8.9.0",
1010 958 "acorn-jsx": "^5.3.2",
1011 959 "eslint-visitor-keys": "^3.4.1"
1012 960 },
@@ -1066,9 +1014,9 @@
1066 1014 "dev": true
1067 1015 },
1068 1016 "node_modules/fast-glob": {
1069 "version": "3.2.11",
1070 "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
1071 "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
1017 + "version": "3.3.2",
1018 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
1019 + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
1072 1020 "dev": true,
1073 1021 "dependencies": {
1074 1022 "@nodelib/fs.stat": "^2.0.2",
@@ -1102,13 +1050,13 @@
1102 1050 "node_modules/fast-levenshtein": {
1103 1051 "version": "2.0.6",
1104 1052 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1105 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1053 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
1106 1054 "dev": true
1107 1055 },
1108 1056 "node_modules/fastq": {
1109 "version": "1.13.0",
1110 "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
1111 "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
1057 + "version": "1.17.0",
1058 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz",
1059 + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==",
1112 1060 "dev": true,
1113 1061 "dependencies": {
1114 1062 "reusify": "^1.0.4"
@@ -1156,13 +1104,30 @@
1156 1104 "node": ">=8"
1157 1105 }
1158 1106 },
1107 + "node_modules/find-up": {
1108 + "version": "5.0.0",
1109 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
1110 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
1111 + "dev": true,
1112 + "dependencies": {
1113 + "locate-path": "^6.0.0",
1114 + "path-exists": "^4.0.0"
1115 + },
1116 + "engines": {
1117 + "node": ">=10"
1118 + },
1119 + "funding": {
1120 + "url": "https://github.com/sponsors/sindresorhus"
1121 + }
1122 + },
1159 1123 "node_modules/flat-cache": {
1160 "version": "3.0.4",
1161 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
1162 "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
1124 + "version": "3.2.0",
1125 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
1126 + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
1163 1127 "dev": true,
1164 1128 "dependencies": {
1165 "flatted": "^3.1.0",
1129 + "flatted": "^3.2.9",
1130 + "keyv": "^4.5.3",
1166 1131 "rimraf": "^3.0.2"
1167 1132 },
1168 1133 "engines": {
@@ -1170,9 +1135,9 @@
1170 1135 }
1171 1136 },
1172 1137 "node_modules/flatted": {
1173 "version": "3.2.5",
1174 "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
1175 "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
1138 + "version": "3.2.9",
1139 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
1140 + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
1176 1141 "dev": true
1177 1142 },
1178 1143 "node_modules/foreground-child": {
@@ -1200,14 +1165,17 @@
1200 1165 "node_modules/fs.realpath": {
1201 1166 "version": "1.0.0",
1202 1167 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1203 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1168 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1204 1169 "dev": true
1205 1170 },
1206 1171 "node_modules/function-bind": {
1207 "version": "1.1.1",
1208 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1209 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1210 "dev": true
1172 + "version": "1.1.2",
1173 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1174 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1175 + "dev": true,
1176 + "funding": {
1177 + "url": "https://github.com/sponsors/ljharb"
1178 + }
1211 1179 },
1212 1180 "node_modules/get-caller-file": {
1213 1181 "version": "2.0.5",
@@ -1219,15 +1187,15 @@
1219 1187 }
1220 1188 },
1221 1189 "node_modules/get-intrinsic": {
1222 "version": "1.2.1",
1223 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
1224 "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
1190 + "version": "1.2.2",
1191 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
1192 + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
1225 1193 "dev": true,
1226 1194 "dependencies": {
1227 "function-bind": "^1.1.1",
1228 "has": "^1.0.3",
1195 + "function-bind": "^1.1.2",
1229 1196 "has-proto": "^1.0.1",
1230 "has-symbols": "^1.0.3"
1197 + "has-symbols": "^1.0.3",
1198 + "hasown": "^2.0.0"
1231 1199 },
1232 1200 "funding": {
1233 1201 "url": "https://github.com/sponsors/ljharb"
@@ -1259,20 +1227,22 @@
1259 1227 }
1260 1228 },
1261 1229 "node_modules/glob": {
1262 "version": "7.2.0",
1263 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
1264 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
1230 + "version": "10.2.7",
1231 + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz",
1232 + "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==",
1265 1233 "dev": true,
1266 1234 "dependencies": {
1267 "fs.realpath": "^1.0.0",
1268 "inflight": "^1.0.4",
1269 "inherits": "2",
1270 "minimatch": "^3.0.4",
1271 "once": "^1.3.0",
1272 "path-is-absolute": "^1.0.0"
1235 + "foreground-child": "^3.1.0",
1236 + "jackspeak": "^2.0.3",
1237 + "minimatch": "^9.0.1",
1238 + "minipass": "^5.0.0 || ^6.0.2",
1239 + "path-scurry": "^1.7.0"
1240 + },
1241 + "bin": {
1242 + "glob": "dist/cjs/src/bin.js"
1273 1243 },
1274 1244 "engines": {
1275 "node": "*"
1245 + "node": ">=16 || 14 >=14.17"
1276 1246 },
1277 1247 "funding": {
1278 1248 "url": "https://github.com/sponsors/isaacs"
@@ -1290,6 +1260,30 @@
1290 1260 "node": ">=10.13.0"
1291 1261 }
1292 1262 },
1263 + "node_modules/glob/node_modules/brace-expansion": {
1264 + "version": "2.0.1",
1265 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
1266 + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
1267 + "dev": true,
1268 + "dependencies": {
1269 + "balanced-match": "^1.0.0"
1270 + }
1271 + },
1272 + "node_modules/glob/node_modules/minimatch": {
1273 + "version": "9.0.3",
1274 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
1275 + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
1276 + "dev": true,
1277 + "dependencies": {
1278 + "brace-expansion": "^2.0.1"
1279 + },
1280 + "engines": {
1281 + "node": ">=16 || 14 >=14.17"
1282 + },
1283 + "funding": {
1284 + "url": "https://github.com/sponsors/isaacs"
1285 + }
1286 + },
1293 1287 "node_modules/global-agent": {
1294 1288 "version": "3.0.0",
1295 1289 "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
@@ -1308,9 +1302,9 @@
1308 1302 }
1309 1303 },
1310 1304 "node_modules/globals": {
1311 "version": "13.20.0",
1312 "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
1313 "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
1305 + "version": "13.24.0",
1306 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
1307 + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
1314 1308 "dev": true,
1315 1309 "dependencies": {
1316 1310 "type-fest": "^0.20.2"
@@ -1357,6 +1351,18 @@
1357 1351 "url": "https://github.com/sponsors/sindresorhus"
1358 1352 }
1359 1353 },
1354 + "node_modules/gopd": {
1355 + "version": "1.0.1",
1356 + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
1357 + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
1358 + "dev": true,
1359 + "dependencies": {
1360 + "get-intrinsic": "^1.1.3"
1361 + },
1362 + "funding": {
1363 + "url": "https://github.com/sponsors/ljharb"
1364 + }
1365 + },
1360 1366 "node_modules/graceful-fs": {
1361 1367 "version": "4.2.11",
1362 1368 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -1369,34 +1375,22 @@
1369 1375 "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
1370 1376 "dev": true
1371 1377 },
1372 "node_modules/has": {
1373 "version": "1.0.3",
1374 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1375 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1376 "dev": true,
1377 "dependencies": {
1378 "function-bind": "^1.1.1"
1379 },
1380 "engines": {
1381 "node": ">= 0.4.0"
1382 }
1383 },
1384 "node_modules/has-flag": {
1385 "version": "4.0.0",
1386 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1387 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1378 + "node_modules/has-flag": {
1379 + "version": "4.0.0",
1380 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1381 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1388 1382 "dev": true,
1389 1383 "engines": {
1390 1384 "node": ">=8"
1391 1385 }
1392 1386 },
1393 1387 "node_modules/has-property-descriptors": {
1394 "version": "1.0.0",
1395 "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
1396 "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
1388 + "version": "1.0.1",
1389 + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
1390 + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
1397 1391 "dev": true,
1398 1392 "dependencies": {
1399 "get-intrinsic": "^1.1.1"
1393 + "get-intrinsic": "^1.2.2"
1400 1394 },
1401 1395 "funding": {
1402 1396 "url": "https://github.com/sponsors/ljharb"
@@ -1426,6 +1420,18 @@
1426 1420 "url": "https://github.com/sponsors/ljharb"
1427 1421 }
1428 1422 },
1423 + "node_modules/hasown": {
1424 + "version": "2.0.0",
1425 + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
1426 + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
1427 + "dev": true,
1428 + "dependencies": {
1429 + "function-bind": "^1.1.2"
1430 + },
1431 + "engines": {
1432 + "node": ">= 0.4"
1433 + }
1434 + },
1429 1435 "node_modules/ieee754": {
1430 1436 "version": "1.2.1",
1431 1437 "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -1447,9 +1453,9 @@
1447 1453 ]
1448 1454 },
1449 1455 "node_modules/ignore": {
1450 "version": "5.2.4",
1451 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
1452 "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
1456 + "version": "5.3.0",
1457 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
1458 + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
1453 1459 "dev": true,
1454 1460 "engines": {
1455 1461 "node": ">= 4"
@@ -1474,7 +1480,7 @@
1474 1480 "node_modules/imurmurhash": {
1475 1481 "version": "0.1.4",
1476 1482 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1477 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1483 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
1478 1484 "dev": true,
1479 1485 "engines": {
1480 1486 "node": ">=0.8.19"
@@ -1483,7 +1489,7 @@
1483 1489 "node_modules/inflight": {
1484 1490 "version": "1.0.6",
1485 1491 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1486 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1492 + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1487 1493 "dev": true,
1488 1494 "dependencies": {
1489 1495 "once": "^1.3.0",
@@ -1497,18 +1503,18 @@
1497 1503 "dev": true
1498 1504 },
1499 1505 "node_modules/ini": {
1500 "version": "2.0.0",
1501 "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
1502 "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
1506 + "version": "3.0.1",
1507 + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz",
1508 + "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==",
1503 1509 "dev": true,
1504 1510 "engines": {
1505 "node": ">=10"
1511 + "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
1506 1512 }
1507 1513 },
1508 1514 "node_modules/is-extglob": {
1509 1515 "version": "2.1.1",
1510 1516 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1511 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1517 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1512 1518 "dev": true,
1513 1519 "engines": {
1514 1520 "node": ">=0.10.0"
@@ -1577,13 +1583,13 @@
1577 1583 "node_modules/isexe": {
1578 1584 "version": "2.0.0",
1579 1585 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1580 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1586 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1581 1587 "dev": true
1582 1588 },
1583 1589 "node_modules/jackspeak": {
1584 "version": "2.2.1",
1585 "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz",
1586 "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==",
1590 + "version": "2.3.6",
1591 + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
1592 + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
1587 1593 "dev": true,
1588 1594 "dependencies": {
1589 1595 "@isaacs/cliui": "^8.0.2"
@@ -1610,6 +1616,12 @@
1610 1616 "js-yaml": "bin/js-yaml.js"
1611 1617 }
1612 1618 },
1619 + "node_modules/json-buffer": {
1620 + "version": "3.0.1",
1621 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
1622 + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
1623 + "dev": true
1624 + },
1613 1625 "node_modules/json-schema-traverse": {
1614 1626 "version": "0.4.1",
1615 1627 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -1619,21 +1631,30 @@
1619 1631 "node_modules/json-stable-stringify-without-jsonify": {
1620 1632 "version": "1.0.1",
1621 1633 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1622 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1634 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
1623 1635 "dev": true
1624 1636 },
1625 1637 "node_modules/json-stringify-safe": {
1626 1638 "version": "5.0.1",
1627 1639 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1628 "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1640 + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
1629 1641 "dev": true
1630 1642 },
1631 1643 "node_modules/jsonc-parser": {
1632 "version": "3.2.0",
1633 "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
1634 "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
1644 + "version": "3.2.1",
1645 + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
1646 + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==",
1635 1647 "dev": true
1636 1648 },
1649 + "node_modules/keyv": {
1650 + "version": "4.5.4",
1651 + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
1652 + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
1653 + "dev": true,
1654 + "dependencies": {
1655 + "json-buffer": "3.0.1"
1656 + }
1657 + },
1637 1658 "node_modules/levn": {
1638 1659 "version": "0.4.1",
1639 1660 "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -1656,6 +1677,21 @@
1656 1677 "uc.micro": "^1.0.1"
1657 1678 }
1658 1679 },
1680 + "node_modules/locate-path": {
1681 + "version": "6.0.0",
1682 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
1683 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
1684 + "dev": true,
1685 + "dependencies": {
1686 + "p-locate": "^5.0.0"
1687 + },
1688 + "engines": {
1689 + "node": ">=10"
1690 + },
1691 + "funding": {
1692 + "url": "https://github.com/sponsors/sindresorhus"
1693 + }
1694 + },
1659 1695 "node_modules/lodash.merge": {
1660 1696 "version": "4.6.2",
1661 1697 "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -1663,14 +1699,12 @@
1663 1699 "dev": true
1664 1700 },
1665 1701 "node_modules/lru-cache": {
1666 "version": "6.0.0",
1667 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1668 "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1669 "dependencies": {
1670 "yallist": "^4.0.0"
1671 },
1702 + "version": "10.2.0",
1703 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
1704 + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
1705 + "dev": true,
1672 1706 "engines": {
1673 "node": ">=10"
1707 + "node": "14 || >=16.14"
1674 1708 }
1675 1709 },
1676 1710 "node_modules/make-dir": {
@@ -1755,35 +1789,13 @@
1755 1789 "balanced-match": "^1.0.0"
1756 1790 }
1757 1791 },
1758 "node_modules/markdownlint-cli/node_modules/commander": {
1759 "version": "11.0.0",
1760 "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz",
1761 "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==",
1762 "dev": true,
1763 "engines": {
1764 "node": ">=16"
1765 }
1766 },
1767 "node_modules/markdownlint-cli/node_modules/glob": {
1768 "version": "10.2.7",
1769 "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz",
1770 "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==",
1792 + "node_modules/markdownlint-cli/node_modules/ignore": {
1793 + "version": "5.2.4",
1794 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
1795 + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
1771 1796 "dev": true,
1772 "dependencies": {
1773 "foreground-child": "^3.1.0",
1774 "jackspeak": "^2.0.3",
1775 "minimatch": "^9.0.1",
1776 "minipass": "^5.0.0 || ^6.0.2",
1777 "path-scurry": "^1.7.0"
1778 },
1779 "bin": {
1780 "glob": "dist/cjs/src/bin.js"
1781 },
1782 1797 "engines": {
1783 "node": ">=16 || 14 >=14.17"
1784 },
1785 "funding": {
1786 "url": "https://github.com/sponsors/isaacs"
1798 + "node": ">= 4"
1787 1799 }
1788 1800 },
1789 1801 "node_modules/markdownlint-cli/node_modules/minimatch": {
@@ -1889,13 +1901,13 @@
1889 1901 "node_modules/natural-compare": {
1890 1902 "version": "1.4.0",
1891 1903 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1892 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1904 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
1893 1905 "dev": true
1894 1906 },
1895 1907 "node_modules/nconf": {
1896 "version": "0.12.0",
1897 "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.0.tgz",
1898 "integrity": "sha512-T3fZPw3c7Dfrz8JBQEbEcZJ2s8f7cUMpKuyBtsGQe0b71pcXx6gNh4oti2xh5dxB+gO9ufNfISBlGvvWtfyMcA==",
1908 + "version": "0.12.1",
1909 + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.1.tgz",
1910 + "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==",
1899 1911 "dev": true,
1900 1912 "dependencies": {
1901 1913 "async": "^3.0.0",
@@ -1907,10 +1919,19 @@
1907 1919 "node": ">= 0.4.0"
1908 1920 }
1909 1921 },
1922 + "node_modules/nconf/node_modules/ini": {
1923 + "version": "2.0.0",
1924 + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
1925 + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
1926 + "dev": true,
1927 + "engines": {
1928 + "node": ">=10"
1929 + }
1930 + },
1910 1931 "node_modules/object-assign": {
1911 1932 "version": "4.1.1",
1912 1933 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1913 "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1934 + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1914 1935 "dev": true,
1915 1936 "engines": {
1916 1937 "node": ">=0.10.0"
@@ -1928,29 +1949,59 @@
1928 1949 "node_modules/once": {
1929 1950 "version": "1.4.0",
1930 1951 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1931 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1952 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1932 1953 "dev": true,
1933 1954 "dependencies": {
1934 1955 "wrappy": "1"
1935 1956 }
1936 1957 },
1937 1958 "node_modules/optionator": {
1938 "version": "0.9.1",
1939 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
1940 "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
1959 + "version": "0.9.3",
1960 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
1961 + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
1941 1962 "dev": true,
1942 1963 "dependencies": {
1964 + "@aashutoshrathi/word-wrap": "^1.2.3",
1943 1965 "deep-is": "^0.1.3",
1944 1966 "fast-levenshtein": "^2.0.6",
1945 1967 "levn": "^0.4.1",
1946 1968 "prelude-ls": "^1.2.1",
1947 "type-check": "^0.4.0",
1948 "word-wrap": "^1.2.3"
1969 + "type-check": "^0.4.0"
1949 1970 },
1950 1971 "engines": {
1951 1972 "node": ">= 0.8.0"
1952 1973 }
1953 1974 },
1975 + "node_modules/p-limit": {
1976 + "version": "3.1.0",
1977 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
1978 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
1979 + "dev": true,
1980 + "dependencies": {
1981 + "yocto-queue": "^0.1.0"
1982 + },
1983 + "engines": {
1984 + "node": ">=10"
1985 + },
1986 + "funding": {
1987 + "url": "https://github.com/sponsors/sindresorhus"
1988 + }
1989 + },
1990 + "node_modules/p-locate": {
1991 + "version": "5.0.0",
1992 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
1993 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
1994 + "dev": true,
1995 + "dependencies": {
1996 + "p-limit": "^3.0.2"
1997 + },
1998 + "engines": {
1999 + "node": ">=10"
2000 + },
2001 + "funding": {
2002 + "url": "https://github.com/sponsors/sindresorhus"
2003 + }
2004 + },
1954 2005 "node_modules/parent-module": {
1955 2006 "version": "1.0.1",
1956 2007 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -1963,10 +2014,19 @@
1963 2014 "node": ">=6"
1964 2015 }
1965 2016 },
2017 + "node_modules/path-exists": {
2018 + "version": "4.0.0",
2019 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
2020 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
2021 + "dev": true,
2022 + "engines": {
2023 + "node": ">=8"
2024 + }
2025 + },
1966 2026 "node_modules/path-is-absolute": {
1967 2027 "version": "1.0.1",
1968 2028 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1969 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2029 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1970 2030 "dev": true,
1971 2031 "engines": {
1972 2032 "node": ">=0.10.0"
@@ -1997,15 +2057,6 @@
1997 2057 "url": "https://github.com/sponsors/isaacs"
1998 2058 }
1999 2059 },
2000 "node_modules/path-scurry/node_modules/lru-cache": {
2001 "version": "10.0.0",
2002 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz",
2003 "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==",
2004 "dev": true,
2005 "engines": {
2006 "node": "14 || >=16.14"
2007 }
2008 },
2009 2060 "node_modules/path-type": {
2010 2061 "version": "4.0.0",
2011 2062 "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -2094,9 +2145,9 @@
2094 2145 "dev": true
2095 2146 },
2096 2147 "node_modules/punycode": {
2097 "version": "2.3.0",
2098 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
2099 "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
2148 + "version": "2.3.1",
2149 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
2150 + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
2100 2151 "dev": true,
2101 2152 "engines": {
2102 2153 "node": ">=6"
@@ -2146,7 +2197,7 @@
2146 2197 "node_modules/require-directory": {
2147 2198 "version": "2.1.1",
2148 2199 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
2149 "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
2200 + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
2150 2201 "dev": true,
2151 2202 "engines": {
2152 2203 "node": ">=0.10.0"
@@ -2186,6 +2237,26 @@
2186 2237 "url": "https://github.com/sponsors/isaacs"
2187 2238 }
2188 2239 },
2240 + "node_modules/rimraf/node_modules/glob": {
2241 + "version": "7.2.3",
2242 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
2243 + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
2244 + "dev": true,
2245 + "dependencies": {
2246 + "fs.realpath": "^1.0.0",
2247 + "inflight": "^1.0.4",
2248 + "inherits": "2",
2249 + "minimatch": "^3.1.1",
2250 + "once": "^1.3.0",
2251 + "path-is-absolute": "^1.0.0"
2252 + },
2253 + "engines": {
2254 + "node": "*"
2255 + },
2256 + "funding": {
2257 + "url": "https://github.com/sponsors/isaacs"
2258 + }
2259 + },
2189 2260 "node_modules/roarr": {
2190 2261 "version": "2.15.4",
2191 2262 "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
@@ -2218,15 +2289,6 @@
2218 2289 "run-con": "cli.js"
2219 2290 }
2220 2291 },
2221 "node_modules/run-con/node_modules/ini": {
2222 "version": "3.0.1",
2223 "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz",
2224 "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==",
2225 "dev": true,
2226 "engines": {
2227 "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
2228 }
2229 },
2230 2292 "node_modules/run-parallel": {
2231 2293 "version": "1.2.0",
2232 2294 "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -2273,7 +2335,7 @@
2273 2335 "node_modules/secure-keys": {
2274 2336 "version": "1.0.0",
2275 2337 "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz",
2276 "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=",
2338 + "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==",
2277 2339 "dev": true
2278 2340 },
2279 2341 "node_modules/seek-bzip": {
@@ -2289,6 +2351,12 @@
2289 2351 "seek-table": "bin/seek-bzip-table"
2290 2352 }
2291 2353 },
2354 + "node_modules/seek-bzip/node_modules/commander": {
2355 + "version": "2.20.3",
2356 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
2357 + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
2358 + "dev": true
2359 + },
2292 2360 "node_modules/semver": {
2293 2361 "version": "7.5.4",
2294 2362 "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
@@ -2306,9 +2374,20 @@
2306 2374 "node_modules/semver-compare": {
2307 2375 "version": "1.0.0",
2308 2376 "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
2309 "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
2377 + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
2310 2378 "dev": true
2311 2379 },
2380 + "node_modules/semver/node_modules/lru-cache": {
2381 + "version": "6.0.0",
2382 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
2383 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
2384 + "dependencies": {
2385 + "yallist": "^4.0.0"
2386 + },
2387 + "engines": {
2388 + "node": ">=10"
2389 + }
2390 + },
2312 2391 "node_modules/serialize-error": {
2313 2392 "version": "7.0.1",
2314 2393 "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
@@ -2374,9 +2453,9 @@
2374 2453 }
2375 2454 },
2376 2455 "node_modules/signal-exit": {
2377 "version": "4.0.2",
2378 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz",
2379 "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
2456 + "version": "4.1.0",
2457 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2458 + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2380 2459 "dev": true,
2381 2460 "engines": {
2382 2461 "node": ">=14"
@@ -2395,9 +2474,9 @@
2395 2474 }
2396 2475 },
2397 2476 "node_modules/sprintf-js": {
2398 "version": "1.1.2",
2399 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
2400 "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
2477 + "version": "1.1.3",
2478 + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
2479 + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
2401 2480 "dev": true
2402 2481 },
2403 2482 "node_modules/string_decoder": {
@@ -2416,17 +2495,20 @@
2416 2495 "dev": true
2417 2496 },
2418 2497 "node_modules/string-width": {
2419 "version": "4.2.3",
2420 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2421 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2498 + "version": "5.1.2",
2499 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
2500 + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
2422 2501 "dev": true,
2423 2502 "dependencies": {
2424 "emoji-regex": "^8.0.0",
2425 "is-fullwidth-code-point": "^3.0.0",
2426 "strip-ansi": "^6.0.1"
2503 + "eastasianwidth": "^0.2.0",
2504 + "emoji-regex": "^9.2.2",
2505 + "strip-ansi": "^7.0.1"
2427 2506 },
2428 2507 "engines": {
2429 "node": ">=8"
2508 + "node": ">=12"
2509 + },
2510 + "funding": {
2511 + "url": "https://github.com/sponsors/sindresorhus"
2430 2512 }
2431 2513 },
2432 2514 "node_modules/string-width-cjs": {
@@ -2450,11 +2532,32 @@
2450 2532 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2451 2533 "dev": true
2452 2534 },
2453 "node_modules/string-width/node_modules/emoji-regex": {
2454 "version": "8.0.0",
2455 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2456 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2457 "dev": true
2535 + "node_modules/string-width/node_modules/ansi-regex": {
2536 + "version": "6.0.1",
2537 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
2538 + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
2539 + "dev": true,
2540 + "engines": {
2541 + "node": ">=12"
2542 + },
2543 + "funding": {
2544 + "url": "https://github.com/chalk/ansi-regex?sponsor=1"
2545 + }
2546 + },
2547 + "node_modules/string-width/node_modules/strip-ansi": {
2548 + "version": "7.1.0",
2549 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
2550 + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
2551 + "dev": true,
2552 + "dependencies": {
2553 + "ansi-regex": "^6.0.1"
2554 + },
2555 + "engines": {
2556 + "node": ">=12"
2557 + },
2558 + "funding": {
2559 + "url": "https://github.com/chalk/strip-ansi?sponsor=1"
2560 + }
2458 2561 },
2459 2562 "node_modules/strip-ansi": {
2460 2563 "version": "6.0.1",
@@ -2535,7 +2638,7 @@
2535 2638 "node_modules/text-table": {
2536 2639 "version": "0.2.0",
2537 2640 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
2538 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
2641 + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
2539 2642 "dev": true
2540 2643 },
2541 2644 "node_modules/through": {
@@ -2648,27 +2751,18 @@
2648 2751 "node": ">= 8"
2649 2752 }
2650 2753 },
2651 "node_modules/word-wrap": {
2652 "version": "1.2.3",
2653 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
2654 "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
2655 "dev": true,
2656 "engines": {
2657 "node": ">=0.10.0"
2658 }
2659 },
2660 2754 "node_modules/wrap-ansi": {
2661 "version": "7.0.0",
2662 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2663 "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2755 + "version": "8.1.0",
2756 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
2757 + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
2664 2758 "dev": true,
2665 2759 "dependencies": {
2666 "ansi-styles": "^4.0.0",
2667 "string-width": "^4.1.0",
2668 "strip-ansi": "^6.0.0"
2760 + "ansi-styles": "^6.1.0",
2761 + "string-width": "^5.0.1",
2762 + "strip-ansi": "^7.0.1"
2669 2763 },
2670 2764 "engines": {
2671 "node": ">=10"
2765 + "node": ">=12"
2672 2766 },
2673 2767 "funding": {
2674 2768 "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
@@ -2692,10 +2786,69 @@
2692 2786 "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2693 2787 }
2694 2788 },
2789 + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
2790 + "version": "8.0.0",
2791 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2792 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2793 + "dev": true
2794 + },
2795 + "node_modules/wrap-ansi-cjs/node_modules/string-width": {
2796 + "version": "4.2.3",
2797 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2798 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2799 + "dev": true,
2800 + "dependencies": {
2801 + "emoji-regex": "^8.0.0",
2802 + "is-fullwidth-code-point": "^3.0.0",
2803 + "strip-ansi": "^6.0.1"
2804 + },
2805 + "engines": {
2806 + "node": ">=8"
2807 + }
2808 + },
2809 + "node_modules/wrap-ansi/node_modules/ansi-regex": {
2810 + "version": "6.0.1",
2811 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
2812 + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
2813 + "dev": true,
2814 + "engines": {
2815 + "node": ">=12"
2816 + },
2817 + "funding": {
2818 + "url": "https://github.com/chalk/ansi-regex?sponsor=1"
2819 + }
2820 + },
2821 + "node_modules/wrap-ansi/node_modules/ansi-styles": {
2822 + "version": "6.2.1",
2823 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
2824 + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
2825 + "dev": true,
2826 + "engines": {
2827 + "node": ">=12"
2828 + },
2829 + "funding": {
2830 + "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2831 + }
2832 + },
2833 + "node_modules/wrap-ansi/node_modules/strip-ansi": {
2834 + "version": "7.1.0",
2835 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
2836 + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
2837 + "dev": true,
2838 + "dependencies": {
2839 + "ansi-regex": "^6.0.1"
2840 + },
2841 + "engines": {
2842 + "node": ">=12"
2843 + },
2844 + "funding": {
2845 + "url": "https://github.com/chalk/strip-ansi?sponsor=1"
2846 + }
2847 + },
2695 2848 "node_modules/wrappy": {
2696 2849 "version": "1.0.2",
2697 2850 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2698 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2851 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2699 2852 "dev": true
2700 2853 },
2701 2854 "node_modules/xtend": {
@@ -2763,6 +2916,26 @@
2763 2916 "node": ">=10"
2764 2917 }
2765 2918 },
2919 + "node_modules/yargs/node_modules/emoji-regex": {
2920 + "version": "8.0.0",
2921 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2922 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2923 + "dev": true
2924 + },
2925 + "node_modules/yargs/node_modules/string-width": {
2926 + "version": "4.2.3",
2927 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2928 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2929 + "dev": true,
2930 + "dependencies": {
2931 + "emoji-regex": "^8.0.0",
2932 + "is-fullwidth-code-point": "^3.0.0",
2933 + "strip-ansi": "^6.0.1"
2934 + },
2935 + "engines": {
2936 + "node": ">=8"
2937 + }
2938 + },
2766 2939 "node_modules/yarn": {
2767 2940 "version": "1.22.19",
2768 2941 "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz",
modified package.json
+3 −1
@@ -11,7 +11,9 @@
11 11 "shellcheck": "shellcheck .github/workflows/*.sh",
12 12 "test": "node test/setup-beam.test.js",
13 13 "yamllint": "yamllint .github/workflows/**.yml && yamllint .*.yml && yamllint *.yml",
14 "build-dist": "rm -rf ./dist && npm install && npm run build && npm run format && npm run markdownlint && npm run shellcheck && npm run yamllint && npm run jslint"
14 + "clean-dist": "rm -rf ./dist",
15 + "lint": "npm run markdownlint && npm run shellcheck && npm run yamllint && npm run jslint",
16 + "build-dist": "npm run clean-dist && npm install && npm run build && npm run format && npm run lint"
15 17 },
16 18 "dependencies": {
17 19 "@actions/core": "1.10.0",
modified src/setup-beam.js
+15 −8
@@ -135,7 +135,6 @@ async function maybeInstallGleam(gleamSpec) {
135 135 core.startGroup(`Installing Gleam ${gleamVersion}`)
136 136 await install('gleam', { toolVersion: gleamVersion })
137 137 core.setOutput('gleam-version', gleamVersion)
138 core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/gleam/bin`)
139 138 core.endGroup()
140 139
141 140 installed = true
@@ -156,7 +155,6 @@ async function maybeInstallRebar3(rebar3Spec) {
156 155 core.startGroup(`Installing rebar3 ${rebar3Version}`)
157 156 await install('rebar3', { toolVersion: rebar3Version })
158 157 core.setOutput('rebar3-version', rebar3Version)
159 core.addPath(`${process.env.RUNNER_TEMP}/.setup-beam/rebar3/bin`)
160 158 core.endGroup()
161 159
162 160 installed = true
@@ -954,16 +952,25 @@ async function installTool(opts) {
954 952 core.debug(` ... it is, at ${cachePath}`)
955 953 }
956 954
955 + // This makes sure we run, e.g. in Windows, the installer in the runner
956 + // We're not caching the install, just the downloaded tool
957 + const runnerToolPath = path.join(
958 + process.env.RUNNER_TEMP,
959 + '.setup-beam',
960 + toolName,
961 + )
962 + fs.cpSync(cachePath, runnerToolPath, { recursive: true })
963 +
957 964 core.debug('Performing post extract operations...')
958 await platformOpts.postExtract(cachePath)
965 + await platformOpts.postExtract(runnerToolPath)
959 966
960 core.debug(`Adding ${cachePath}'s bin to system path`)
961 const catchPathBin = path.join(cachePath, 'bin')
962 core.addPath(catchPathBin)
967 + core.debug(`Adding ${runnerToolPath}' bin to system path`)
968 + const runnerToolPathBin = path.join(runnerToolPath, 'bin')
969 + core.addPath(runnerToolPathBin)
963 970
964 971 const installDirForVarName = `INSTALL_DIR_FOR_${toolName}`.toUpperCase()
965 core.debug(`Exporting ${installDirForVarName} as ${catchPathBin}`)
966 core.exportVariable(installDirForVarName, catchPathBin)
972 + core.debug(`Exporting ${installDirForVarName} as ${runnerToolPath}`)
973 + core.exportVariable(installDirForVarName, runnerToolPath)
967 974
968 975 core.info(`Installed ${installOpts.tool} version`)
969 976 const [cmd, args] = platformOpts.reportVersion()

Parents: f2c1b65