├── .editorconfig
├── .eslintrc.yml
├── .gitignore
├── .husky
└── pre-commit
├── .npmrc
├── .prettierignore
├── .prettierrc
├── .vscode
└── settings.json
├── LICENSE
├── README.md
├── api
└── index.ts
├── docs
└── README-ZH.md
├── package.json
├── pnpm-lock.yaml
├── src
├── assets
│ ├── brush.svg
│ ├── fog-shim-reverse.svg
│ ├── fog-shim.svg
│ ├── index.ts
│ ├── people-texture.svg
│ └── people.svg
├── common
│ ├── error.ts
│ ├── index.ts
│ ├── rank.ts
│ ├── retries.ts
│ └── utils.ts
├── fetchers
│ ├── request.ts
│ └── stats.ts
├── graphql
│ └── index.ts
├── render
│ ├── base.ts
│ ├── error.ts
│ ├── immortality
│ │ └── index.ts
│ ├── index.ts
│ └── render.ts
└── types
│ ├── github.ts
│ ├── request.ts
│ └── stats.ts
├── tsconfig.json
└── vercel.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # 编辑器规范: https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_size = 2
7 | indent_style = space
8 | end_of_line = lf
9 | max_line_length = 100
10 | insert_final_newline = true
11 | trim_trailing_whitespace = true
12 |
--------------------------------------------------------------------------------
/.eslintrc.yml:
--------------------------------------------------------------------------------
1 | env:
2 | browser: true
3 | es2021: true
4 | extends:
5 | - eslint:recommended
6 | - plugin:@typescript-eslint/recommended
7 | overrides: []
8 | parser: '@typescript-eslint/parser'
9 | parserOptions:
10 | ecmaVersion: latest
11 | sourceType: module
12 | plugins:
13 | - '@typescript-eslint'
14 | rules:
15 | indent:
16 | - error
17 | - 2
18 | quotes:
19 | - error
20 | - single
21 | semi:
22 | - error
23 | - always
24 | no-control-regex:
25 | - 0
26 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | pnpm-debug.log*
5 |
6 | node_modules
7 |
8 | # Editor directories and files
9 | .idea
10 | .DS_Store
11 | *.suo
12 | *.ntvs*
13 | *.njsproj
14 | *.sln
15 | *.sw?
16 | .vercel
17 | .env
18 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | npx --no-install lint-staged
2 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | registry=https://registry.npmjs.org/
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | dist/
3 |
--------------------------------------------------------------------------------
/.prettierrc :
--------------------------------------------------------------------------------
1 | {
2 | "tabWidth": 2,
3 | "trailingComma": "all",
4 | "useTabs": true,
5 | "endOfLine": "auto",
6 | "proseWrap": "always",
7 | "singleQuote": true
8 | }
9 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "cSpell.words": [
3 | "retryer"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 IceEnd
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # github-immortality
2 |
3 | [简体中文](./docs/README-ZH.md)
4 |
5 | Based on the system of 'Mortal's Cultivation Journey', a statistical card was created, referencing [github-readme-stats](https://github.dev/anuraghazra/github-readme-stats).
6 |
7 | Github stats card based on the system of "A Record of a Mortal's Journey to Immortality".
8 |
9 | ## Get Start
10 |
11 | By adding a Github username to the URL, you can get a cultivation record card.
12 |
13 | ```markdown
14 | [](https://github.com/IceEnd)
15 | ```
16 |
17 | ## Demo
18 |
19 | [](https://github.com/IceEnd)
20 |
--------------------------------------------------------------------------------
/api/index.ts:
--------------------------------------------------------------------------------
1 | import { VercelRequest, VercelResponse } from '@vercel/node';
2 | import { renderError, renderStatsCard } from '../src/render';
3 | import { fetchStats } from '../src/fetchers/stats';
4 | import { CustomError } from '../src/common/error';
5 | import { RequestQuery } from '../src/types/request';
6 |
7 | const main = async (request: VercelRequest, response: VercelResponse) => {
8 | const { username } = request.query as RequestQuery;
9 | response.setHeader('Content-Type', 'image/svg+xml');
10 |
11 | try {
12 | const stats = await fetchStats(username);
13 | response.status(200);
14 | response.setHeader('Cache-Control', 'max-age=10800');
15 | response.send(renderStatsCard(stats));
16 | } catch (error) {
17 | const { message, secondaryMessage } = error as CustomError;
18 | return response.send(
19 | renderError(message, secondaryMessage)
20 | );
21 | }
22 | };
23 |
24 | export default main;
25 |
--------------------------------------------------------------------------------
/docs/README-ZH.md:
--------------------------------------------------------------------------------
1 | # github-immortality
2 |
3 | 参考了[github-readme-stats](https://github.dev/anuraghazra/github-readme-stats), 制作成的基于《凡人修仙传》体系的统计卡片。
4 |
5 | ## 使用方法
6 |
7 | 通过在链接上加上 Github 用户名,就可以得到一张修仙履历卡片了。
8 |
9 | ```markdown
10 | [](https://github.com/IceEnd)
11 | ```
12 |
13 | 更改 ?username= 的值为你的 GitHub 用户名。
14 |
15 | ## Demo
16 |
17 | [](https://github.com/IceEnd)
18 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "github-immortality",
3 | "version": "1.0.0",
4 | "keywords": [
5 | "readme-stats"
6 | ],
7 | "description": "Dynamically generate stats for your GitHub readme",
8 | "main": "index.js",
9 | "scripts": {
10 | "start": "vercel dev",
11 | "prepare": "husky"
12 | },
13 | "author": "Alchemy",
14 | "dependencies": {
15 | "axios": "^1.6.8",
16 | "word-wrap": "^1.2.5"
17 | },
18 | "devDependencies": {
19 | "@types/node": "^20.12.7",
20 | "@typescript-eslint/eslint-plugin": "^7.6.0",
21 | "@typescript-eslint/parser": "^7.6.0",
22 | "@vercel/node": "^3.1.5",
23 | "eslint": "^8.57.0",
24 | "eslint-config-prettier": "^9.1.0",
25 | "eslint-define-config": "^2.1.0",
26 | "eslint-plugin-prettier": "^5.1.3",
27 | "husky": "^9.0.11",
28 | "lint-staged": "^15.2.2",
29 | "prettier": "^3.2.5",
30 | "typescript": "^5.4.2",
31 | "vercel": "^34.2.0"
32 | },
33 | "lint-staged": {
34 | "*.{js,ts}": [
35 | "eslint --fix"
36 | ]
37 | },
38 | "license": "MIT",
39 | "engines": {
40 | "node": ">=18.0.0",
41 | "pnpm": ">=8.14.3",
42 | "npm": "please-use-pnpm",
43 | "yarn": "please-use-pnpm"
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | axios:
9 | specifier: ^1.6.8
10 | version: 1.6.8
11 | word-wrap:
12 | specifier: ^1.2.5
13 | version: 1.2.5
14 |
15 | devDependencies:
16 | '@types/node':
17 | specifier: ^20.12.7
18 | version: 20.12.7
19 | '@typescript-eslint/eslint-plugin':
20 | specifier: ^7.6.0
21 | version: 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5)
22 | '@typescript-eslint/parser':
23 | specifier: ^7.6.0
24 | version: 7.6.0(eslint@8.57.0)(typescript@5.4.5)
25 | '@vercel/node':
26 | specifier: ^3.1.5
27 | version: 3.1.5
28 | eslint:
29 | specifier: ^8.57.0
30 | version: 8.57.0
31 | eslint-config-prettier:
32 | specifier: ^9.1.0
33 | version: 9.1.0(eslint@8.57.0)
34 | eslint-define-config:
35 | specifier: ^2.1.0
36 | version: 2.1.0
37 | eslint-plugin-prettier:
38 | specifier: ^5.1.3
39 | version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5)
40 | husky:
41 | specifier: ^9.0.11
42 | version: 9.0.11
43 | lint-staged:
44 | specifier: ^15.2.2
45 | version: 15.2.2
46 | prettier:
47 | specifier: ^3.2.5
48 | version: 3.2.5
49 | typescript:
50 | specifier: ^5.4.2
51 | version: 5.4.5
52 | vercel:
53 | specifier: ^34.2.0
54 | version: 34.2.0
55 |
56 | packages:
57 |
58 | /@aashutoshrathi/word-wrap@1.2.6:
59 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
60 | engines: {node: '>=0.10.0'}
61 | dev: true
62 |
63 | /@cspotcode/source-map-support@0.8.1:
64 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
65 | engines: {node: '>=12'}
66 | dependencies:
67 | '@jridgewell/trace-mapping': 0.3.9
68 | dev: true
69 |
70 | /@edge-runtime/format@2.2.1:
71 | resolution: {integrity: sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g==}
72 | engines: {node: '>=16'}
73 | dev: true
74 |
75 | /@edge-runtime/node-utils@2.3.0:
76 | resolution: {integrity: sha512-uUtx8BFoO1hNxtHjp3eqVPC/mWImGb2exOfGjMLUoipuWgjej+f4o/VP4bUI8U40gu7Teogd5VTeZUkGvJSPOQ==}
77 | engines: {node: '>=16'}
78 | dev: true
79 |
80 | /@edge-runtime/ponyfill@2.4.2:
81 | resolution: {integrity: sha512-oN17GjFr69chu6sDLvXxdhg0Qe8EZviGSuqzR9qOiKh4MhFYGdBBcqRNzdmYeAdeRzOW2mM9yil4RftUQ7sUOA==}
82 | engines: {node: '>=16'}
83 | dev: true
84 |
85 | /@edge-runtime/primitives@4.1.0:
86 | resolution: {integrity: sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==}
87 | engines: {node: '>=16'}
88 | dev: true
89 |
90 | /@edge-runtime/vm@3.2.0:
91 | resolution: {integrity: sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==}
92 | engines: {node: '>=16'}
93 | dependencies:
94 | '@edge-runtime/primitives': 4.1.0
95 | dev: true
96 |
97 | /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0):
98 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
99 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
100 | peerDependencies:
101 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
102 | dependencies:
103 | eslint: 8.57.0
104 | eslint-visitor-keys: 3.4.3
105 | dev: true
106 |
107 | /@eslint-community/regexpp@4.10.0:
108 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
109 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
110 | dev: true
111 |
112 | /@eslint/eslintrc@2.1.4:
113 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
114 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
115 | dependencies:
116 | ajv: 6.12.6
117 | debug: 4.3.4
118 | espree: 9.6.1
119 | globals: 13.24.0
120 | ignore: 5.3.1
121 | import-fresh: 3.3.0
122 | js-yaml: 4.1.0
123 | minimatch: 3.1.2
124 | strip-json-comments: 3.1.1
125 | transitivePeerDependencies:
126 | - supports-color
127 | dev: true
128 |
129 | /@eslint/js@8.57.0:
130 | resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
131 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
132 | dev: true
133 |
134 | /@fastify/busboy@2.1.1:
135 | resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
136 | engines: {node: '>=14'}
137 | dev: true
138 |
139 | /@humanwhocodes/config-array@0.11.14:
140 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
141 | engines: {node: '>=10.10.0'}
142 | dependencies:
143 | '@humanwhocodes/object-schema': 2.0.3
144 | debug: 4.3.4
145 | minimatch: 3.1.2
146 | transitivePeerDependencies:
147 | - supports-color
148 | dev: true
149 |
150 | /@humanwhocodes/module-importer@1.0.1:
151 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
152 | engines: {node: '>=12.22'}
153 | dev: true
154 |
155 | /@humanwhocodes/object-schema@2.0.3:
156 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
157 | dev: true
158 |
159 | /@jridgewell/resolve-uri@3.1.2:
160 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
161 | engines: {node: '>=6.0.0'}
162 | dev: true
163 |
164 | /@jridgewell/sourcemap-codec@1.4.15:
165 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
166 | dev: true
167 |
168 | /@jridgewell/trace-mapping@0.3.9:
169 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
170 | dependencies:
171 | '@jridgewell/resolve-uri': 3.1.2
172 | '@jridgewell/sourcemap-codec': 1.4.15
173 | dev: true
174 |
175 | /@mapbox/node-pre-gyp@1.0.11:
176 | resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
177 | hasBin: true
178 | dependencies:
179 | detect-libc: 2.0.3
180 | https-proxy-agent: 5.0.1
181 | make-dir: 3.1.0
182 | node-fetch: 2.7.0
183 | nopt: 5.0.0
184 | npmlog: 5.0.1
185 | rimraf: 3.0.2
186 | semver: 7.6.0
187 | tar: 6.2.1
188 | transitivePeerDependencies:
189 | - encoding
190 | - supports-color
191 | dev: true
192 |
193 | /@nodelib/fs.scandir@2.1.5:
194 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
195 | engines: {node: '>= 8'}
196 | dependencies:
197 | '@nodelib/fs.stat': 2.0.5
198 | run-parallel: 1.2.0
199 | dev: true
200 |
201 | /@nodelib/fs.stat@2.0.5:
202 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
203 | engines: {node: '>= 8'}
204 | dev: true
205 |
206 | /@nodelib/fs.walk@1.2.8:
207 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
208 | engines: {node: '>= 8'}
209 | dependencies:
210 | '@nodelib/fs.scandir': 2.1.5
211 | fastq: 1.17.1
212 | dev: true
213 |
214 | /@pkgr/core@0.1.1:
215 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
216 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
217 | dev: true
218 |
219 | /@rollup/pluginutils@4.2.1:
220 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
221 | engines: {node: '>= 8.0.0'}
222 | dependencies:
223 | estree-walker: 2.0.2
224 | picomatch: 2.3.1
225 | dev: true
226 |
227 | /@sinclair/typebox@0.25.24:
228 | resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==}
229 | dev: true
230 |
231 | /@tootallnate/once@2.0.0:
232 | resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
233 | engines: {node: '>= 10'}
234 | dev: true
235 |
236 | /@ts-morph/common@0.11.1:
237 | resolution: {integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==}
238 | dependencies:
239 | fast-glob: 3.3.2
240 | minimatch: 3.1.2
241 | mkdirp: 1.0.4
242 | path-browserify: 1.0.1
243 | dev: true
244 |
245 | /@tsconfig/node10@1.0.11:
246 | resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
247 | dev: true
248 |
249 | /@tsconfig/node12@1.0.11:
250 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
251 | dev: true
252 |
253 | /@tsconfig/node14@1.0.3:
254 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
255 | dev: true
256 |
257 | /@tsconfig/node16@1.0.4:
258 | resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
259 | dev: true
260 |
261 | /@types/json-schema@7.0.15:
262 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
263 | dev: true
264 |
265 | /@types/node@16.18.11:
266 | resolution: {integrity: sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==}
267 | dev: true
268 |
269 | /@types/node@20.12.7:
270 | resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==}
271 | dependencies:
272 | undici-types: 5.26.5
273 | dev: true
274 |
275 | /@types/semver@7.5.8:
276 | resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
277 | dev: true
278 |
279 | /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5):
280 | resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==}
281 | engines: {node: ^18.18.0 || >=20.0.0}
282 | peerDependencies:
283 | '@typescript-eslint/parser': ^7.0.0
284 | eslint: ^8.56.0
285 | typescript: '*'
286 | peerDependenciesMeta:
287 | typescript:
288 | optional: true
289 | dependencies:
290 | '@eslint-community/regexpp': 4.10.0
291 | '@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
292 | '@typescript-eslint/scope-manager': 7.6.0
293 | '@typescript-eslint/type-utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
294 | '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
295 | '@typescript-eslint/visitor-keys': 7.6.0
296 | debug: 4.3.4
297 | eslint: 8.57.0
298 | graphemer: 1.4.0
299 | ignore: 5.3.1
300 | natural-compare: 1.4.0
301 | semver: 7.6.0
302 | ts-api-utils: 1.3.0(typescript@5.4.5)
303 | typescript: 5.4.5
304 | transitivePeerDependencies:
305 | - supports-color
306 | dev: true
307 |
308 | /@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5):
309 | resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==}
310 | engines: {node: ^18.18.0 || >=20.0.0}
311 | peerDependencies:
312 | eslint: ^8.56.0
313 | typescript: '*'
314 | peerDependenciesMeta:
315 | typescript:
316 | optional: true
317 | dependencies:
318 | '@typescript-eslint/scope-manager': 7.6.0
319 | '@typescript-eslint/types': 7.6.0
320 | '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5)
321 | '@typescript-eslint/visitor-keys': 7.6.0
322 | debug: 4.3.4
323 | eslint: 8.57.0
324 | typescript: 5.4.5
325 | transitivePeerDependencies:
326 | - supports-color
327 | dev: true
328 |
329 | /@typescript-eslint/scope-manager@7.6.0:
330 | resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==}
331 | engines: {node: ^18.18.0 || >=20.0.0}
332 | dependencies:
333 | '@typescript-eslint/types': 7.6.0
334 | '@typescript-eslint/visitor-keys': 7.6.0
335 | dev: true
336 |
337 | /@typescript-eslint/type-utils@7.6.0(eslint@8.57.0)(typescript@5.4.5):
338 | resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==}
339 | engines: {node: ^18.18.0 || >=20.0.0}
340 | peerDependencies:
341 | eslint: ^8.56.0
342 | typescript: '*'
343 | peerDependenciesMeta:
344 | typescript:
345 | optional: true
346 | dependencies:
347 | '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5)
348 | '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
349 | debug: 4.3.4
350 | eslint: 8.57.0
351 | ts-api-utils: 1.3.0(typescript@5.4.5)
352 | typescript: 5.4.5
353 | transitivePeerDependencies:
354 | - supports-color
355 | dev: true
356 |
357 | /@typescript-eslint/types@7.6.0:
358 | resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==}
359 | engines: {node: ^18.18.0 || >=20.0.0}
360 | dev: true
361 |
362 | /@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.5):
363 | resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==}
364 | engines: {node: ^18.18.0 || >=20.0.0}
365 | peerDependencies:
366 | typescript: '*'
367 | peerDependenciesMeta:
368 | typescript:
369 | optional: true
370 | dependencies:
371 | '@typescript-eslint/types': 7.6.0
372 | '@typescript-eslint/visitor-keys': 7.6.0
373 | debug: 4.3.4
374 | globby: 11.1.0
375 | is-glob: 4.0.3
376 | minimatch: 9.0.4
377 | semver: 7.6.0
378 | ts-api-utils: 1.3.0(typescript@5.4.5)
379 | typescript: 5.4.5
380 | transitivePeerDependencies:
381 | - supports-color
382 | dev: true
383 |
384 | /@typescript-eslint/utils@7.6.0(eslint@8.57.0)(typescript@5.4.5):
385 | resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==}
386 | engines: {node: ^18.18.0 || >=20.0.0}
387 | peerDependencies:
388 | eslint: ^8.56.0
389 | dependencies:
390 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
391 | '@types/json-schema': 7.0.15
392 | '@types/semver': 7.5.8
393 | '@typescript-eslint/scope-manager': 7.6.0
394 | '@typescript-eslint/types': 7.6.0
395 | '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5)
396 | eslint: 8.57.0
397 | semver: 7.6.0
398 | transitivePeerDependencies:
399 | - supports-color
400 | - typescript
401 | dev: true
402 |
403 | /@typescript-eslint/visitor-keys@7.6.0:
404 | resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==}
405 | engines: {node: ^18.18.0 || >=20.0.0}
406 | dependencies:
407 | '@typescript-eslint/types': 7.6.0
408 | eslint-visitor-keys: 3.4.3
409 | dev: true
410 |
411 | /@ungap/structured-clone@1.2.0:
412 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
413 | dev: true
414 |
415 | /@vercel/build-utils@8.2.0:
416 | resolution: {integrity: sha512-yDr/zp/SX45mIy6DO8IRD6hmEs6gIr33/ajT3y8efUt/crQvgNtaSkbx9ubbwkR4RV/qKL213v6kXxj+EpsnlQ==}
417 | dev: true
418 |
419 | /@vercel/error-utils@2.0.2:
420 | resolution: {integrity: sha512-Sj0LFafGpYr6pfCqrQ82X6ukRl5qpmVrHM/191kNYFqkkB9YkjlMAj6QcEsvCG259x4QZ7Tya++0AB85NDPbKQ==}
421 | dev: true
422 |
423 | /@vercel/fun@1.1.0:
424 | resolution: {integrity: sha512-SpuPAo+MlAYMtcMcC0plx7Tv4Mp7SQhJJj1iIENlOnABL24kxHpL09XLQMGzZIzIW7upR8c3edwgfpRtp+dhVw==}
425 | engines: {node: '>= 10'}
426 | dependencies:
427 | '@tootallnate/once': 2.0.0
428 | async-listen: 1.2.0
429 | debug: 4.1.1
430 | execa: 3.2.0
431 | fs-extra: 8.1.0
432 | generic-pool: 3.4.2
433 | micro: 9.3.5-canary.3
434 | ms: 2.1.1
435 | node-fetch: 2.6.7
436 | path-match: 1.2.4
437 | promisepipe: 3.0.0
438 | semver: 7.3.5
439 | stat-mode: 0.3.0
440 | stream-to-promise: 2.2.0
441 | tar: 4.4.18
442 | tree-kill: 1.2.2
443 | uid-promise: 1.0.0
444 | uuid: 3.3.2
445 | xdg-app-paths: 5.1.0
446 | yauzl-promise: 2.1.3
447 | transitivePeerDependencies:
448 | - encoding
449 | - supports-color
450 | dev: true
451 |
452 | /@vercel/gatsby-plugin-vercel-analytics@1.0.11:
453 | resolution: {integrity: sha512-iTEA0vY6RBPuEzkwUTVzSHDATo1aF6bdLLspI68mQ/BTbi5UQEGjpjyzdKOVcSYApDtFU6M6vypZ1t4vIEnHvw==}
454 | dependencies:
455 | web-vitals: 0.2.4
456 | dev: true
457 |
458 | /@vercel/gatsby-plugin-vercel-builder@2.0.31:
459 | resolution: {integrity: sha512-p0ggHYNe8tMVlsBYVHwjavLpOtkxbw+VN1ywzsIcqnwJpYi9HSgbm+zRxmNqz/4autn6KZCmgEcWanhjhMaH5Q==}
460 | dependencies:
461 | '@sinclair/typebox': 0.25.24
462 | '@vercel/build-utils': 8.2.0
463 | '@vercel/routing-utils': 3.1.0
464 | esbuild: 0.14.47
465 | etag: 1.8.1
466 | fs-extra: 11.1.0
467 | dev: true
468 |
469 | /@vercel/go@3.1.1:
470 | resolution: {integrity: sha512-mrzomNYltxkjvtUmaYry5YEyvwTz6c/QQHE5Gr/pPGRIniUiP6T6OFOJ49RBN7e6pRXaNzHPVuidiuBhvHh5+Q==}
471 | dev: true
472 |
473 | /@vercel/hydrogen@1.0.2:
474 | resolution: {integrity: sha512-/Q2MKk1GfOuZAnkE9jQexjtUQqanbY65R+xtJWd9yKIgwcfRI1hxiNH3uXyVM5AvLoY+fxxULkSuxDtUKpkJpQ==}
475 | dependencies:
476 | '@vercel/static-config': 3.0.0
477 | ts-morph: 12.0.0
478 | dev: true
479 |
480 | /@vercel/next@4.2.11:
481 | resolution: {integrity: sha512-jCMTa75CIkX8vfY4BiW6BajSLXXQRE1doNeX9nO+gzYtaKTfxB5FiVKNAocjDwP249WIR0o1vziHus5bX84jFg==}
482 | dependencies:
483 | '@vercel/nft': 0.27.0
484 | transitivePeerDependencies:
485 | - encoding
486 | - supports-color
487 | dev: true
488 |
489 | /@vercel/nft@0.27.0:
490 | resolution: {integrity: sha512-W5pValyhToK9hbgEUAM6sLRUIl1I++RsFnXKHXtND50P1+vZ+OYPCzq1OOz0Ok6ghK6aOwae8G/rEAXkLedC+w==}
491 | engines: {node: '>=16'}
492 | hasBin: true
493 | dependencies:
494 | '@mapbox/node-pre-gyp': 1.0.11
495 | '@rollup/pluginutils': 4.2.1
496 | acorn: 8.11.3
497 | acorn-import-attributes: 1.9.5(acorn@8.11.3)
498 | async-sema: 3.1.1
499 | bindings: 1.5.0
500 | estree-walker: 2.0.2
501 | glob: 7.2.3
502 | graceful-fs: 4.2.11
503 | micromatch: 4.0.5
504 | node-gyp-build: 4.8.0
505 | resolve-from: 5.0.0
506 | transitivePeerDependencies:
507 | - encoding
508 | - supports-color
509 | dev: true
510 |
511 | /@vercel/node@3.1.5:
512 | resolution: {integrity: sha512-1LVqdL/HKrfuLGIWEHm7O/zA6admKRClIuJOVsasvW0PHrrwUUfcoKvgHj/sH6HUEzgE9WIelqFLe8/j/tzA4A==}
513 | dependencies:
514 | '@edge-runtime/node-utils': 2.3.0
515 | '@edge-runtime/primitives': 4.1.0
516 | '@edge-runtime/vm': 3.2.0
517 | '@types/node': 16.18.11
518 | '@vercel/build-utils': 8.2.0
519 | '@vercel/error-utils': 2.0.2
520 | '@vercel/nft': 0.27.0
521 | '@vercel/static-config': 3.0.0
522 | async-listen: 3.0.0
523 | cjs-module-lexer: 1.2.3
524 | edge-runtime: 2.5.9
525 | es-module-lexer: 1.4.1
526 | esbuild: 0.14.47
527 | etag: 1.8.1
528 | node-fetch: 2.6.9
529 | path-to-regexp: 6.2.1
530 | ts-morph: 12.0.0
531 | ts-node: 10.9.1(@types/node@16.18.11)(typescript@4.9.5)
532 | typescript: 4.9.5
533 | undici: 5.26.5
534 | transitivePeerDependencies:
535 | - '@swc/core'
536 | - '@swc/wasm'
537 | - encoding
538 | - supports-color
539 | dev: true
540 |
541 | /@vercel/python@4.2.0:
542 | resolution: {integrity: sha512-oubkmRRxWQJGGYFq5Q49/2c94aHKCYXB+DkdtaW55syQ9N0LVBXCnCMZ4ZatSrSI18d9mMoDSx3xi4gtByy9NA==}
543 | dev: true
544 |
545 | /@vercel/redwood@2.0.9:
546 | resolution: {integrity: sha512-zv0uJa+XtCJ15TdfCI5ybZM1hS3OBl28idCfN3vtWR+g5HjDSW8acYOzRw2Xy7wM1f+Fje1/Nx2AdYjCM4TWTA==}
547 | dependencies:
548 | '@vercel/nft': 0.27.0
549 | '@vercel/routing-utils': 3.1.0
550 | semver: 6.3.1
551 | transitivePeerDependencies:
552 | - encoding
553 | - supports-color
554 | dev: true
555 |
556 | /@vercel/remix-builder@2.1.6:
557 | resolution: {integrity: sha512-n2gnNW9HTWlTuEwTbtVI9GRHoQi/2kPu44l0zvFDw8GlsswW0/qJPvr8SFG83FDylQcafvW8LUWO9oXefuVrFA==}
558 | dependencies:
559 | '@vercel/error-utils': 2.0.2
560 | '@vercel/nft': 0.27.0
561 | '@vercel/static-config': 3.0.0
562 | ts-morph: 12.0.0
563 | transitivePeerDependencies:
564 | - encoding
565 | - supports-color
566 | dev: true
567 |
568 | /@vercel/routing-utils@3.1.0:
569 | resolution: {integrity: sha512-Ci5xTjVTJY/JLZXpCXpLehMft97i9fH34nu9PGav6DtwkVUF6TOPX86U0W0niQjMZ5n6/ZP0BwcJK2LOozKaGw==}
570 | dependencies:
571 | path-to-regexp: 6.1.0
572 | optionalDependencies:
573 | ajv: 6.12.6
574 | dev: true
575 |
576 | /@vercel/ruby@2.1.0:
577 | resolution: {integrity: sha512-UZYwlSEEfVnfzTmgkD+kxex9/gkZGt7unOWNyWFN7V/ZnZSsGBUgv6hXLnwejdRi3EztgRQEBd1kUKlXdIeC0Q==}
578 | dev: true
579 |
580 | /@vercel/static-build@2.5.9:
581 | resolution: {integrity: sha512-jnFwCvRlBsSg8vDPahuSOvo3LvmTCzlNi6ES3fy+kaXxUK/xxDA8BGssDvWRLJIGSHNjfi6M92zGy15vjpG92A==}
582 | dependencies:
583 | '@vercel/gatsby-plugin-vercel-analytics': 1.0.11
584 | '@vercel/gatsby-plugin-vercel-builder': 2.0.31
585 | '@vercel/static-config': 3.0.0
586 | ts-morph: 12.0.0
587 | dev: true
588 |
589 | /@vercel/static-config@3.0.0:
590 | resolution: {integrity: sha512-2qtvcBJ1bGY0dYGYh3iM7yGKkk971FujLEDXzuW5wcZsPr1GSEjO/w2iSr3qve6nDDtBImsGoDEnus5FI4+fIw==}
591 | dependencies:
592 | ajv: 8.6.3
593 | json-schema-to-ts: 1.6.4
594 | ts-morph: 12.0.0
595 | dev: true
596 |
597 | /abbrev@1.1.1:
598 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
599 | dev: true
600 |
601 | /acorn-import-attributes@1.9.5(acorn@8.11.3):
602 | resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
603 | peerDependencies:
604 | acorn: ^8
605 | dependencies:
606 | acorn: 8.11.3
607 | dev: true
608 |
609 | /acorn-jsx@5.3.2(acorn@8.11.3):
610 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
611 | peerDependencies:
612 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
613 | dependencies:
614 | acorn: 8.11.3
615 | dev: true
616 |
617 | /acorn-walk@8.3.2:
618 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
619 | engines: {node: '>=0.4.0'}
620 | dev: true
621 |
622 | /acorn@8.11.3:
623 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
624 | engines: {node: '>=0.4.0'}
625 | hasBin: true
626 | dev: true
627 |
628 | /agent-base@6.0.2:
629 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
630 | engines: {node: '>= 6.0.0'}
631 | dependencies:
632 | debug: 4.3.4
633 | transitivePeerDependencies:
634 | - supports-color
635 | dev: true
636 |
637 | /ajv@6.12.6:
638 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
639 | dependencies:
640 | fast-deep-equal: 3.1.3
641 | fast-json-stable-stringify: 2.1.0
642 | json-schema-traverse: 0.4.1
643 | uri-js: 4.4.1
644 | dev: true
645 |
646 | /ajv@8.6.3:
647 | resolution: {integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==}
648 | dependencies:
649 | fast-deep-equal: 3.1.3
650 | json-schema-traverse: 1.0.0
651 | require-from-string: 2.0.2
652 | uri-js: 4.4.1
653 | dev: true
654 |
655 | /ansi-escapes@6.2.1:
656 | resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==}
657 | engines: {node: '>=14.16'}
658 | dev: true
659 |
660 | /ansi-regex@5.0.1:
661 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
662 | engines: {node: '>=8'}
663 | dev: true
664 |
665 | /ansi-regex@6.0.1:
666 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
667 | engines: {node: '>=12'}
668 | dev: true
669 |
670 | /ansi-styles@4.3.0:
671 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
672 | engines: {node: '>=8'}
673 | dependencies:
674 | color-convert: 2.0.1
675 | dev: true
676 |
677 | /ansi-styles@6.2.1:
678 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
679 | engines: {node: '>=12'}
680 | dev: true
681 |
682 | /any-promise@1.3.0:
683 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
684 | dev: true
685 |
686 | /anymatch@3.1.3:
687 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
688 | engines: {node: '>= 8'}
689 | dependencies:
690 | normalize-path: 3.0.0
691 | picomatch: 2.3.1
692 | dev: true
693 |
694 | /aproba@2.0.0:
695 | resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
696 | dev: true
697 |
698 | /are-we-there-yet@2.0.0:
699 | resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
700 | engines: {node: '>=10'}
701 | dependencies:
702 | delegates: 1.0.0
703 | readable-stream: 3.6.2
704 | dev: true
705 |
706 | /arg@4.1.0:
707 | resolution: {integrity: sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==}
708 | dev: true
709 |
710 | /arg@4.1.3:
711 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
712 | dev: true
713 |
714 | /argparse@2.0.1:
715 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
716 | dev: true
717 |
718 | /array-union@2.1.0:
719 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
720 | engines: {node: '>=8'}
721 | dev: true
722 |
723 | /async-listen@1.2.0:
724 | resolution: {integrity: sha512-CcEtRh/oc9Jc4uWeUwdpG/+Mb2YUHKmdaTf0gUr7Wa+bfp4xx70HOb3RuSTJMvqKNB1TkdTfjLdrcz2X4rkkZA==}
725 | dev: true
726 |
727 | /async-listen@3.0.0:
728 | resolution: {integrity: sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==}
729 | engines: {node: '>= 14'}
730 | dev: true
731 |
732 | /async-listen@3.0.1:
733 | resolution: {integrity: sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==}
734 | engines: {node: '>= 14'}
735 | dev: true
736 |
737 | /async-sema@3.1.1:
738 | resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
739 | dev: true
740 |
741 | /asynckit@0.4.0:
742 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
743 | dev: false
744 |
745 | /axios@1.6.8:
746 | resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==}
747 | dependencies:
748 | follow-redirects: 1.15.6
749 | form-data: 4.0.0
750 | proxy-from-env: 1.1.0
751 | transitivePeerDependencies:
752 | - debug
753 | dev: false
754 |
755 | /balanced-match@1.0.2:
756 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
757 | dev: true
758 |
759 | /binary-extensions@2.3.0:
760 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
761 | engines: {node: '>=8'}
762 | dev: true
763 |
764 | /bindings@1.5.0:
765 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
766 | dependencies:
767 | file-uri-to-path: 1.0.0
768 | dev: true
769 |
770 | /brace-expansion@1.1.11:
771 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
772 | dependencies:
773 | balanced-match: 1.0.2
774 | concat-map: 0.0.1
775 | dev: true
776 |
777 | /brace-expansion@2.0.1:
778 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
779 | dependencies:
780 | balanced-match: 1.0.2
781 | dev: true
782 |
783 | /braces@3.0.2:
784 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
785 | engines: {node: '>=8'}
786 | dependencies:
787 | fill-range: 7.0.1
788 | dev: true
789 |
790 | /buffer-crc32@0.2.13:
791 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
792 | dev: true
793 |
794 | /bytes@3.1.0:
795 | resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==}
796 | engines: {node: '>= 0.8'}
797 | dev: true
798 |
799 | /callsites@3.1.0:
800 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
801 | engines: {node: '>=6'}
802 | dev: true
803 |
804 | /chalk@4.1.2:
805 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
806 | engines: {node: '>=10'}
807 | dependencies:
808 | ansi-styles: 4.3.0
809 | supports-color: 7.2.0
810 | dev: true
811 |
812 | /chalk@5.3.0:
813 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
814 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
815 | dev: true
816 |
817 | /chokidar@3.3.1:
818 | resolution: {integrity: sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==}
819 | engines: {node: '>= 8.10.0'}
820 | dependencies:
821 | anymatch: 3.1.3
822 | braces: 3.0.2
823 | glob-parent: 5.1.2
824 | is-binary-path: 2.1.0
825 | is-glob: 4.0.3
826 | normalize-path: 3.0.0
827 | readdirp: 3.3.0
828 | optionalDependencies:
829 | fsevents: 2.1.3
830 | dev: true
831 |
832 | /chownr@1.1.4:
833 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
834 | dev: true
835 |
836 | /chownr@2.0.0:
837 | resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
838 | engines: {node: '>=10'}
839 | dev: true
840 |
841 | /cjs-module-lexer@1.2.3:
842 | resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==}
843 | dev: true
844 |
845 | /cli-cursor@4.0.0:
846 | resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
847 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
848 | dependencies:
849 | restore-cursor: 4.0.0
850 | dev: true
851 |
852 | /cli-truncate@4.0.0:
853 | resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==}
854 | engines: {node: '>=18'}
855 | dependencies:
856 | slice-ansi: 5.0.0
857 | string-width: 7.1.0
858 | dev: true
859 |
860 | /code-block-writer@10.1.1:
861 | resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==}
862 | dev: true
863 |
864 | /color-convert@2.0.1:
865 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
866 | engines: {node: '>=7.0.0'}
867 | dependencies:
868 | color-name: 1.1.4
869 | dev: true
870 |
871 | /color-name@1.1.4:
872 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
873 | dev: true
874 |
875 | /color-support@1.1.3:
876 | resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
877 | hasBin: true
878 | dev: true
879 |
880 | /colorette@2.0.20:
881 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
882 | dev: true
883 |
884 | /combined-stream@1.0.8:
885 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
886 | engines: {node: '>= 0.8'}
887 | dependencies:
888 | delayed-stream: 1.0.0
889 | dev: false
890 |
891 | /commander@11.1.0:
892 | resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
893 | engines: {node: '>=16'}
894 | dev: true
895 |
896 | /concat-map@0.0.1:
897 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
898 | dev: true
899 |
900 | /console-control-strings@1.1.0:
901 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
902 | dev: true
903 |
904 | /content-type@1.0.4:
905 | resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==}
906 | engines: {node: '>= 0.6'}
907 | dev: true
908 |
909 | /convert-hrtime@3.0.0:
910 | resolution: {integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==}
911 | engines: {node: '>=8'}
912 | dev: true
913 |
914 | /create-require@1.1.1:
915 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
916 | dev: true
917 |
918 | /cross-spawn@7.0.3:
919 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
920 | engines: {node: '>= 8'}
921 | dependencies:
922 | path-key: 3.1.1
923 | shebang-command: 2.0.0
924 | which: 2.0.2
925 | dev: true
926 |
927 | /debug@4.1.1:
928 | resolution: {integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==}
929 | deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
930 | peerDependencies:
931 | supports-color: '*'
932 | peerDependenciesMeta:
933 | supports-color:
934 | optional: true
935 | dependencies:
936 | ms: 2.1.2
937 | dev: true
938 |
939 | /debug@4.3.4:
940 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
941 | engines: {node: '>=6.0'}
942 | peerDependencies:
943 | supports-color: '*'
944 | peerDependenciesMeta:
945 | supports-color:
946 | optional: true
947 | dependencies:
948 | ms: 2.1.2
949 | dev: true
950 |
951 | /deep-is@0.1.4:
952 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
953 | dev: true
954 |
955 | /delayed-stream@1.0.0:
956 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
957 | engines: {node: '>=0.4.0'}
958 | dev: false
959 |
960 | /delegates@1.0.0:
961 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
962 | dev: true
963 |
964 | /depd@1.1.2:
965 | resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
966 | engines: {node: '>= 0.6'}
967 | dev: true
968 |
969 | /detect-libc@2.0.3:
970 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
971 | engines: {node: '>=8'}
972 | dev: true
973 |
974 | /diff@4.0.2:
975 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
976 | engines: {node: '>=0.3.1'}
977 | dev: true
978 |
979 | /dir-glob@3.0.1:
980 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
981 | engines: {node: '>=8'}
982 | dependencies:
983 | path-type: 4.0.0
984 | dev: true
985 |
986 | /doctrine@3.0.0:
987 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
988 | engines: {node: '>=6.0.0'}
989 | dependencies:
990 | esutils: 2.0.3
991 | dev: true
992 |
993 | /edge-runtime@2.5.9:
994 | resolution: {integrity: sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==}
995 | engines: {node: '>=16'}
996 | hasBin: true
997 | dependencies:
998 | '@edge-runtime/format': 2.2.1
999 | '@edge-runtime/ponyfill': 2.4.2
1000 | '@edge-runtime/vm': 3.2.0
1001 | async-listen: 3.0.1
1002 | mri: 1.2.0
1003 | picocolors: 1.0.0
1004 | pretty-ms: 7.0.1
1005 | signal-exit: 4.0.2
1006 | time-span: 4.0.0
1007 | dev: true
1008 |
1009 | /emoji-regex@10.3.0:
1010 | resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
1011 | dev: true
1012 |
1013 | /emoji-regex@8.0.0:
1014 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1015 | dev: true
1016 |
1017 | /end-of-stream@1.1.0:
1018 | resolution: {integrity: sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==}
1019 | dependencies:
1020 | once: 1.3.3
1021 | dev: true
1022 |
1023 | /end-of-stream@1.4.4:
1024 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
1025 | dependencies:
1026 | once: 1.4.0
1027 | dev: true
1028 |
1029 | /es-module-lexer@1.4.1:
1030 | resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==}
1031 | dev: true
1032 |
1033 | /esbuild-android-64@0.14.47:
1034 | resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==}
1035 | engines: {node: '>=12'}
1036 | cpu: [x64]
1037 | os: [android]
1038 | requiresBuild: true
1039 | dev: true
1040 | optional: true
1041 |
1042 | /esbuild-android-arm64@0.14.47:
1043 | resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==}
1044 | engines: {node: '>=12'}
1045 | cpu: [arm64]
1046 | os: [android]
1047 | requiresBuild: true
1048 | dev: true
1049 | optional: true
1050 |
1051 | /esbuild-darwin-64@0.14.47:
1052 | resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==}
1053 | engines: {node: '>=12'}
1054 | cpu: [x64]
1055 | os: [darwin]
1056 | requiresBuild: true
1057 | dev: true
1058 | optional: true
1059 |
1060 | /esbuild-darwin-arm64@0.14.47:
1061 | resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==}
1062 | engines: {node: '>=12'}
1063 | cpu: [arm64]
1064 | os: [darwin]
1065 | requiresBuild: true
1066 | dev: true
1067 | optional: true
1068 |
1069 | /esbuild-freebsd-64@0.14.47:
1070 | resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==}
1071 | engines: {node: '>=12'}
1072 | cpu: [x64]
1073 | os: [freebsd]
1074 | requiresBuild: true
1075 | dev: true
1076 | optional: true
1077 |
1078 | /esbuild-freebsd-arm64@0.14.47:
1079 | resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==}
1080 | engines: {node: '>=12'}
1081 | cpu: [arm64]
1082 | os: [freebsd]
1083 | requiresBuild: true
1084 | dev: true
1085 | optional: true
1086 |
1087 | /esbuild-linux-32@0.14.47:
1088 | resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==}
1089 | engines: {node: '>=12'}
1090 | cpu: [ia32]
1091 | os: [linux]
1092 | requiresBuild: true
1093 | dev: true
1094 | optional: true
1095 |
1096 | /esbuild-linux-64@0.14.47:
1097 | resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==}
1098 | engines: {node: '>=12'}
1099 | cpu: [x64]
1100 | os: [linux]
1101 | requiresBuild: true
1102 | dev: true
1103 | optional: true
1104 |
1105 | /esbuild-linux-arm64@0.14.47:
1106 | resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==}
1107 | engines: {node: '>=12'}
1108 | cpu: [arm64]
1109 | os: [linux]
1110 | requiresBuild: true
1111 | dev: true
1112 | optional: true
1113 |
1114 | /esbuild-linux-arm@0.14.47:
1115 | resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==}
1116 | engines: {node: '>=12'}
1117 | cpu: [arm]
1118 | os: [linux]
1119 | requiresBuild: true
1120 | dev: true
1121 | optional: true
1122 |
1123 | /esbuild-linux-mips64le@0.14.47:
1124 | resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==}
1125 | engines: {node: '>=12'}
1126 | cpu: [mips64el]
1127 | os: [linux]
1128 | requiresBuild: true
1129 | dev: true
1130 | optional: true
1131 |
1132 | /esbuild-linux-ppc64le@0.14.47:
1133 | resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==}
1134 | engines: {node: '>=12'}
1135 | cpu: [ppc64]
1136 | os: [linux]
1137 | requiresBuild: true
1138 | dev: true
1139 | optional: true
1140 |
1141 | /esbuild-linux-riscv64@0.14.47:
1142 | resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==}
1143 | engines: {node: '>=12'}
1144 | cpu: [riscv64]
1145 | os: [linux]
1146 | requiresBuild: true
1147 | dev: true
1148 | optional: true
1149 |
1150 | /esbuild-linux-s390x@0.14.47:
1151 | resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==}
1152 | engines: {node: '>=12'}
1153 | cpu: [s390x]
1154 | os: [linux]
1155 | requiresBuild: true
1156 | dev: true
1157 | optional: true
1158 |
1159 | /esbuild-netbsd-64@0.14.47:
1160 | resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==}
1161 | engines: {node: '>=12'}
1162 | cpu: [x64]
1163 | os: [netbsd]
1164 | requiresBuild: true
1165 | dev: true
1166 | optional: true
1167 |
1168 | /esbuild-openbsd-64@0.14.47:
1169 | resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==}
1170 | engines: {node: '>=12'}
1171 | cpu: [x64]
1172 | os: [openbsd]
1173 | requiresBuild: true
1174 | dev: true
1175 | optional: true
1176 |
1177 | /esbuild-sunos-64@0.14.47:
1178 | resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==}
1179 | engines: {node: '>=12'}
1180 | cpu: [x64]
1181 | os: [sunos]
1182 | requiresBuild: true
1183 | dev: true
1184 | optional: true
1185 |
1186 | /esbuild-windows-32@0.14.47:
1187 | resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==}
1188 | engines: {node: '>=12'}
1189 | cpu: [ia32]
1190 | os: [win32]
1191 | requiresBuild: true
1192 | dev: true
1193 | optional: true
1194 |
1195 | /esbuild-windows-64@0.14.47:
1196 | resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==}
1197 | engines: {node: '>=12'}
1198 | cpu: [x64]
1199 | os: [win32]
1200 | requiresBuild: true
1201 | dev: true
1202 | optional: true
1203 |
1204 | /esbuild-windows-arm64@0.14.47:
1205 | resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==}
1206 | engines: {node: '>=12'}
1207 | cpu: [arm64]
1208 | os: [win32]
1209 | requiresBuild: true
1210 | dev: true
1211 | optional: true
1212 |
1213 | /esbuild@0.14.47:
1214 | resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==}
1215 | engines: {node: '>=12'}
1216 | hasBin: true
1217 | requiresBuild: true
1218 | optionalDependencies:
1219 | esbuild-android-64: 0.14.47
1220 | esbuild-android-arm64: 0.14.47
1221 | esbuild-darwin-64: 0.14.47
1222 | esbuild-darwin-arm64: 0.14.47
1223 | esbuild-freebsd-64: 0.14.47
1224 | esbuild-freebsd-arm64: 0.14.47
1225 | esbuild-linux-32: 0.14.47
1226 | esbuild-linux-64: 0.14.47
1227 | esbuild-linux-arm: 0.14.47
1228 | esbuild-linux-arm64: 0.14.47
1229 | esbuild-linux-mips64le: 0.14.47
1230 | esbuild-linux-ppc64le: 0.14.47
1231 | esbuild-linux-riscv64: 0.14.47
1232 | esbuild-linux-s390x: 0.14.47
1233 | esbuild-netbsd-64: 0.14.47
1234 | esbuild-openbsd-64: 0.14.47
1235 | esbuild-sunos-64: 0.14.47
1236 | esbuild-windows-32: 0.14.47
1237 | esbuild-windows-64: 0.14.47
1238 | esbuild-windows-arm64: 0.14.47
1239 | dev: true
1240 |
1241 | /escape-string-regexp@4.0.0:
1242 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1243 | engines: {node: '>=10'}
1244 | dev: true
1245 |
1246 | /eslint-config-prettier@9.1.0(eslint@8.57.0):
1247 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
1248 | hasBin: true
1249 | peerDependencies:
1250 | eslint: '>=7.0.0'
1251 | dependencies:
1252 | eslint: 8.57.0
1253 | dev: true
1254 |
1255 | /eslint-define-config@2.1.0:
1256 | resolution: {integrity: sha512-QUp6pM9pjKEVannNAbSJNeRuYwW3LshejfyBBpjeMGaJjaDUpVps4C6KVR8R7dWZnD3i0synmrE36znjTkJvdQ==}
1257 | engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'}
1258 | dev: true
1259 |
1260 | /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5):
1261 | resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==}
1262 | engines: {node: ^14.18.0 || >=16.0.0}
1263 | peerDependencies:
1264 | '@types/eslint': '>=8.0.0'
1265 | eslint: '>=8.0.0'
1266 | eslint-config-prettier: '*'
1267 | prettier: '>=3.0.0'
1268 | peerDependenciesMeta:
1269 | '@types/eslint':
1270 | optional: true
1271 | eslint-config-prettier:
1272 | optional: true
1273 | dependencies:
1274 | eslint: 8.57.0
1275 | eslint-config-prettier: 9.1.0(eslint@8.57.0)
1276 | prettier: 3.2.5
1277 | prettier-linter-helpers: 1.0.0
1278 | synckit: 0.8.8
1279 | dev: true
1280 |
1281 | /eslint-scope@7.2.2:
1282 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1283 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1284 | dependencies:
1285 | esrecurse: 4.3.0
1286 | estraverse: 5.3.0
1287 | dev: true
1288 |
1289 | /eslint-visitor-keys@3.4.3:
1290 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
1291 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1292 | dev: true
1293 |
1294 | /eslint@8.57.0:
1295 | resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
1296 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1297 | hasBin: true
1298 | dependencies:
1299 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
1300 | '@eslint-community/regexpp': 4.10.0
1301 | '@eslint/eslintrc': 2.1.4
1302 | '@eslint/js': 8.57.0
1303 | '@humanwhocodes/config-array': 0.11.14
1304 | '@humanwhocodes/module-importer': 1.0.1
1305 | '@nodelib/fs.walk': 1.2.8
1306 | '@ungap/structured-clone': 1.2.0
1307 | ajv: 6.12.6
1308 | chalk: 4.1.2
1309 | cross-spawn: 7.0.3
1310 | debug: 4.3.4
1311 | doctrine: 3.0.0
1312 | escape-string-regexp: 4.0.0
1313 | eslint-scope: 7.2.2
1314 | eslint-visitor-keys: 3.4.3
1315 | espree: 9.6.1
1316 | esquery: 1.5.0
1317 | esutils: 2.0.3
1318 | fast-deep-equal: 3.1.3
1319 | file-entry-cache: 6.0.1
1320 | find-up: 5.0.0
1321 | glob-parent: 6.0.2
1322 | globals: 13.24.0
1323 | graphemer: 1.4.0
1324 | ignore: 5.3.1
1325 | imurmurhash: 0.1.4
1326 | is-glob: 4.0.3
1327 | is-path-inside: 3.0.3
1328 | js-yaml: 4.1.0
1329 | json-stable-stringify-without-jsonify: 1.0.1
1330 | levn: 0.4.1
1331 | lodash.merge: 4.6.2
1332 | minimatch: 3.1.2
1333 | natural-compare: 1.4.0
1334 | optionator: 0.9.3
1335 | strip-ansi: 6.0.1
1336 | text-table: 0.2.0
1337 | transitivePeerDependencies:
1338 | - supports-color
1339 | dev: true
1340 |
1341 | /espree@9.6.1:
1342 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1343 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1344 | dependencies:
1345 | acorn: 8.11.3
1346 | acorn-jsx: 5.3.2(acorn@8.11.3)
1347 | eslint-visitor-keys: 3.4.3
1348 | dev: true
1349 |
1350 | /esquery@1.5.0:
1351 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1352 | engines: {node: '>=0.10'}
1353 | dependencies:
1354 | estraverse: 5.3.0
1355 | dev: true
1356 |
1357 | /esrecurse@4.3.0:
1358 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1359 | engines: {node: '>=4.0'}
1360 | dependencies:
1361 | estraverse: 5.3.0
1362 | dev: true
1363 |
1364 | /estraverse@5.3.0:
1365 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1366 | engines: {node: '>=4.0'}
1367 | dev: true
1368 |
1369 | /estree-walker@2.0.2:
1370 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1371 | dev: true
1372 |
1373 | /esutils@2.0.3:
1374 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1375 | engines: {node: '>=0.10.0'}
1376 | dev: true
1377 |
1378 | /etag@1.8.1:
1379 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
1380 | engines: {node: '>= 0.6'}
1381 | dev: true
1382 |
1383 | /eventemitter3@5.0.1:
1384 | resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
1385 | dev: true
1386 |
1387 | /events-intercept@2.0.0:
1388 | resolution: {integrity: sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==}
1389 | dev: true
1390 |
1391 | /execa@3.2.0:
1392 | resolution: {integrity: sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw==}
1393 | engines: {node: ^8.12.0 || >=9.7.0}
1394 | dependencies:
1395 | cross-spawn: 7.0.3
1396 | get-stream: 5.2.0
1397 | human-signals: 1.1.1
1398 | is-stream: 2.0.1
1399 | merge-stream: 2.0.0
1400 | npm-run-path: 4.0.1
1401 | onetime: 5.1.2
1402 | p-finally: 2.0.1
1403 | signal-exit: 3.0.7
1404 | strip-final-newline: 2.0.0
1405 | dev: true
1406 |
1407 | /execa@8.0.1:
1408 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
1409 | engines: {node: '>=16.17'}
1410 | dependencies:
1411 | cross-spawn: 7.0.3
1412 | get-stream: 8.0.1
1413 | human-signals: 5.0.0
1414 | is-stream: 3.0.0
1415 | merge-stream: 2.0.0
1416 | npm-run-path: 5.3.0
1417 | onetime: 6.0.0
1418 | signal-exit: 4.1.0
1419 | strip-final-newline: 3.0.0
1420 | dev: true
1421 |
1422 | /fast-deep-equal@3.1.3:
1423 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1424 | dev: true
1425 |
1426 | /fast-diff@1.3.0:
1427 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
1428 | dev: true
1429 |
1430 | /fast-glob@3.3.2:
1431 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
1432 | engines: {node: '>=8.6.0'}
1433 | dependencies:
1434 | '@nodelib/fs.stat': 2.0.5
1435 | '@nodelib/fs.walk': 1.2.8
1436 | glob-parent: 5.1.2
1437 | merge2: 1.4.1
1438 | micromatch: 4.0.5
1439 | dev: true
1440 |
1441 | /fast-json-stable-stringify@2.1.0:
1442 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1443 | dev: true
1444 |
1445 | /fast-levenshtein@2.0.6:
1446 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1447 | dev: true
1448 |
1449 | /fastq@1.17.1:
1450 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
1451 | dependencies:
1452 | reusify: 1.0.4
1453 | dev: true
1454 |
1455 | /fd-slicer@1.1.0:
1456 | resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
1457 | dependencies:
1458 | pend: 1.2.0
1459 | dev: true
1460 |
1461 | /file-entry-cache@6.0.1:
1462 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1463 | engines: {node: ^10.12.0 || >=12.0.0}
1464 | dependencies:
1465 | flat-cache: 3.2.0
1466 | dev: true
1467 |
1468 | /file-uri-to-path@1.0.0:
1469 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
1470 | dev: true
1471 |
1472 | /fill-range@7.0.1:
1473 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1474 | engines: {node: '>=8'}
1475 | dependencies:
1476 | to-regex-range: 5.0.1
1477 | dev: true
1478 |
1479 | /find-up@5.0.0:
1480 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1481 | engines: {node: '>=10'}
1482 | dependencies:
1483 | locate-path: 6.0.0
1484 | path-exists: 4.0.0
1485 | dev: true
1486 |
1487 | /flat-cache@3.2.0:
1488 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
1489 | engines: {node: ^10.12.0 || >=12.0.0}
1490 | dependencies:
1491 | flatted: 3.3.1
1492 | keyv: 4.5.4
1493 | rimraf: 3.0.2
1494 | dev: true
1495 |
1496 | /flatted@3.3.1:
1497 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
1498 | dev: true
1499 |
1500 | /follow-redirects@1.15.6:
1501 | resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
1502 | engines: {node: '>=4.0'}
1503 | peerDependencies:
1504 | debug: '*'
1505 | peerDependenciesMeta:
1506 | debug:
1507 | optional: true
1508 | dev: false
1509 |
1510 | /form-data@4.0.0:
1511 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
1512 | engines: {node: '>= 6'}
1513 | dependencies:
1514 | asynckit: 0.4.0
1515 | combined-stream: 1.0.8
1516 | mime-types: 2.1.35
1517 | dev: false
1518 |
1519 | /fs-extra@11.1.0:
1520 | resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==}
1521 | engines: {node: '>=14.14'}
1522 | dependencies:
1523 | graceful-fs: 4.2.11
1524 | jsonfile: 6.1.0
1525 | universalify: 2.0.1
1526 | dev: true
1527 |
1528 | /fs-extra@8.1.0:
1529 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
1530 | engines: {node: '>=6 <7 || >=8'}
1531 | dependencies:
1532 | graceful-fs: 4.2.11
1533 | jsonfile: 4.0.0
1534 | universalify: 0.1.2
1535 | dev: true
1536 |
1537 | /fs-minipass@1.2.7:
1538 | resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==}
1539 | dependencies:
1540 | minipass: 2.9.0
1541 | dev: true
1542 |
1543 | /fs-minipass@2.1.0:
1544 | resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
1545 | engines: {node: '>= 8'}
1546 | dependencies:
1547 | minipass: 3.3.6
1548 | dev: true
1549 |
1550 | /fs.realpath@1.0.0:
1551 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1552 | dev: true
1553 |
1554 | /fsevents@2.1.3:
1555 | resolution: {integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==}
1556 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1557 | os: [darwin]
1558 | deprecated: '"Please update to latest v2.3 or v2.2"'
1559 | requiresBuild: true
1560 | dev: true
1561 | optional: true
1562 |
1563 | /gauge@3.0.2:
1564 | resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
1565 | engines: {node: '>=10'}
1566 | dependencies:
1567 | aproba: 2.0.0
1568 | color-support: 1.1.3
1569 | console-control-strings: 1.1.0
1570 | has-unicode: 2.0.1
1571 | object-assign: 4.1.1
1572 | signal-exit: 3.0.7
1573 | string-width: 4.2.3
1574 | strip-ansi: 6.0.1
1575 | wide-align: 1.1.5
1576 | dev: true
1577 |
1578 | /generic-pool@3.4.2:
1579 | resolution: {integrity: sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag==}
1580 | engines: {node: '>= 4'}
1581 | dev: true
1582 |
1583 | /get-east-asian-width@1.2.0:
1584 | resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
1585 | engines: {node: '>=18'}
1586 | dev: true
1587 |
1588 | /get-stream@5.2.0:
1589 | resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
1590 | engines: {node: '>=8'}
1591 | dependencies:
1592 | pump: 3.0.0
1593 | dev: true
1594 |
1595 | /get-stream@8.0.1:
1596 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
1597 | engines: {node: '>=16'}
1598 | dev: true
1599 |
1600 | /glob-parent@5.1.2:
1601 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1602 | engines: {node: '>= 6'}
1603 | dependencies:
1604 | is-glob: 4.0.3
1605 | dev: true
1606 |
1607 | /glob-parent@6.0.2:
1608 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1609 | engines: {node: '>=10.13.0'}
1610 | dependencies:
1611 | is-glob: 4.0.3
1612 | dev: true
1613 |
1614 | /glob@7.2.3:
1615 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1616 | dependencies:
1617 | fs.realpath: 1.0.0
1618 | inflight: 1.0.6
1619 | inherits: 2.0.4
1620 | minimatch: 3.1.2
1621 | once: 1.4.0
1622 | path-is-absolute: 1.0.1
1623 | dev: true
1624 |
1625 | /globals@13.24.0:
1626 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
1627 | engines: {node: '>=8'}
1628 | dependencies:
1629 | type-fest: 0.20.2
1630 | dev: true
1631 |
1632 | /globby@11.1.0:
1633 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1634 | engines: {node: '>=10'}
1635 | dependencies:
1636 | array-union: 2.1.0
1637 | dir-glob: 3.0.1
1638 | fast-glob: 3.3.2
1639 | ignore: 5.3.1
1640 | merge2: 1.4.1
1641 | slash: 3.0.0
1642 | dev: true
1643 |
1644 | /graceful-fs@4.2.11:
1645 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1646 | dev: true
1647 |
1648 | /graphemer@1.4.0:
1649 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1650 | dev: true
1651 |
1652 | /has-flag@4.0.0:
1653 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1654 | engines: {node: '>=8'}
1655 | dev: true
1656 |
1657 | /has-unicode@2.0.1:
1658 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
1659 | dev: true
1660 |
1661 | /http-errors@1.4.0:
1662 | resolution: {integrity: sha512-oLjPqve1tuOl5aRhv8GK5eHpqP1C9fb+Ol+XTLjKfLltE44zdDbEdjPSbU7Ch5rSNsVFqZn97SrMmZLdu1/YMw==}
1663 | engines: {node: '>= 0.6'}
1664 | dependencies:
1665 | inherits: 2.0.1
1666 | statuses: 1.5.0
1667 | dev: true
1668 |
1669 | /http-errors@1.7.3:
1670 | resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==}
1671 | engines: {node: '>= 0.6'}
1672 | dependencies:
1673 | depd: 1.1.2
1674 | inherits: 2.0.4
1675 | setprototypeof: 1.1.1
1676 | statuses: 1.5.0
1677 | toidentifier: 1.0.0
1678 | dev: true
1679 |
1680 | /https-proxy-agent@5.0.1:
1681 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
1682 | engines: {node: '>= 6'}
1683 | dependencies:
1684 | agent-base: 6.0.2
1685 | debug: 4.3.4
1686 | transitivePeerDependencies:
1687 | - supports-color
1688 | dev: true
1689 |
1690 | /human-signals@1.1.1:
1691 | resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==}
1692 | engines: {node: '>=8.12.0'}
1693 | dev: true
1694 |
1695 | /human-signals@5.0.0:
1696 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
1697 | engines: {node: '>=16.17.0'}
1698 | dev: true
1699 |
1700 | /husky@9.0.11:
1701 | resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==}
1702 | engines: {node: '>=18'}
1703 | hasBin: true
1704 | dev: true
1705 |
1706 | /iconv-lite@0.4.24:
1707 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
1708 | engines: {node: '>=0.10.0'}
1709 | dependencies:
1710 | safer-buffer: 2.1.2
1711 | dev: true
1712 |
1713 | /ignore@5.3.1:
1714 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
1715 | engines: {node: '>= 4'}
1716 | dev: true
1717 |
1718 | /import-fresh@3.3.0:
1719 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1720 | engines: {node: '>=6'}
1721 | dependencies:
1722 | parent-module: 1.0.1
1723 | resolve-from: 4.0.0
1724 | dev: true
1725 |
1726 | /imurmurhash@0.1.4:
1727 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1728 | engines: {node: '>=0.8.19'}
1729 | dev: true
1730 |
1731 | /inflight@1.0.6:
1732 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1733 | dependencies:
1734 | once: 1.4.0
1735 | wrappy: 1.0.2
1736 | dev: true
1737 |
1738 | /inherits@2.0.1:
1739 | resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==}
1740 | dev: true
1741 |
1742 | /inherits@2.0.4:
1743 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1744 | dev: true
1745 |
1746 | /is-binary-path@2.1.0:
1747 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1748 | engines: {node: '>=8'}
1749 | dependencies:
1750 | binary-extensions: 2.3.0
1751 | dev: true
1752 |
1753 | /is-extglob@2.1.1:
1754 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1755 | engines: {node: '>=0.10.0'}
1756 | dev: true
1757 |
1758 | /is-fullwidth-code-point@3.0.0:
1759 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1760 | engines: {node: '>=8'}
1761 | dev: true
1762 |
1763 | /is-fullwidth-code-point@4.0.0:
1764 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
1765 | engines: {node: '>=12'}
1766 | dev: true
1767 |
1768 | /is-fullwidth-code-point@5.0.0:
1769 | resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
1770 | engines: {node: '>=18'}
1771 | dependencies:
1772 | get-east-asian-width: 1.2.0
1773 | dev: true
1774 |
1775 | /is-glob@4.0.3:
1776 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1777 | engines: {node: '>=0.10.0'}
1778 | dependencies:
1779 | is-extglob: 2.1.1
1780 | dev: true
1781 |
1782 | /is-number@7.0.0:
1783 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1784 | engines: {node: '>=0.12.0'}
1785 | dev: true
1786 |
1787 | /is-path-inside@3.0.3:
1788 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1789 | engines: {node: '>=8'}
1790 | dev: true
1791 |
1792 | /is-stream@2.0.1:
1793 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
1794 | engines: {node: '>=8'}
1795 | dev: true
1796 |
1797 | /is-stream@3.0.0:
1798 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1799 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1800 | dev: true
1801 |
1802 | /isarray@0.0.1:
1803 | resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
1804 | dev: true
1805 |
1806 | /isexe@2.0.0:
1807 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1808 | dev: true
1809 |
1810 | /js-yaml@4.1.0:
1811 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1812 | hasBin: true
1813 | dependencies:
1814 | argparse: 2.0.1
1815 | dev: true
1816 |
1817 | /json-buffer@3.0.1:
1818 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1819 | dev: true
1820 |
1821 | /json-schema-to-ts@1.6.4:
1822 | resolution: {integrity: sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==}
1823 | dependencies:
1824 | '@types/json-schema': 7.0.15
1825 | ts-toolbelt: 6.15.5
1826 | dev: true
1827 |
1828 | /json-schema-traverse@0.4.1:
1829 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1830 | dev: true
1831 |
1832 | /json-schema-traverse@1.0.0:
1833 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
1834 | dev: true
1835 |
1836 | /json-stable-stringify-without-jsonify@1.0.1:
1837 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1838 | dev: true
1839 |
1840 | /jsonfile@4.0.0:
1841 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
1842 | optionalDependencies:
1843 | graceful-fs: 4.2.11
1844 | dev: true
1845 |
1846 | /jsonfile@6.1.0:
1847 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
1848 | dependencies:
1849 | universalify: 2.0.1
1850 | optionalDependencies:
1851 | graceful-fs: 4.2.11
1852 | dev: true
1853 |
1854 | /keyv@4.5.4:
1855 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1856 | dependencies:
1857 | json-buffer: 3.0.1
1858 | dev: true
1859 |
1860 | /levn@0.4.1:
1861 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1862 | engines: {node: '>= 0.8.0'}
1863 | dependencies:
1864 | prelude-ls: 1.2.1
1865 | type-check: 0.4.0
1866 | dev: true
1867 |
1868 | /lilconfig@3.0.0:
1869 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==}
1870 | engines: {node: '>=14'}
1871 | dev: true
1872 |
1873 | /lint-staged@15.2.2:
1874 | resolution: {integrity: sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==}
1875 | engines: {node: '>=18.12.0'}
1876 | hasBin: true
1877 | dependencies:
1878 | chalk: 5.3.0
1879 | commander: 11.1.0
1880 | debug: 4.3.4
1881 | execa: 8.0.1
1882 | lilconfig: 3.0.0
1883 | listr2: 8.0.1
1884 | micromatch: 4.0.5
1885 | pidtree: 0.6.0
1886 | string-argv: 0.3.2
1887 | yaml: 2.3.4
1888 | transitivePeerDependencies:
1889 | - supports-color
1890 | dev: true
1891 |
1892 | /listr2@8.0.1:
1893 | resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==}
1894 | engines: {node: '>=18.0.0'}
1895 | dependencies:
1896 | cli-truncate: 4.0.0
1897 | colorette: 2.0.20
1898 | eventemitter3: 5.0.1
1899 | log-update: 6.0.0
1900 | rfdc: 1.3.1
1901 | wrap-ansi: 9.0.0
1902 | dev: true
1903 |
1904 | /locate-path@6.0.0:
1905 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1906 | engines: {node: '>=10'}
1907 | dependencies:
1908 | p-locate: 5.0.0
1909 | dev: true
1910 |
1911 | /lodash.merge@4.6.2:
1912 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1913 | dev: true
1914 |
1915 | /log-update@6.0.0:
1916 | resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==}
1917 | engines: {node: '>=18'}
1918 | dependencies:
1919 | ansi-escapes: 6.2.1
1920 | cli-cursor: 4.0.0
1921 | slice-ansi: 7.1.0
1922 | strip-ansi: 7.1.0
1923 | wrap-ansi: 9.0.0
1924 | dev: true
1925 |
1926 | /lru-cache@6.0.0:
1927 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1928 | engines: {node: '>=10'}
1929 | dependencies:
1930 | yallist: 4.0.0
1931 | dev: true
1932 |
1933 | /make-dir@3.1.0:
1934 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
1935 | engines: {node: '>=8'}
1936 | dependencies:
1937 | semver: 6.3.1
1938 | dev: true
1939 |
1940 | /make-error@1.3.6:
1941 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
1942 | dev: true
1943 |
1944 | /merge-stream@2.0.0:
1945 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1946 | dev: true
1947 |
1948 | /merge2@1.4.1:
1949 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1950 | engines: {node: '>= 8'}
1951 | dev: true
1952 |
1953 | /micro@9.3.5-canary.3:
1954 | resolution: {integrity: sha512-viYIo9PefV+w9dvoIBh1gI44Mvx1BOk67B4BpC2QK77qdY0xZF0Q+vWLt/BII6cLkIc8rLmSIcJaB/OrXXKe1g==}
1955 | engines: {node: '>= 8.0.0'}
1956 | hasBin: true
1957 | dependencies:
1958 | arg: 4.1.0
1959 | content-type: 1.0.4
1960 | raw-body: 2.4.1
1961 | dev: true
1962 |
1963 | /micromatch@4.0.5:
1964 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1965 | engines: {node: '>=8.6'}
1966 | dependencies:
1967 | braces: 3.0.2
1968 | picomatch: 2.3.1
1969 | dev: true
1970 |
1971 | /mime-db@1.52.0:
1972 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
1973 | engines: {node: '>= 0.6'}
1974 | dev: false
1975 |
1976 | /mime-types@2.1.35:
1977 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
1978 | engines: {node: '>= 0.6'}
1979 | dependencies:
1980 | mime-db: 1.52.0
1981 | dev: false
1982 |
1983 | /mimic-fn@2.1.0:
1984 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1985 | engines: {node: '>=6'}
1986 | dev: true
1987 |
1988 | /mimic-fn@4.0.0:
1989 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
1990 | engines: {node: '>=12'}
1991 | dev: true
1992 |
1993 | /minimatch@3.1.2:
1994 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1995 | dependencies:
1996 | brace-expansion: 1.1.11
1997 | dev: true
1998 |
1999 | /minimatch@9.0.4:
2000 | resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
2001 | engines: {node: '>=16 || 14 >=14.17'}
2002 | dependencies:
2003 | brace-expansion: 2.0.1
2004 | dev: true
2005 |
2006 | /minimist@1.2.8:
2007 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
2008 | dev: true
2009 |
2010 | /minipass@2.9.0:
2011 | resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==}
2012 | dependencies:
2013 | safe-buffer: 5.2.1
2014 | yallist: 3.1.1
2015 | dev: true
2016 |
2017 | /minipass@3.3.6:
2018 | resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
2019 | engines: {node: '>=8'}
2020 | dependencies:
2021 | yallist: 4.0.0
2022 | dev: true
2023 |
2024 | /minipass@5.0.0:
2025 | resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
2026 | engines: {node: '>=8'}
2027 | dev: true
2028 |
2029 | /minizlib@1.3.3:
2030 | resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==}
2031 | dependencies:
2032 | minipass: 2.9.0
2033 | dev: true
2034 |
2035 | /minizlib@2.1.2:
2036 | resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
2037 | engines: {node: '>= 8'}
2038 | dependencies:
2039 | minipass: 3.3.6
2040 | yallist: 4.0.0
2041 | dev: true
2042 |
2043 | /mkdirp@0.5.6:
2044 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
2045 | hasBin: true
2046 | dependencies:
2047 | minimist: 1.2.8
2048 | dev: true
2049 |
2050 | /mkdirp@1.0.4:
2051 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
2052 | engines: {node: '>=10'}
2053 | hasBin: true
2054 | dev: true
2055 |
2056 | /mri@1.2.0:
2057 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
2058 | engines: {node: '>=4'}
2059 | dev: true
2060 |
2061 | /ms@2.1.1:
2062 | resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==}
2063 | dev: true
2064 |
2065 | /ms@2.1.2:
2066 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
2067 | dev: true
2068 |
2069 | /natural-compare@1.4.0:
2070 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
2071 | dev: true
2072 |
2073 | /node-fetch@2.6.7:
2074 | resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
2075 | engines: {node: 4.x || >=6.0.0}
2076 | peerDependencies:
2077 | encoding: ^0.1.0
2078 | peerDependenciesMeta:
2079 | encoding:
2080 | optional: true
2081 | dependencies:
2082 | whatwg-url: 5.0.0
2083 | dev: true
2084 |
2085 | /node-fetch@2.6.9:
2086 | resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==}
2087 | engines: {node: 4.x || >=6.0.0}
2088 | peerDependencies:
2089 | encoding: ^0.1.0
2090 | peerDependenciesMeta:
2091 | encoding:
2092 | optional: true
2093 | dependencies:
2094 | whatwg-url: 5.0.0
2095 | dev: true
2096 |
2097 | /node-fetch@2.7.0:
2098 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
2099 | engines: {node: 4.x || >=6.0.0}
2100 | peerDependencies:
2101 | encoding: ^0.1.0
2102 | peerDependenciesMeta:
2103 | encoding:
2104 | optional: true
2105 | dependencies:
2106 | whatwg-url: 5.0.0
2107 | dev: true
2108 |
2109 | /node-gyp-build@4.8.0:
2110 | resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==}
2111 | hasBin: true
2112 | dev: true
2113 |
2114 | /nopt@5.0.0:
2115 | resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
2116 | engines: {node: '>=6'}
2117 | hasBin: true
2118 | dependencies:
2119 | abbrev: 1.1.1
2120 | dev: true
2121 |
2122 | /normalize-path@3.0.0:
2123 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
2124 | engines: {node: '>=0.10.0'}
2125 | dev: true
2126 |
2127 | /npm-run-path@4.0.1:
2128 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
2129 | engines: {node: '>=8'}
2130 | dependencies:
2131 | path-key: 3.1.1
2132 | dev: true
2133 |
2134 | /npm-run-path@5.3.0:
2135 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
2136 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2137 | dependencies:
2138 | path-key: 4.0.0
2139 | dev: true
2140 |
2141 | /npmlog@5.0.1:
2142 | resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
2143 | dependencies:
2144 | are-we-there-yet: 2.0.0
2145 | console-control-strings: 1.1.0
2146 | gauge: 3.0.2
2147 | set-blocking: 2.0.0
2148 | dev: true
2149 |
2150 | /object-assign@4.1.1:
2151 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
2152 | engines: {node: '>=0.10.0'}
2153 | dev: true
2154 |
2155 | /once@1.3.3:
2156 | resolution: {integrity: sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==}
2157 | dependencies:
2158 | wrappy: 1.0.2
2159 | dev: true
2160 |
2161 | /once@1.4.0:
2162 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
2163 | dependencies:
2164 | wrappy: 1.0.2
2165 | dev: true
2166 |
2167 | /onetime@5.1.2:
2168 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
2169 | engines: {node: '>=6'}
2170 | dependencies:
2171 | mimic-fn: 2.1.0
2172 | dev: true
2173 |
2174 | /onetime@6.0.0:
2175 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
2176 | engines: {node: '>=12'}
2177 | dependencies:
2178 | mimic-fn: 4.0.0
2179 | dev: true
2180 |
2181 | /optionator@0.9.3:
2182 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
2183 | engines: {node: '>= 0.8.0'}
2184 | dependencies:
2185 | '@aashutoshrathi/word-wrap': 1.2.6
2186 | deep-is: 0.1.4
2187 | fast-levenshtein: 2.0.6
2188 | levn: 0.4.1
2189 | prelude-ls: 1.2.1
2190 | type-check: 0.4.0
2191 | dev: true
2192 |
2193 | /os-paths@4.4.0:
2194 | resolution: {integrity: sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg==}
2195 | engines: {node: '>= 6.0'}
2196 | dev: true
2197 |
2198 | /p-finally@2.0.1:
2199 | resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==}
2200 | engines: {node: '>=8'}
2201 | dev: true
2202 |
2203 | /p-limit@3.1.0:
2204 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
2205 | engines: {node: '>=10'}
2206 | dependencies:
2207 | yocto-queue: 0.1.0
2208 | dev: true
2209 |
2210 | /p-locate@5.0.0:
2211 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
2212 | engines: {node: '>=10'}
2213 | dependencies:
2214 | p-limit: 3.1.0
2215 | dev: true
2216 |
2217 | /parent-module@1.0.1:
2218 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
2219 | engines: {node: '>=6'}
2220 | dependencies:
2221 | callsites: 3.1.0
2222 | dev: true
2223 |
2224 | /parse-ms@2.1.0:
2225 | resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==}
2226 | engines: {node: '>=6'}
2227 | dev: true
2228 |
2229 | /path-browserify@1.0.1:
2230 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
2231 | dev: true
2232 |
2233 | /path-exists@4.0.0:
2234 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
2235 | engines: {node: '>=8'}
2236 | dev: true
2237 |
2238 | /path-is-absolute@1.0.1:
2239 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
2240 | engines: {node: '>=0.10.0'}
2241 | dev: true
2242 |
2243 | /path-key@3.1.1:
2244 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2245 | engines: {node: '>=8'}
2246 | dev: true
2247 |
2248 | /path-key@4.0.0:
2249 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
2250 | engines: {node: '>=12'}
2251 | dev: true
2252 |
2253 | /path-match@1.2.4:
2254 | resolution: {integrity: sha512-UWlehEdqu36jmh4h5CWJ7tARp1OEVKGHKm6+dg9qMq5RKUTV5WJrGgaZ3dN2m7WFAXDbjlHzvJvL/IUpy84Ktw==}
2255 | dependencies:
2256 | http-errors: 1.4.0
2257 | path-to-regexp: 1.8.0
2258 | dev: true
2259 |
2260 | /path-to-regexp@1.8.0:
2261 | resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==}
2262 | dependencies:
2263 | isarray: 0.0.1
2264 | dev: true
2265 |
2266 | /path-to-regexp@6.1.0:
2267 | resolution: {integrity: sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==}
2268 | dev: true
2269 |
2270 | /path-to-regexp@6.2.1:
2271 | resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
2272 | dev: true
2273 |
2274 | /path-type@4.0.0:
2275 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
2276 | engines: {node: '>=8'}
2277 | dev: true
2278 |
2279 | /pend@1.2.0:
2280 | resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
2281 | dev: true
2282 |
2283 | /picocolors@1.0.0:
2284 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2285 | dev: true
2286 |
2287 | /picomatch@2.3.1:
2288 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2289 | engines: {node: '>=8.6'}
2290 | dev: true
2291 |
2292 | /pidtree@0.6.0:
2293 | resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
2294 | engines: {node: '>=0.10'}
2295 | hasBin: true
2296 | dev: true
2297 |
2298 | /prelude-ls@1.2.1:
2299 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
2300 | engines: {node: '>= 0.8.0'}
2301 | dev: true
2302 |
2303 | /prettier-linter-helpers@1.0.0:
2304 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
2305 | engines: {node: '>=6.0.0'}
2306 | dependencies:
2307 | fast-diff: 1.3.0
2308 | dev: true
2309 |
2310 | /prettier@3.2.5:
2311 | resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
2312 | engines: {node: '>=14'}
2313 | hasBin: true
2314 | dev: true
2315 |
2316 | /pretty-ms@7.0.1:
2317 | resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==}
2318 | engines: {node: '>=10'}
2319 | dependencies:
2320 | parse-ms: 2.1.0
2321 | dev: true
2322 |
2323 | /promisepipe@3.0.0:
2324 | resolution: {integrity: sha512-V6TbZDJ/ZswevgkDNpGt/YqNCiZP9ASfgU+p83uJE6NrGtvSGoOcHLiDCqkMs2+yg7F5qHdLV8d0aS8O26G/KA==}
2325 | dev: true
2326 |
2327 | /proxy-from-env@1.1.0:
2328 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
2329 | dev: false
2330 |
2331 | /pump@3.0.0:
2332 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
2333 | dependencies:
2334 | end-of-stream: 1.4.4
2335 | once: 1.4.0
2336 | dev: true
2337 |
2338 | /punycode@2.3.1:
2339 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
2340 | engines: {node: '>=6'}
2341 | dev: true
2342 |
2343 | /queue-microtask@1.2.3:
2344 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2345 | dev: true
2346 |
2347 | /raw-body@2.4.1:
2348 | resolution: {integrity: sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==}
2349 | engines: {node: '>= 0.8'}
2350 | dependencies:
2351 | bytes: 3.1.0
2352 | http-errors: 1.7.3
2353 | iconv-lite: 0.4.24
2354 | unpipe: 1.0.0
2355 | dev: true
2356 |
2357 | /readable-stream@3.6.2:
2358 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
2359 | engines: {node: '>= 6'}
2360 | dependencies:
2361 | inherits: 2.0.4
2362 | string_decoder: 1.3.0
2363 | util-deprecate: 1.0.2
2364 | dev: true
2365 |
2366 | /readdirp@3.3.0:
2367 | resolution: {integrity: sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==}
2368 | engines: {node: '>=8.10.0'}
2369 | dependencies:
2370 | picomatch: 2.3.1
2371 | dev: true
2372 |
2373 | /require-from-string@2.0.2:
2374 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
2375 | engines: {node: '>=0.10.0'}
2376 | dev: true
2377 |
2378 | /resolve-from@4.0.0:
2379 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
2380 | engines: {node: '>=4'}
2381 | dev: true
2382 |
2383 | /resolve-from@5.0.0:
2384 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
2385 | engines: {node: '>=8'}
2386 | dev: true
2387 |
2388 | /restore-cursor@4.0.0:
2389 | resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
2390 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2391 | dependencies:
2392 | onetime: 5.1.2
2393 | signal-exit: 3.0.7
2394 | dev: true
2395 |
2396 | /reusify@1.0.4:
2397 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2398 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2399 | dev: true
2400 |
2401 | /rfdc@1.3.1:
2402 | resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==}
2403 | dev: true
2404 |
2405 | /rimraf@3.0.2:
2406 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2407 | hasBin: true
2408 | dependencies:
2409 | glob: 7.2.3
2410 | dev: true
2411 |
2412 | /run-parallel@1.2.0:
2413 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2414 | dependencies:
2415 | queue-microtask: 1.2.3
2416 | dev: true
2417 |
2418 | /safe-buffer@5.2.1:
2419 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
2420 | dev: true
2421 |
2422 | /safer-buffer@2.1.2:
2423 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
2424 | dev: true
2425 |
2426 | /semver@6.3.1:
2427 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
2428 | hasBin: true
2429 | dev: true
2430 |
2431 | /semver@7.3.5:
2432 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==}
2433 | engines: {node: '>=10'}
2434 | hasBin: true
2435 | dependencies:
2436 | lru-cache: 6.0.0
2437 | dev: true
2438 |
2439 | /semver@7.6.0:
2440 | resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
2441 | engines: {node: '>=10'}
2442 | hasBin: true
2443 | dependencies:
2444 | lru-cache: 6.0.0
2445 | dev: true
2446 |
2447 | /set-blocking@2.0.0:
2448 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
2449 | dev: true
2450 |
2451 | /setprototypeof@1.1.1:
2452 | resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==}
2453 | dev: true
2454 |
2455 | /shebang-command@2.0.0:
2456 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2457 | engines: {node: '>=8'}
2458 | dependencies:
2459 | shebang-regex: 3.0.0
2460 | dev: true
2461 |
2462 | /shebang-regex@3.0.0:
2463 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2464 | engines: {node: '>=8'}
2465 | dev: true
2466 |
2467 | /signal-exit@3.0.7:
2468 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2469 | dev: true
2470 |
2471 | /signal-exit@4.0.2:
2472 | resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==}
2473 | engines: {node: '>=14'}
2474 | dev: true
2475 |
2476 | /signal-exit@4.1.0:
2477 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
2478 | engines: {node: '>=14'}
2479 | dev: true
2480 |
2481 | /slash@3.0.0:
2482 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2483 | engines: {node: '>=8'}
2484 | dev: true
2485 |
2486 | /slice-ansi@5.0.0:
2487 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
2488 | engines: {node: '>=12'}
2489 | dependencies:
2490 | ansi-styles: 6.2.1
2491 | is-fullwidth-code-point: 4.0.0
2492 | dev: true
2493 |
2494 | /slice-ansi@7.1.0:
2495 | resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
2496 | engines: {node: '>=18'}
2497 | dependencies:
2498 | ansi-styles: 6.2.1
2499 | is-fullwidth-code-point: 5.0.0
2500 | dev: true
2501 |
2502 | /stat-mode@0.3.0:
2503 | resolution: {integrity: sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==}
2504 | dev: true
2505 |
2506 | /statuses@1.5.0:
2507 | resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
2508 | engines: {node: '>= 0.6'}
2509 | dev: true
2510 |
2511 | /stream-to-array@2.3.0:
2512 | resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==}
2513 | dependencies:
2514 | any-promise: 1.3.0
2515 | dev: true
2516 |
2517 | /stream-to-promise@2.2.0:
2518 | resolution: {integrity: sha512-HAGUASw8NT0k8JvIVutB2Y/9iBk7gpgEyAudXwNJmZERdMITGdajOa4VJfD/kNiA3TppQpTP4J+CtcHwdzKBAw==}
2519 | dependencies:
2520 | any-promise: 1.3.0
2521 | end-of-stream: 1.1.0
2522 | stream-to-array: 2.3.0
2523 | dev: true
2524 |
2525 | /string-argv@0.3.2:
2526 | resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
2527 | engines: {node: '>=0.6.19'}
2528 | dev: true
2529 |
2530 | /string-width@4.2.3:
2531 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
2532 | engines: {node: '>=8'}
2533 | dependencies:
2534 | emoji-regex: 8.0.0
2535 | is-fullwidth-code-point: 3.0.0
2536 | strip-ansi: 6.0.1
2537 | dev: true
2538 |
2539 | /string-width@7.1.0:
2540 | resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==}
2541 | engines: {node: '>=18'}
2542 | dependencies:
2543 | emoji-regex: 10.3.0
2544 | get-east-asian-width: 1.2.0
2545 | strip-ansi: 7.1.0
2546 | dev: true
2547 |
2548 | /string_decoder@1.3.0:
2549 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
2550 | dependencies:
2551 | safe-buffer: 5.2.1
2552 | dev: true
2553 |
2554 | /strip-ansi@6.0.1:
2555 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2556 | engines: {node: '>=8'}
2557 | dependencies:
2558 | ansi-regex: 5.0.1
2559 | dev: true
2560 |
2561 | /strip-ansi@7.1.0:
2562 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
2563 | engines: {node: '>=12'}
2564 | dependencies:
2565 | ansi-regex: 6.0.1
2566 | dev: true
2567 |
2568 | /strip-final-newline@2.0.0:
2569 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
2570 | engines: {node: '>=6'}
2571 | dev: true
2572 |
2573 | /strip-final-newline@3.0.0:
2574 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
2575 | engines: {node: '>=12'}
2576 | dev: true
2577 |
2578 | /strip-json-comments@3.1.1:
2579 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2580 | engines: {node: '>=8'}
2581 | dev: true
2582 |
2583 | /supports-color@7.2.0:
2584 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2585 | engines: {node: '>=8'}
2586 | dependencies:
2587 | has-flag: 4.0.0
2588 | dev: true
2589 |
2590 | /synckit@0.8.8:
2591 | resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==}
2592 | engines: {node: ^14.18.0 || >=16.0.0}
2593 | dependencies:
2594 | '@pkgr/core': 0.1.1
2595 | tslib: 2.6.2
2596 | dev: true
2597 |
2598 | /tar@4.4.18:
2599 | resolution: {integrity: sha512-ZuOtqqmkV9RE1+4odd+MhBpibmCxNP6PJhH/h2OqNuotTX7/XHPZQJv2pKvWMplFH9SIZZhitehh6vBH6LO8Pg==}
2600 | engines: {node: '>=4.5'}
2601 | dependencies:
2602 | chownr: 1.1.4
2603 | fs-minipass: 1.2.7
2604 | minipass: 2.9.0
2605 | minizlib: 1.3.3
2606 | mkdirp: 0.5.6
2607 | safe-buffer: 5.2.1
2608 | yallist: 3.1.1
2609 | dev: true
2610 |
2611 | /tar@6.2.1:
2612 | resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
2613 | engines: {node: '>=10'}
2614 | dependencies:
2615 | chownr: 2.0.0
2616 | fs-minipass: 2.1.0
2617 | minipass: 5.0.0
2618 | minizlib: 2.1.2
2619 | mkdirp: 1.0.4
2620 | yallist: 4.0.0
2621 | dev: true
2622 |
2623 | /text-table@0.2.0:
2624 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2625 | dev: true
2626 |
2627 | /time-span@4.0.0:
2628 | resolution: {integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==}
2629 | engines: {node: '>=10'}
2630 | dependencies:
2631 | convert-hrtime: 3.0.0
2632 | dev: true
2633 |
2634 | /to-regex-range@5.0.1:
2635 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2636 | engines: {node: '>=8.0'}
2637 | dependencies:
2638 | is-number: 7.0.0
2639 | dev: true
2640 |
2641 | /toidentifier@1.0.0:
2642 | resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==}
2643 | engines: {node: '>=0.6'}
2644 | dev: true
2645 |
2646 | /tr46@0.0.3:
2647 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
2648 | dev: true
2649 |
2650 | /tree-kill@1.2.2:
2651 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
2652 | hasBin: true
2653 | dev: true
2654 |
2655 | /ts-api-utils@1.3.0(typescript@5.4.5):
2656 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
2657 | engines: {node: '>=16'}
2658 | peerDependencies:
2659 | typescript: '>=4.2.0'
2660 | dependencies:
2661 | typescript: 5.4.5
2662 | dev: true
2663 |
2664 | /ts-morph@12.0.0:
2665 | resolution: {integrity: sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==}
2666 | dependencies:
2667 | '@ts-morph/common': 0.11.1
2668 | code-block-writer: 10.1.1
2669 | dev: true
2670 |
2671 | /ts-node@10.9.1(@types/node@16.18.11)(typescript@4.9.5):
2672 | resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
2673 | hasBin: true
2674 | peerDependencies:
2675 | '@swc/core': '>=1.2.50'
2676 | '@swc/wasm': '>=1.2.50'
2677 | '@types/node': '*'
2678 | typescript: '>=2.7'
2679 | peerDependenciesMeta:
2680 | '@swc/core':
2681 | optional: true
2682 | '@swc/wasm':
2683 | optional: true
2684 | dependencies:
2685 | '@cspotcode/source-map-support': 0.8.1
2686 | '@tsconfig/node10': 1.0.11
2687 | '@tsconfig/node12': 1.0.11
2688 | '@tsconfig/node14': 1.0.3
2689 | '@tsconfig/node16': 1.0.4
2690 | '@types/node': 16.18.11
2691 | acorn: 8.11.3
2692 | acorn-walk: 8.3.2
2693 | arg: 4.1.3
2694 | create-require: 1.1.1
2695 | diff: 4.0.2
2696 | make-error: 1.3.6
2697 | typescript: 4.9.5
2698 | v8-compile-cache-lib: 3.0.1
2699 | yn: 3.1.1
2700 | dev: true
2701 |
2702 | /ts-toolbelt@6.15.5:
2703 | resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==}
2704 | dev: true
2705 |
2706 | /tslib@2.6.2:
2707 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
2708 | dev: true
2709 |
2710 | /type-check@0.4.0:
2711 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2712 | engines: {node: '>= 0.8.0'}
2713 | dependencies:
2714 | prelude-ls: 1.2.1
2715 | dev: true
2716 |
2717 | /type-fest@0.20.2:
2718 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2719 | engines: {node: '>=10'}
2720 | dev: true
2721 |
2722 | /typescript@4.9.5:
2723 | resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
2724 | engines: {node: '>=4.2.0'}
2725 | hasBin: true
2726 | dev: true
2727 |
2728 | /typescript@5.4.5:
2729 | resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
2730 | engines: {node: '>=14.17'}
2731 | hasBin: true
2732 | dev: true
2733 |
2734 | /uid-promise@1.0.0:
2735 | resolution: {integrity: sha512-R8375j0qwXyIu/7R0tjdF06/sElHqbmdmWC9M2qQHpEVbvE4I5+38KJI7LUUmQMp7NVq4tKHiBMkT0NFM453Ig==}
2736 | dev: true
2737 |
2738 | /undici-types@5.26.5:
2739 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
2740 | dev: true
2741 |
2742 | /undici@5.26.5:
2743 | resolution: {integrity: sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==}
2744 | engines: {node: '>=14.0'}
2745 | dependencies:
2746 | '@fastify/busboy': 2.1.1
2747 | dev: true
2748 |
2749 | /universalify@0.1.2:
2750 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
2751 | engines: {node: '>= 4.0.0'}
2752 | dev: true
2753 |
2754 | /universalify@2.0.1:
2755 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
2756 | engines: {node: '>= 10.0.0'}
2757 | dev: true
2758 |
2759 | /unpipe@1.0.0:
2760 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
2761 | engines: {node: '>= 0.8'}
2762 | dev: true
2763 |
2764 | /uri-js@4.4.1:
2765 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2766 | dependencies:
2767 | punycode: 2.3.1
2768 | dev: true
2769 |
2770 | /util-deprecate@1.0.2:
2771 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2772 | dev: true
2773 |
2774 | /uuid@3.3.2:
2775 | resolution: {integrity: sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==}
2776 | deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
2777 | hasBin: true
2778 | dev: true
2779 |
2780 | /v8-compile-cache-lib@3.0.1:
2781 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
2782 | dev: true
2783 |
2784 | /vercel@34.2.0:
2785 | resolution: {integrity: sha512-OUMvETq+5Iq9L5m1v/E9SPUUfKnKnJjynv0ydeAqWnXoYAwgcaJCg+3HVOEk1VhjhgcGzSS1uGHvlcLmK6XRkA==}
2786 | engines: {node: '>= 16'}
2787 | hasBin: true
2788 | dependencies:
2789 | '@vercel/build-utils': 8.2.0
2790 | '@vercel/fun': 1.1.0
2791 | '@vercel/go': 3.1.1
2792 | '@vercel/hydrogen': 1.0.2
2793 | '@vercel/next': 4.2.11
2794 | '@vercel/node': 3.1.5
2795 | '@vercel/python': 4.2.0
2796 | '@vercel/redwood': 2.0.9
2797 | '@vercel/remix-builder': 2.1.6
2798 | '@vercel/ruby': 2.1.0
2799 | '@vercel/static-build': 2.5.9
2800 | chokidar: 3.3.1
2801 | transitivePeerDependencies:
2802 | - '@swc/core'
2803 | - '@swc/wasm'
2804 | - encoding
2805 | - supports-color
2806 | dev: true
2807 |
2808 | /web-vitals@0.2.4:
2809 | resolution: {integrity: sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg==}
2810 | dev: true
2811 |
2812 | /webidl-conversions@3.0.1:
2813 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
2814 | dev: true
2815 |
2816 | /whatwg-url@5.0.0:
2817 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
2818 | dependencies:
2819 | tr46: 0.0.3
2820 | webidl-conversions: 3.0.1
2821 | dev: true
2822 |
2823 | /which@2.0.2:
2824 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2825 | engines: {node: '>= 8'}
2826 | hasBin: true
2827 | dependencies:
2828 | isexe: 2.0.0
2829 | dev: true
2830 |
2831 | /wide-align@1.1.5:
2832 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
2833 | dependencies:
2834 | string-width: 4.2.3
2835 | dev: true
2836 |
2837 | /word-wrap@1.2.5:
2838 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
2839 | engines: {node: '>=0.10.0'}
2840 | dev: false
2841 |
2842 | /wrap-ansi@9.0.0:
2843 | resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
2844 | engines: {node: '>=18'}
2845 | dependencies:
2846 | ansi-styles: 6.2.1
2847 | string-width: 7.1.0
2848 | strip-ansi: 7.1.0
2849 | dev: true
2850 |
2851 | /wrappy@1.0.2:
2852 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2853 | dev: true
2854 |
2855 | /xdg-app-paths@5.1.0:
2856 | resolution: {integrity: sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA==}
2857 | engines: {node: '>=6'}
2858 | dependencies:
2859 | xdg-portable: 7.3.0
2860 | dev: true
2861 |
2862 | /xdg-portable@7.3.0:
2863 | resolution: {integrity: sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw==}
2864 | engines: {node: '>= 6.0'}
2865 | dependencies:
2866 | os-paths: 4.4.0
2867 | dev: true
2868 |
2869 | /yallist@3.1.1:
2870 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
2871 | dev: true
2872 |
2873 | /yallist@4.0.0:
2874 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2875 | dev: true
2876 |
2877 | /yaml@2.3.4:
2878 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
2879 | engines: {node: '>= 14'}
2880 | dev: true
2881 |
2882 | /yauzl-clone@1.0.4:
2883 | resolution: {integrity: sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA==}
2884 | engines: {node: '>=6'}
2885 | dependencies:
2886 | events-intercept: 2.0.0
2887 | dev: true
2888 |
2889 | /yauzl-promise@2.1.3:
2890 | resolution: {integrity: sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA==}
2891 | engines: {node: '>=6'}
2892 | dependencies:
2893 | yauzl: 2.10.0
2894 | yauzl-clone: 1.0.4
2895 | dev: true
2896 |
2897 | /yauzl@2.10.0:
2898 | resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
2899 | dependencies:
2900 | buffer-crc32: 0.2.13
2901 | fd-slicer: 1.1.0
2902 | dev: true
2903 |
2904 | /yn@3.1.1:
2905 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
2906 | engines: {node: '>=6'}
2907 | dev: true
2908 |
2909 | /yocto-queue@0.1.0:
2910 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2911 | engines: {node: '>=10'}
2912 | dev: true
2913 |
--------------------------------------------------------------------------------
/src/assets/brush.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/fog-shim-reverse.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/assets/fog-shim.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/assets/index.ts:
--------------------------------------------------------------------------------
1 | import fs from 'fs';
2 | import path from 'path';
3 |
4 | export const BRUSH = fs.readFileSync(path.resolve(__dirname, './brush.svg'), 'utf-8');
5 | export const PEOPLE = fs.readFileSync(path.resolve(__dirname, './people.svg'));
6 | export const PEOPLE_TEXTURE = fs.readFileSync(path.resolve(__dirname, './people-texture.svg'));
7 | export const FOG_SHIM = fs.readFileSync(path.resolve(__dirname, './fog-shim.svg'));
8 | export const FOG_SHIM_REVERSE = fs.readFileSync(path.resolve(__dirname, './fog-shim-reverse.svg'));
9 |
--------------------------------------------------------------------------------
/src/assets/people-texture.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/assets/people.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/common/error.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Base Error
3 | */
4 | export class CustomError extends Error {
5 | secondaryMessage?: string;
6 | /**
7 | * Base error constructor.
8 | *
9 | * @param {string} message Error message.
10 | */
11 | constructor(message: string, secondaryMessage?: string) {
12 | super(message);
13 | this.secondaryMessage = secondaryMessage;
14 | }
15 | }
16 |
17 | /**
18 | * Missing query parameter class.
19 | */
20 | export class MissingParamError extends CustomError {
21 | missedParams: unknown;
22 | /**
23 | * Missing query parameter error constructor.
24 | *
25 | * @param {string[]} missedParams An array of missing parameters names.
26 | */
27 | constructor(missedParams: string[]) {
28 | const msg = `Missing params ${missedParams
29 | .map((p) => `"${p}"`)
30 | .join(', ')} make sure you pass the parameters in URL`;
31 | super(msg);
32 | this.missedParams = missedParams;
33 | }
34 | }
35 |
36 | export enum ErrorCodes {
37 | MAX_RETRY = 'You can deploy own instance or wait until public will be no longer limited',
38 | NO_TOKENS = 'Please add an env variable called GITHUB_PAT_1 with your GitHub API token in vercel',
39 | USER_NOT_FOUND = 'Make sure the provided username is not an organization',
40 | GRAPHQL_ERROR = 'Please try again later',
41 | }
42 |
43 |
--------------------------------------------------------------------------------
/src/common/index.ts:
--------------------------------------------------------------------------------
1 | export * from './error';
2 | export * from './rank';
3 | export * from './retries';
4 | export * from './utils';
5 |
--------------------------------------------------------------------------------
/src/common/rank.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Calculates the users rank.
3 | */
4 | export const calculateRank = (params: {
5 | allCommits: boolean,
6 | commits: number,
7 | prs: number,
8 | issues: number,
9 | reviews: number,
10 | stars: number,
11 | followers: number,
12 | }): number => {
13 | const { allCommits, commits, prs, issues, reviews, stars, followers } = params;
14 | const COMMITS_MEDIAN = allCommits ? 1000 : 250;
15 | const COMMITS_WEIGHT = 2;
16 | const PRS_WEIGHT = 3;
17 | const PRS_MEDIAN = 50;
18 | const ISSUES_MEDIAN = 25;
19 | const ISSUES_WEIGHT = 1;
20 | const REVIEWS_MEDIAN = 2;
21 | const REVIEWS_WEIGHT = 1;
22 | const STARS_MEDIAN = 50;
23 | const STARS_WEIGHT = 4;
24 | const FOLLOWERS_MEDIAN = 10;
25 | const FOLLOWERS_WEIGHT = 1;
26 |
27 | const TOTAL_WEIGHT =
28 | COMMITS_WEIGHT +
29 | PRS_WEIGHT +
30 | ISSUES_WEIGHT +
31 | REVIEWS_WEIGHT +
32 | STARS_WEIGHT +
33 | FOLLOWERS_WEIGHT;
34 |
35 | const rank = 1 -
36 | (COMMITS_WEIGHT * exponentialCdf(commits / COMMITS_MEDIAN) +
37 | PRS_WEIGHT * exponentialCdf(prs / PRS_MEDIAN) +
38 | ISSUES_WEIGHT * exponentialCdf(issues / ISSUES_MEDIAN) +
39 | REVIEWS_WEIGHT * exponentialCdf(reviews / REVIEWS_MEDIAN) +
40 | STARS_WEIGHT * logNormalCdf(stars / STARS_MEDIAN) +
41 | FOLLOWERS_WEIGHT * logNormalCdf(followers / FOLLOWERS_MEDIAN)) /
42 | TOTAL_WEIGHT;
43 |
44 | return rank * 100;
45 | };
46 |
47 | const exponentialCdf = (x: number): number => 1 - 2 ** -x;
48 |
49 | const logNormalCdf = (x: number): number => x / (1 + x);
50 |
--------------------------------------------------------------------------------
/src/common/retries.ts:
--------------------------------------------------------------------------------
1 | import { AxiosResponse } from 'axios';
2 | import { CustomError, ErrorCodes } from './error';
3 | import { GithubResponse, GithubErrorType } from '../types/github';
4 |
5 | const PATs = Object.keys(process.env).filter((key) =>
6 | /GITHUB_PAT_\d*$/.exec(key),
7 | ).length;
8 |
9 | const RETRIES = process.env.NODE_ENV === 'test' ? 1 : PATs;
10 |
11 | export const retryer = async (
12 | fetcher: (variables: T, token: string) => Promise>>,
13 | variables: T,
14 | retries = 0,
15 | ): Promise>> => {
16 | if (!RETRIES) {
17 | throw new CustomError('No GitHub API tokens found', ErrorCodes.NO_TOKENS);
18 | }
19 | if (retries > RETRIES) {
20 | throw new CustomError(
21 | 'Downtime due to GitHub API rate limiting',
22 | ErrorCodes.MAX_RETRY,
23 | );
24 | }
25 | try {
26 | const token = process.env[`GITHUB_PAT_${retries + 1}`] as string;
27 | const response = await fetcher(
28 | variables,
29 | token,
30 | );
31 | const isRateExceeded = response.data.errors?.[0].type === GithubErrorType.RATE_LIMITED;
32 | if (isRateExceeded) {
33 | console.log(`PAT_${retries + 1} Failed`);
34 | return retryer(fetcher, variables, ++retries);
35 | }
36 | return response;
37 | } catch (error) {
38 | const { response } = (error as { response?: AxiosResponse> });
39 | const isBadCredential = response?.data?.message === 'Bad credentials';
40 | const isAccountSuspended = response?.data?.message === 'Sorry. Your account was suspended.';
41 | if (isBadCredential || isAccountSuspended) {
42 | console.log(`GITHUB_PAT_${retries + 1} Failed`);
43 | // directly return from the function
44 | return retryer(fetcher, variables, ++retries);
45 | } else {
46 | return response as AxiosResponse>;
47 | }
48 | }
49 | };
50 |
--------------------------------------------------------------------------------
/src/common/utils.ts:
--------------------------------------------------------------------------------
1 | import wrap from 'word-wrap';
2 |
3 | export const wrapTextMultiline = (text: string, width = 59, maxLines = 3): string[] => {
4 | const fullWidthComma = ',';
5 | const encoded = encodeHTML(text);
6 | const isChinese = encoded.includes(fullWidthComma);
7 |
8 | let wrapped = [];
9 |
10 | if (isChinese) {
11 | wrapped = encoded.split(fullWidthComma); // Chinese full punctuation
12 | } else {
13 | wrapped = wrap(encoded, {
14 | width,
15 | }).split('\n'); // Split wrapped lines to get an array of lines
16 | }
17 | const lines = wrapped.map((line) => line.trim()).slice(0, maxLines);
18 | if (wrapped.length > maxLines) {
19 | lines[maxLines - 1] += '...';
20 | }
21 |
22 | const multiLineText = lines.filter(Boolean);
23 | return multiLineText;
24 | };
25 |
26 | const encodeHTML = (str: string) => {
27 | return str
28 | .replace(/[\u00A0-\u9999<>&](?!#)/gim, (i) => {
29 | return '' + i.charCodeAt(0) + ';';
30 | })
31 | .replace(/\u0008/gim, '');
32 | };
33 |
--------------------------------------------------------------------------------
/src/fetchers/request.ts:
--------------------------------------------------------------------------------
1 | import axios, { AxiosResponse } from 'axios';
2 | import { GithubResponse } from '../types/github';
3 |
4 | export const request = (data: Record, headers: Record): Promise>> => {
5 | return axios({
6 | url: 'https://api.github.com/graphql',
7 | method: 'post',
8 | headers,
9 | data,
10 | });
11 | };
12 |
--------------------------------------------------------------------------------
/src/fetchers/stats.ts:
--------------------------------------------------------------------------------
1 | import { AxiosResponse } from 'axios';
2 | import { request } from './request';
3 | import {
4 | retryer, wrapTextMultiline, MissingParamError, CustomError, ErrorCodes, calculateRank
5 | } from '../common';
6 | import { GRAPHQL_REPOS_QUERY, GRAPHQL_STATS_QUERY } from '../graphql';
7 | import { StatsResponse, IGithubStats, GithubErrorType } from '../types/github';
8 | import { IStats } from '../types/stats';
9 |
10 | type Variables = {
11 | login: string;
12 | first: number;
13 | includeMergedPullRequests: boolean;
14 | includeDiscussions: boolean;
15 | includeDiscussionsAnswers: boolean;
16 | after: string | null;
17 | }
18 |
19 | /**
20 | * Fetch stats for a given username.
21 | *
22 | * @param {string} username GitHub username.
23 | */
24 | export const fetchStats = async (username?: string): Promise => {
25 | if (!username) {
26 | throw new MissingParamError(['username']);
27 | }
28 |
29 | const stats: IStats = {
30 | name: '',
31 | totalPRs: 0,
32 | totalPRsMerged: 0,
33 | mergedPRsPercentage: 0,
34 | totalReviews: 0,
35 | totalCommits: 0,
36 | totalIssues: 0,
37 | totalStars: 0,
38 | totalDiscussionsStarted: 0,
39 | totalFollowers: 0,
40 | totalDiscussionsAnswered: 0,
41 | contributedTo: 0,
42 | rank: 0,
43 | };
44 |
45 | const res = await statsFetcher({
46 | username,
47 | includeMergedPullRequests: true,
48 | includeDiscussions: true,
49 | includeDiscussionsAnswers: true,
50 | });
51 |
52 | catchError(res);
53 |
54 | const { user } = res.data.data;
55 | stats.name = user.name || user.login;
56 |
57 | Object.assign(stats, {
58 | totalCommits: user.contributionsCollection.totalCommitContributions,
59 | totalPRs: user.pullRequests.totalCount,
60 | totalReviews: user.contributionsCollection.totalPullRequestReviewContributions,
61 | contributedTo: user.repositoriesContributedTo.totalCount,
62 | totalStars: user.repositories.nodes
63 | .reduce((prev, curr) => {
64 | return prev + curr.stargazers.totalCount;
65 | }, 0),
66 | totalFollowers: user.followers.totalCount,
67 | totalIssues: user.openIssues.totalCount + user.closedIssues.totalCount,
68 | });
69 |
70 | stats.rank = calculateRank({
71 | allCommits: false,
72 | commits: stats.totalCommits,
73 | prs: stats.totalPRs,
74 | reviews: stats.totalReviews,
75 | issues: stats.totalIssues,
76 | stars: stats.totalStars,
77 | followers: user.followers.totalCount,
78 | });
79 |
80 | return stats;
81 | };
82 |
83 | /**
84 | * Fetch stats information for a given username.
85 | */
86 | const statsFetcher = async (params: {
87 | username: string;
88 | includeMergedPullRequests: boolean;
89 | includeDiscussions: boolean;
90 | includeDiscussionsAnswers: boolean;
91 | }) => {
92 | const {
93 | username,
94 | includeMergedPullRequests = false,
95 | includeDiscussions = false,
96 | includeDiscussionsAnswers = false,
97 | } = params;
98 | let stats;
99 | let hasNextPage = true;
100 | let endCursor = null;
101 |
102 | while (hasNextPage) {
103 | const variables: Variables = {
104 | login: username,
105 | first: 100,
106 | after: endCursor,
107 | includeMergedPullRequests,
108 | includeDiscussions,
109 | includeDiscussionsAnswers,
110 | };
111 | const res = await retryer(fetcher, variables);
112 | if (res.data.errors) {
113 | return res;
114 | }
115 |
116 | // Store stats data.
117 | const repoNodes = res.data.data.user.repositories.nodes;
118 | if (stats) {
119 | stats.data.data.user.repositories.nodes.push(...repoNodes);
120 | } else {
121 | stats = res;
122 | }
123 |
124 | // Disable multi page fetching on public Vercel instance due to rate limits.
125 | const repoNodesWithStars = repoNodes.filter(
126 | (node) => node.stargazers.totalCount !== 0,
127 | );
128 | hasNextPage =
129 | process.env.FETCH_MULTI_PAGE_STARS === 'true' &&
130 | repoNodes.length === repoNodesWithStars.length &&
131 | res.data.data.user.repositories.pageInfo.hasNextPage;
132 | endCursor = res.data.data.user.repositories.pageInfo.endCursor;
133 | }
134 |
135 | return stats as AxiosResponse;
136 | };
137 |
138 | const fetcher = (variables: Variables, token: string): Promise> => {
139 | const query = variables.after ? GRAPHQL_REPOS_QUERY : GRAPHQL_STATS_QUERY;
140 | return request(
141 | {
142 | query,
143 | variables,
144 | },
145 | {
146 | Authorization: `bearer ${token}`,
147 | },
148 | );
149 | };
150 |
151 | const catchError = (resp?: AxiosResponse): void => {
152 | if (!resp?.data.errors) {
153 | return;
154 | }
155 | console.error(resp.data.errors);
156 | if (resp.data.errors[0].type === GithubErrorType.NOT_FOUND) {
157 | throw new CustomError(
158 | resp.data.errors[0].message || 'Could not fetch user.',
159 | ErrorCodes.USER_NOT_FOUND,
160 | );
161 | }
162 | if (resp.data.errors[0].message) {
163 | throw new CustomError(
164 | wrapTextMultiline(resp.data.errors[0].message, 90, 1)[0],
165 | resp.statusText,
166 | );
167 | }
168 | throw new CustomError(
169 | 'Something went wrong while trying to retrieve the stats data using the GraphQL API.',
170 | ErrorCodes.GRAPHQL_ERROR,
171 | );
172 | };
173 |
--------------------------------------------------------------------------------
/src/graphql/index.ts:
--------------------------------------------------------------------------------
1 | export const GRAPHQL_REPOS_FIELD = `
2 | repositories(first: 100, ownerAffiliations: OWNER, orderBy: {direction: DESC, field: STARGAZERS}, after: $after) {
3 | totalCount
4 | nodes {
5 | name
6 | stargazers {
7 | totalCount
8 | }
9 | }
10 | pageInfo {
11 | hasNextPage
12 | endCursor
13 | }
14 | }
15 | `;
16 |
17 | export const GRAPHQL_REPOS_QUERY = `
18 | query userInfo($login: String!, $after: String) {
19 | user(login: $login) {
20 | ${GRAPHQL_REPOS_FIELD}
21 | }
22 | }
23 | `;
24 |
25 | export const GRAPHQL_STATS_QUERY = `
26 | query userInfo($login: String!, $after: String, $includeMergedPullRequests: Boolean!, $includeDiscussions: Boolean!, $includeDiscussionsAnswers: Boolean!) {
27 | user(login: $login) {
28 | name
29 | login
30 | contributionsCollection {
31 | totalCommitContributions,
32 | totalPullRequestReviewContributions
33 | }
34 | repositoriesContributedTo(first: 1, contributionTypes: [COMMIT, ISSUE, PULL_REQUEST, REPOSITORY]) {
35 | totalCount
36 | }
37 | pullRequests(first: 1) {
38 | totalCount
39 | }
40 | mergedPullRequests: pullRequests(states: MERGED) @include(if: $includeMergedPullRequests) {
41 | totalCount
42 | }
43 | openIssues: issues(states: OPEN) {
44 | totalCount
45 | }
46 | closedIssues: issues(states: CLOSED) {
47 | totalCount
48 | }
49 | followers {
50 | totalCount
51 | }
52 | repositoryDiscussions @include(if: $includeDiscussions) {
53 | totalCount
54 | }
55 | repositoryDiscussionComments(onlyAnswers: true) @include(if: $includeDiscussionsAnswers) {
56 | totalCount
57 | }
58 | ${GRAPHQL_REPOS_FIELD}
59 | }
60 | }
61 | `;
62 |
--------------------------------------------------------------------------------
/src/render/base.ts:
--------------------------------------------------------------------------------
1 | import { FOG_SHIM, FOG_SHIM_REVERSE } from '../assets';
2 | import { IStats } from '../types/stats';
3 |
4 | export class Render {
5 | static WIDTH = 500;
6 | static HEIGHT = 220;
7 | static CARD_RADIUS = 8;
8 |
9 | protected stats: IStats;
10 |
11 | constructor(stats: IStats) {
12 | this.stats = stats;
13 | }
14 |
15 | public render(): string {
16 | const template = ``;
21 | return template.replace(/>\s+<').replace(/\n|\r/g, '').trim();
22 | }
23 |
24 | public renderContent(): string {
25 | return '';
26 | }
27 |
28 | public renderHead(): string {
29 | return '';
30 | }
31 |
32 | private renderBackground(): string {
33 | return `
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | ${FOG_SHIM}
51 | ${FOG_SHIM_REVERSE}
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
69 |
70 |
71 |
72 |
73 |
80 |
81 | `;
82 | }
83 | //
84 | }
85 |
--------------------------------------------------------------------------------
/src/render/error.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Renders error message on the card.
3 | *
4 | * @param {string} message Main error message.
5 | * @param {string} secondaryMessage The secondary error message.
6 | * @returns {string} The SVG markup.
7 | */
8 | export const renderError = (message: string, secondaryMessage?: string): string => `
9 |
24 | `;
25 |
--------------------------------------------------------------------------------
/src/render/immortality/index.ts:
--------------------------------------------------------------------------------
1 | import { Render } from '../base';
2 | import { BRUSH, PEOPLE, PEOPLE_TEXTURE } from '../../assets';
3 | import { IStats } from '../../types/stats';
4 |
5 | const MAX_STARTS = 10000;
6 | const MAX_FOLLOWERS = 1000;
7 | const MAX_PRS = 500;
8 | const MAX_CONTRIBUTED = 10;
9 | const MAX_ISSUES = 200;
10 | const MAX_COMMITS = 365;
11 | const RADIAN = Math.PI / 3;
12 |
13 | export class ImmortalityRender extends Render {
14 | constructor(stats: IStats) {
15 | super(stats);
16 | }
17 |
18 | public renderContent(): string {
19 | return `
20 | ${this.renderTitle()}
21 | ${this.renderRadarChart()}
22 | ${this.renderLevel()}
23 | `;
24 | }
25 |
26 | private renderLevel(): string {
27 | const THRESHOLDS = [1, 5, 10, 15, 20, 30,40,50,60, 70, 80, 90, 100];
28 | const LEVELS = ['道祖', '大罗', '太乙', '金仙', '真仙', '大乘', '合体', '炼虚', '化神', '元婴', '金丹', '筑基', '练气'];
29 | const level = LEVELS[THRESHOLDS.findIndex((t) => this.stats.rank <= t)];
30 |
31 | return `
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | ${PEOPLE}
41 |
42 |
43 |
44 |
45 | ${PEOPLE_TEXTURE}
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | ${level}
57 |
58 |
59 | `;
60 | }
61 |
62 | public renderHead(): string {
63 | return `${this.renderStyle()}`;
64 | }
65 |
66 | private renderStyle(): string {
67 | return `
68 | ${this.stats.name}的仙途
69 |
108 | `;
109 | }
110 |
111 | private renderTitle(): string {
112 | return `
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 | ${BRUSH}
130 |
131 |
132 | ${this.stats.name}
133 |
134 |
135 | `;
136 | }
137 |
138 | private renderRadarChart(): string {
139 | const rx = 60;
140 | const ry = 60 * Math.sin(Math.PI / 3);
141 | const polygon60 = this.renderHexagon(60);
142 | const polygon40 = this.renderHexagon(40);
143 | const polygon20 = this.renderHexagon(20);
144 |
145 | const star = Math.min(this.stats.totalStars / MAX_STARTS, 1) * 60;
146 | const starPoint = [rx - star / 2 , ry - star * Math.sin(RADIAN)];
147 |
148 | const pr = Math.min(this.stats.totalPRs / MAX_PRS, 1) * 60;
149 | const prPoint = [rx + pr / 2, ry - pr * Math.sin(RADIAN)];
150 |
151 | const issues = Math.min(this.stats.totalIssues / MAX_ISSUES, 1) * 60;
152 | const issuesPoint = [rx + issues, ry];
153 |
154 | const follower = Math.min(this.stats.totalFollowers / MAX_FOLLOWERS, 1) * 60;
155 | const followerPoint = [rx + follower / 2, ry + follower * Math.sin(RADIAN)];
156 |
157 | const commits = Math.min(this.stats.totalCommits / MAX_COMMITS, 1) * 60;
158 | const commitsPoint = [rx - commits / 2, ry + commits * Math.sin(RADIAN)];
159 |
160 | const contributed = Math.min(this.stats.contributedTo / MAX_CONTRIBUTED, 1) * 60;
161 | const contributedPoint = [rx - contributed / 2, ry];
162 |
163 | const radarPoints = `${starPoint[0]},${starPoint[1]} ${prPoint[0]},${prPoint[1]} ${issuesPoint[0]},${issuesPoint[1]} ${followerPoint[0]},${followerPoint[1]} ${commitsPoint[0]},${commitsPoint[1]} ${contributedPoint[0]},${contributedPoint[1]}`;
164 |
165 | const total = calculateDistance(starPoint, prPoint)
166 | + calculateDistance(prPoint, issuesPoint)
167 | + calculateDistance(issuesPoint, followerPoint)
168 | + calculateDistance(followerPoint, commitsPoint)
169 | + calculateDistance(commitsPoint, contributedPoint)
170 | + calculateDistance(contributedPoint, starPoint);
171 |
172 | return `
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
185 |
191 |
197 | ${polygon60.map((item) => ``).join('')}
198 |
220 |
221 |
222 | Star
223 | ${this.stats.totalStars}
224 |
225 |
226 | PRs
227 | ${this.stats.totalPRs}
228 |
229 |
230 |
231 | Issues
232 | ${this.stats.totalIssues}
233 |
234 |
235 | Followers
236 | ${this.stats.totalFollowers}
237 |
238 |
239 | Commits
240 | ${this.stats.totalCommits}
241 |
242 |
243 | C2
244 | ${this.stats.contributedTo}
245 |
246 |
247 | `;
248 | }
249 |
250 | private renderHexagon(length: number): number[][] {
251 | const long = length * Math.sin(Math.PI / 3);
252 | const short = length / 2;
253 | const x1 = 0;
254 | const x2 = short;
255 | const x3 = length + short;
256 | const x4 = length * 2;
257 | const y1 = long;
258 | const y2 = 0;
259 | const y3 = 2 * long;
260 | return [
261 | [x1, y1],
262 | [x2, y2],
263 | [x3, y2],
264 | [x4, y1],
265 | [x3, y3],
266 | [x2, y3],
267 | ];
268 | }
269 | }
270 |
271 | /**
272 | * calculates the distance between two points
273 | */
274 | const calculateDistance = (a: number[], b: number[]): number => {
275 | const dx = b[0] - a[0];
276 | const dy = b[1] - a[1];
277 | return Math.sqrt(dx * dx + dy * dy);
278 | };
279 |
--------------------------------------------------------------------------------
/src/render/index.ts:
--------------------------------------------------------------------------------
1 | export * from './render';
2 | export * from './error';
3 |
--------------------------------------------------------------------------------
/src/render/render.ts:
--------------------------------------------------------------------------------
1 | import { ImmortalityRender } from './immortality';
2 | import { Render } from './base';
3 | import { IStats } from '../types/stats';
4 |
5 | export const renderStatsCard = (stats: IStats) => {
6 | const instance = getInstance(stats);
7 |
8 | return instance.render();
9 | };
10 |
11 | const getInstance = (stats: IStats): Render => {
12 | const instance = new ImmortalityRender(stats);
13 |
14 | return instance;
15 | };
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/types/github.ts:
--------------------------------------------------------------------------------
1 | export enum GithubErrorType {
2 | RATE_LIMITED = 'RATE_LIMITED',
3 | NOT_FOUND = 'NOT_FOUND',
4 | }
5 |
6 | export type GithubResponse = {
7 | message?: string;
8 | errors?: {
9 | type: GithubErrorType;
10 | message?: string;
11 | }[];
12 | data: T;
13 | }
14 |
15 | export interface IGithubStats {
16 | user: {
17 | name: string;
18 | login: string;
19 | contributionsCollection: {
20 | totalCommitContributions: number;
21 | totalPullRequestReviewContributions: number;
22 | };
23 | repositoriesContributedTo: {
24 | totalCount: number;
25 | };
26 | pullRequests: {
27 | totalCount: number;
28 | };
29 | mergedPullRequests: {
30 | totalCount: number;
31 | };
32 | openIssues: {
33 | totalCount: number;
34 | };
35 | closedIssues: {
36 | totalCount: 10;
37 | };
38 | followers: {
39 | totalCount: number;
40 | };
41 | repositoryDiscussions: {
42 | totalCount: number;
43 | };
44 | repositoryDiscussionComments: {
45 | totalCount: number;
46 | };
47 | repositories: {
48 | totalCount: number;
49 | nodes: {
50 | stargazers: {
51 | totalCount: number;
52 | }
53 | }[];
54 | pageInfo: {
55 | hasNextPage: boolean;
56 | endCursor: string;
57 | };
58 | };
59 | };
60 | }
61 |
62 | export type StatsResponse = GithubResponse;
63 |
--------------------------------------------------------------------------------
/src/types/request.ts:
--------------------------------------------------------------------------------
1 | export interface RequestQuery {
2 | username?: string;
3 | }
4 |
--------------------------------------------------------------------------------
/src/types/stats.ts:
--------------------------------------------------------------------------------
1 | export interface IStats {
2 | name: string,
3 | totalPRs: number,
4 | totalPRsMerged: number,
5 | mergedPRsPercentage: number,
6 | totalReviews: number,
7 | totalCommits: number,
8 | totalIssues: number,
9 | totalStars: number,
10 | totalDiscussionsStarted: number,
11 | totalDiscussionsAnswered: number,
12 | totalFollowers: number,
13 | contributedTo: number,
14 | rank: number,
15 | }
16 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "target": "esnext",
5 | "module": "commonjs",
6 | "noImplicitAny": true,
7 | "strict": true,
8 | "moduleResolution": "node",
9 | "esModuleInterop": true,
10 | "skipLibCheck": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "allowJs": true,
15 | },
16 | "exclude": [
17 | "node_modules"
18 | ],
19 | "include": [
20 | "src/**/*.ts",
21 | "api/**/*.ts"
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "functions": {
3 | "api/index.ts": {
4 | "runtime": "@vercel/node@3.1.5",
5 | "memory": 128,
6 | "maxDuration": 10
7 | }
8 | },
9 | "redirects": [
10 | {
11 | "source": "/",
12 | "destination": "https://github.com/IceEnd/github-immortality"
13 | }
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------