├── .editorconfig
├── .gitignore
├── .npmignore
├── README.md
├── email.png
├── eslint.config.mjs
├── package.json
├── src
├── api
│ ├── exporter.ts
│ └── replit.ts
├── axios
│ ├── ratelimit.ts
│ └── retry.ts
├── cli.ts
├── index.ts
├── logger.ts
└── repl.ts
├── tsconfig.json
└── yarn.lock
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | end_of_line = lf
5 | insert_final_newline = true
6 |
7 | [*.{ts,js,json,yml}]
8 | charset = utf-8
9 | indent_style = space
10 | indent_size = 4
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .replit-export.save
2 |
3 | # Logs
4 | logs
5 | *.log
6 | npm-debug.log*
7 | yarn-debug.log*
8 | yarn-error.log*
9 | lerna-debug.log*
10 | .pnpm-debug.log*
11 |
12 | # Diagnostic reports (https://nodejs.org/api/report.html)
13 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
14 |
15 | # Runtime data
16 | pids
17 | *.pid
18 | *.seed
19 | *.pid.lock
20 |
21 | # Directory for instrumented libs generated by jscoverage/JSCover
22 | lib-cov
23 |
24 | # Coverage directory used by tools like istanbul
25 | coverage
26 | *.lcov
27 |
28 | # nyc test coverage
29 | .nyc_output
30 |
31 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
32 | .grunt
33 |
34 | # Bower dependency directory (https://bower.io/)
35 | bower_components
36 |
37 | # node-waf configuration
38 | .lock-wscript
39 |
40 | # Compiled binary addons (https://nodejs.org/api/addons.html)
41 | build/Release
42 |
43 | # Dependency directories
44 | node_modules/
45 | jspm_packages/
46 |
47 | # Snowpack dependency directory (https://snowpack.dev/)
48 | web_modules/
49 |
50 | # TypeScript cache
51 | *.tsbuildinfo
52 |
53 | # Optional npm cache directory
54 | .npm
55 |
56 | # Optional eslint cache
57 | .eslintcache
58 |
59 | # Optional stylelint cache
60 | .stylelintcache
61 |
62 | # Microbundle cache
63 | .rpt2_cache/
64 | .rts2_cache_cjs/
65 | .rts2_cache_es/
66 | .rts2_cache_umd/
67 |
68 | # Optional REPL history
69 | .node_repl_history
70 |
71 | # Output of 'npm pack'
72 | *.tgz
73 |
74 | # Yarn Integrity file
75 | .yarn-integrity
76 |
77 | # dotenv environment variable files
78 | .env
79 | .env.development.local
80 | .env.test.local
81 | .env.production.local
82 | .env.local
83 |
84 | # parcel-bundler cache (https://parceljs.org/)
85 | .cache
86 | .parcel-cache
87 |
88 | # Next.js build output
89 | .next
90 | out
91 |
92 | # Nuxt.js build / generate output
93 | .nuxt
94 | dist
95 |
96 | # Gatsby files
97 | .cache/
98 | # Comment in the public line in if your project uses Gatsby and not Next.js
99 | # https://nextjs.org/blog/next-9-1#public-directory-support
100 | # public
101 |
102 | # vuepress build output
103 | .vuepress/dist
104 |
105 | # vuepress v2.x temp and cache directory
106 | .temp
107 | .cache
108 |
109 | # Docusaurus cache and generated files
110 | .docusaurus
111 |
112 | # Serverless directories
113 | .serverless/
114 |
115 | # FuseBox cache
116 | .fusebox/
117 |
118 | # DynamoDB Local files
119 | .dynamodb/
120 |
121 | # TernJS port file
122 | .tern-port
123 |
124 | # Stores VSCode versions used for testing VSCode extensions
125 | .vscode-test
126 |
127 | # yarn v2
128 | .yarn/cache
129 | .yarn/unplugged
130 | .yarn/build-state.yml
131 | .yarn/install-state.gz
132 | .pnp.*
133 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | src/
2 | .replit-export.save
3 |
4 | # Logs
5 | logs
6 | *.log
7 | npm-debug.log*
8 | yarn-debug.log*
9 | yarn-error.log*
10 | lerna-debug.log*
11 | .pnpm-debug.log*
12 |
13 | # Diagnostic reports (https://nodejs.org/api/report.html)
14 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
15 |
16 | # Runtime data
17 | pids
18 | *.pid
19 | *.seed
20 | *.pid.lock
21 |
22 | # Directory for instrumented libs generated by jscoverage/JSCover
23 | lib-cov
24 |
25 | # Coverage directory used by tools like istanbul
26 | coverage
27 | *.lcov
28 |
29 | # nyc test coverage
30 | .nyc_output
31 |
32 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
33 | .grunt
34 |
35 | # Bower dependency directory (https://bower.io/)
36 | bower_components
37 |
38 | # node-waf configuration
39 | .lock-wscript
40 |
41 | # Compiled binary addons (https://nodejs.org/api/addons.html)
42 | build/Release
43 |
44 | # Dependency directories
45 | node_modules/
46 | jspm_packages/
47 |
48 | # Snowpack dependency directory (https://snowpack.dev/)
49 | web_modules/
50 |
51 | # TypeScript cache
52 | *.tsbuildinfo
53 |
54 | # Optional npm cache directory
55 | .npm
56 |
57 | # Optional eslint cache
58 | .eslintcache
59 |
60 | # Optional stylelint cache
61 | .stylelintcache
62 |
63 | # Microbundle cache
64 | .rpt2_cache/
65 | .rts2_cache_cjs/
66 | .rts2_cache_es/
67 | .rts2_cache_umd/
68 |
69 | # Optional REPL history
70 | .node_repl_history
71 |
72 | # Output of 'npm pack'
73 | *.tgz
74 |
75 | # Yarn Integrity file
76 | .yarn-integrity
77 |
78 | # dotenv environment variable files
79 | .env
80 | .env.development.local
81 | .env.test.local
82 | .env.production.local
83 | .env.local
84 |
85 | # parcel-bundler cache (https://parceljs.org/)
86 | .cache
87 | .parcel-cache
88 |
89 | # Next.js build output
90 | .next
91 | out
92 |
93 | # Nuxt.js build / generate output
94 | .nuxt
95 | dist
96 |
97 | # Gatsby files
98 | .cache/
99 | # Comment in the public line in if your project uses Gatsby and not Next.js
100 | # https://nextjs.org/blog/next-9-1#public-directory-support
101 | # public
102 |
103 | # vuepress build output
104 | .vuepress/dist
105 |
106 | # vuepress v2.x temp and cache directory
107 | .temp
108 | .cache
109 |
110 | # Docusaurus cache and generated files
111 | .docusaurus
112 |
113 | # Serverless directories
114 | .serverless/
115 |
116 | # FuseBox cache
117 | .fusebox/
118 |
119 | # DynamoDB Local files
120 | .dynamodb/
121 |
122 | # TernJS port file
123 | .tern-port
124 |
125 | # Stores VSCode versions used for testing VSCode extensions
126 | .vscode-test
127 |
128 | # yarn v2
129 | .yarn/cache
130 | .yarn/unplugged
131 | .yarn/build-state.yml
132 | .yarn/install-state.gz
133 | .pnp.*
134 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Official Replit Exporter
2 | Replit has introduced an official way to bulk export repls. From your account settings, click "Start Export":
3 |
4 |
5 |
6 | Although you can still use this CLI, no support will be provided and things are more likely to break.
7 |
8 | # Replit Starter Plan Changes
9 |
10 | Replit has recently updated its Starter Plan (the core free plan) to limit users to 3 Repls. Accounts exceeding this limit will face restrictions in the future (all repls will be automatically deleted in a year) unless they subscribe to a $25/month plan.
11 |
12 | To help transition smoothly, this CLI script downloads all Repls from your account, including environment variables and configuration data, allowing you to securely move your projects off Replit.
13 |
14 | 
15 | ## Installation
16 |
17 | To install the package globally, run:
18 |
19 | ```sh
20 | npm install -g replit-export
21 | ```
22 |
23 | ## Usage
24 |
25 | ```sh
26 | replit-export --help
27 | ```
28 |
29 | ### Command Options
30 |
31 | - `-V, --version`
32 | Outputs the version number.
33 |
34 | - `-o, --output `
35 | Specifies the directory to save Repls.
36 |
37 | - `-a, --auth `
38 | Replit authorization cookie (`connect.sid`).
39 |
40 | - `-l, --load `
41 | Load a previous save file to continue downloading (default: `.replit-export.save`).
42 |
43 | - `-c, --concurrent `
44 | Sets the maximum number of concurrent downloads (default: `15`).
45 |
46 | - `-m, --max`
47 | Limits the maximum number of Repls to download.
48 |
49 | - `-f, --filter <...files>`
50 | Filters out files matching the specified patterns (default: `["node_modules/",".cargo/"]`).
51 |
52 | - `-h, --help`
53 | Displays help information.
54 |
55 | ### Obtaining the Auth Cookie
56 |
57 | To retrieve the authorization cookie required for this script:
58 |
59 | 1. Log in to [Replit](https://replit.com).
60 | 2. Open DevTools in your browser.
61 | 3. Copy the `connect.sid` cookie.
62 | Alternatively, you can use an extension like Cookie Editor.
63 |
64 | ### Quickstart Guide
65 |
66 | To quickly start downloading all your Repls, run the following command:
67 |
68 | ```bash
69 | replit-export --output repls/ --auth
70 | ```
71 |
72 | This will download all public and private Repls from your account to the `repls/` folder.
73 |
74 | ### Environment Variables
75 |
76 | Environment variables are automatically extracted and saved in a `.env` file in the root folder of each Repl.
77 |
78 | ### Ratelimit and Disk Space Considerations
79 |
80 | If you have a large number of Repls, ensure you have sufficient disk space on your computer. Replit enforces a rate limit for downloading entire Repl zips. The CLI handles these rate limits automatically, and you may notice occasional pauses. If you have many Repls, it's recommended to leave the CLI running in the background until the process is complete.
81 |
--------------------------------------------------------------------------------
/email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackermondev/replit-exporter/5e9b6726fe59c35daf143292562ec1cb46f203b6/email.png
--------------------------------------------------------------------------------
/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import typescriptEslint from "@typescript-eslint/eslint-plugin";
2 | import prettier from "eslint-plugin-prettier";
3 | import globals from "globals";
4 | import tsParser from "@typescript-eslint/parser";
5 | import path from "node:path";
6 | import { fileURLToPath } from "node:url";
7 | import js from "@eslint/js";
8 | import { FlatCompat } from "@eslint/eslintrc";
9 |
10 | const __filename = fileURLToPath(import.meta.url);
11 | const __dirname = path.dirname(__filename);
12 | const compat = new FlatCompat({
13 | baseDirectory: __dirname,
14 | recommendedConfig: js.configs.recommended,
15 | allConfig: js.configs.all
16 | });
17 |
18 | export default [{
19 | ignores: ["**/dist/", "**/node_modules/"],
20 | }, ...compat.extends(
21 | "eslint:recommended",
22 | "plugin:@typescript-eslint/recommended",
23 | "plugin:prettier/recommended",
24 | ), {
25 | plugins: {
26 | "@typescript-eslint": typescriptEslint,
27 | prettier,
28 | },
29 |
30 | languageOptions: {
31 | globals: {
32 | ...globals.node,
33 | },
34 |
35 | parser: tsParser,
36 | },
37 |
38 | rules: {
39 | "prettier/prettier": "error",
40 | "import/prefer-default-export": "off",
41 | indent: "off",
42 | "implicit-arrow-linebreak": "off",
43 | "no-unused-expressions": "off",
44 | "@typescript-eslint/no-unused-expressions": "error",
45 |
46 | "max-len": ["error", {
47 | code: 120,
48 | }],
49 |
50 | "@typescript-eslint/no-empty-function": "off",
51 | "no-shadow": "off",
52 | "@typescript-eslint/no-shadow": "error",
53 | "@typescript-eslint/explicit-function-return-type": "off",
54 | "@typescript-eslint/no-non-null-assertion": "error",
55 | "operator-linebreak": "off",
56 |
57 | "no-param-reassign": ["error", {
58 | props: false,
59 | }],
60 |
61 | "object-curly-newline": "off",
62 | },
63 | }];
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "replit-export",
3 | "version": "1.0.14",
4 | "main": "dist/index.js",
5 | "repository": "https://github.com/hackermondev/replit-exporter",
6 | "author": "Hackermon ",
7 | "license": "MIT",
8 | "bin": "dist/cli.js",
9 | "scripts": {
10 | "build": "tsc",
11 | "lint": "eslint --fix src/*"
12 | },
13 | "prettier": {
14 | "tabWidth": 4,
15 | "useTabs": false,
16 | "trailingComma": "all",
17 | "semi": true,
18 | "singleQuote": true,
19 | "printWidth": 100,
20 | "bracketSpacing": true,
21 | "arrowParens": "always"
22 | },
23 | "devDependencies": {
24 | "@eslint/eslintrc": "^3.1.0",
25 | "@eslint/js": "^9.5.0",
26 | "@types/node": "^22.5.0",
27 | "@typescript-eslint/eslint-plugin": "^7.14.1",
28 | "@typescript-eslint/parser": "^7.14.1",
29 | "eslint": "^9.5.0",
30 | "eslint-config-prettier": "^9.1.0",
31 | "eslint-plugin-prettier": "^5.1.3",
32 | "prettier": "^3.3.2",
33 | "typescript": "^5.5.4"
34 | },
35 | "dependencies": {
36 | "axios": "^1.7.5",
37 | "chalk": "2",
38 | "commander": "^12.1.0",
39 | "extract-zip": "^2.0.1",
40 | "glob": "^11.0.0"
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/api/exporter.ts:
--------------------------------------------------------------------------------
1 | import { WriteStream } from 'fs';
2 | import { trace } from '../logger';
3 | import { ReplitClient } from './replit';
4 |
5 | export interface ExporterState {
6 | pageInfo?: PageInfo;
7 | user?: number;
8 | }
9 |
10 | export interface ExporterConfig {
11 | rest: {
12 | authorization: string;
13 | config?: any;
14 | };
15 | state?: ExporterState;
16 | }
17 |
18 | declare global {
19 | interface Error {
20 | response?: Array<{ [key: string]: string }>;
21 | }
22 | }
23 |
24 | export class Exporter {
25 | public state: ExporterState;
26 | private client: ReplitClient;
27 |
28 | constructor(config: ExporterConfig) {
29 | this.state = config.state || {};
30 | this.client = new ReplitClient(config.rest.authorization, config.rest.config);
31 | }
32 |
33 | public async getNextRepls(count: number = 15): Promise> {
34 | const { data: response } = await this.client.graphql(
35 | 'ExportRepls',
36 | {
37 | search: '',
38 | after: this.state.pageInfo?.nextCursor,
39 | count,
40 | },
41 | query,
42 | );
43 |
44 | const errors = response.errors;
45 | if (errors && errors.length > 0) {
46 | const error = new Error('Cannot fetch user repls');
47 | error.response = errors;
48 | throw error;
49 | }
50 |
51 | if (!response.data?.currentUser) {
52 | throw new Error('Invalid authorization cookie');
53 | }
54 |
55 | trace('getNextRepls response', JSON.stringify(response.data));
56 | const data = response.data?.currentUser.exportRepls;
57 | const pageInfo = data?.pageInfo;
58 | const repls = data?.items;
59 |
60 | this.state.pageInfo = pageInfo;
61 | return repls || [];
62 | }
63 |
64 | public async bulkDownloadRepls(
65 | repls: Array,
66 | streams: Array,
67 | ): Promise<{ failed: Array }> {
68 | const failed: Array = [];
69 | await Promise.all(
70 | repls.map(async (repl, index) => {
71 | const stream = streams[index];
72 | await this.downloadRepl(repl, stream).catch((error) => {
73 | console.warn(`${repl.slug} (${repl.id}) failed`, error);
74 | failed.push(repl.id);
75 | });
76 |
77 | console.log(`Downloaded @${repl.user.username}/${repl.slug} (${repl.id})`);
78 | }),
79 | );
80 |
81 | return { failed };
82 | }
83 |
84 | public async getUser(): Promise {
85 | const { data: response } = await this.client.graphql(
86 | 'CurrentUser',
87 | {},
88 | queryCurrentUser,
89 | );
90 | const errors = response.errors;
91 | if (errors && errors.length > 0) {
92 | const error = new Error('Cannot fetch current user');
93 | error.response = errors;
94 | throw error;
95 | }
96 |
97 | if (!response.data?.currentUser) {
98 | throw new Error('Invalid authorization cookie');
99 | }
100 |
101 | return response.data.currentUser.id;
102 | }
103 |
104 | public async downloadRepl(repl: Repl, stream: WriteStream) {
105 | // Download
106 | const slugUrl = `https://replit.com/@${repl.user.username}/${repl.slug}`;
107 | const zipUrl = `${slugUrl}.zip`;
108 | const download = await this.client.rest.get(zipUrl, { responseType: 'stream' });
109 | const contentType = download.headers['content-type'];
110 | if (contentType != 'application/zip') {
111 | throw new Error(`Invalid content type, should be application/zip, got ${contentType}`);
112 | }
113 |
114 | download.data.pipe(stream);
115 |
116 | await new Promise((resolve, reject) => {
117 | stream.once('finish', resolve);
118 | stream.once('error', reject);
119 |
120 | if (stream.errored) reject(new Error('Stream errored'));
121 | else if (stream.closed) resolve(1);
122 | });
123 | }
124 | }
125 |
126 | export interface PageInfo {
127 | hasNextPage: boolean;
128 | nextCursor?: string;
129 | }
130 |
131 | export interface Repl {
132 | id: string;
133 | title: string;
134 | isPrivate: boolean;
135 | slug: string;
136 | wasPublished: boolean;
137 | timeCreated: string;
138 | timeUpdated: string;
139 | user: {
140 | id: number;
141 | username: string;
142 | };
143 | config: {
144 | isServer: boolean;
145 | isExtension: boolean;
146 | gitRemoteUrl?: string;
147 | isVnc: boolean;
148 | doClone: boolean;
149 | };
150 | multiplayers: Array<{
151 | id: string;
152 | username: string;
153 | }>;
154 | domains: Array<{
155 | domain: string;
156 | state: string;
157 | hosting_deployment_id?: string;
158 | }>;
159 | isAlwaysOn: boolean;
160 | isBoosted: boolean;
161 | }
162 |
163 | interface CurrentUserResult {
164 | currentUser: {
165 | id: number;
166 | };
167 | }
168 |
169 | interface SearchReplResult {
170 | currentUser: {
171 | exportRepls: {
172 | items: Array;
173 | pageInfo: PageInfo;
174 | };
175 | };
176 | }
177 |
178 | const queryCurrentUser = `query CurrentUser {
179 | currentUser {
180 | id
181 | }
182 | }
183 | `;
184 |
185 | const query = `query ExportRepls($search: String!, $after: String, $count: Int) {
186 | currentUser {
187 | exportRepls: paginatedReplSearch(search: $search, after: $after, count: $count) {
188 | items {
189 | id
190 | title
191 | isPrivate
192 | slug
193 | wasPublished
194 | timeCreated
195 | timeUpdated
196 | user {
197 | id
198 | username
199 | }
200 | language
201 | config {
202 | isServer
203 | isExtension
204 | gitRemoteUrl
205 | isVnc
206 | doClone
207 | }
208 | multiplayers {
209 | id
210 | username
211 | }
212 | source {
213 | release {
214 | id
215 | description
216 | hostedUrl
217 | user {
218 | id
219 | username
220 | }
221 | }
222 |
223 | deployment {
224 | id
225 | domain
226 | }
227 | }
228 | domains {
229 | domain
230 | state
231 | hosting_deployment_id
232 | }
233 | isAlwaysOn
234 | isBoosted
235 | }
236 |
237 | pageInfo {
238 | hasNextPage
239 | nextCursor
240 | }
241 | }
242 | }
243 | }
244 | `;
245 |
--------------------------------------------------------------------------------
/src/api/replit.ts:
--------------------------------------------------------------------------------
1 | import axios, { AxiosInstance, AxiosResponse, CreateAxiosDefaults } from 'axios';
2 | import { useRatelimitMiddleware } from '../axios/ratelimit';
3 |
4 | import https from 'https';
5 | import { useRetryMiddleware } from '../axios/retry';
6 |
7 | const defaultConfig: CreateAxiosDefaults = {
8 | baseURL: 'https://replit.com',
9 | httpsAgent: new https.Agent({ keepAlive: true }),
10 | headers: {
11 | 'user-agent': 'Replit-Exporter (+https://github.com/hackermondev/replit-exporter)',
12 |
13 | // Replit API requires these headers
14 | 'x-requested-with': 'XMLHttpRequest',
15 | referer: 'https://replit.com',
16 | },
17 | };
18 |
19 | export class ReplitClient {
20 | public rest: AxiosInstance;
21 |
22 | constructor(authorizationCookie: string, overrideConfig?: CreateAxiosDefaults) {
23 | const config = {
24 | ...defaultConfig,
25 | ...overrideConfig,
26 | } as any;
27 |
28 | config.headers['cookie'] = `connect.sid=${authorizationCookie}`;
29 |
30 | this.rest = axios.create(config);
31 | useRatelimitMiddleware(this.rest);
32 | useRetryMiddleware(this.rest);
33 | }
34 |
35 | public async graphql(
36 | operationName: string,
37 | variables: { [key: string]: any },
38 | query: string,
39 | ): Promise>> {
40 | return await this.rest.post(
41 | '/graphql',
42 | {
43 | operationName,
44 | variables,
45 | query,
46 | },
47 | { validateStatus: (status) => status >= 200 && status <= 499 },
48 | );
49 | }
50 | }
51 |
52 | export interface GraphqlResponse {
53 | errors?: Array<{ [key: string]: string }>;
54 | data?: T;
55 | }
56 |
--------------------------------------------------------------------------------
/src/axios/ratelimit.ts:
--------------------------------------------------------------------------------
1 | // Axios middleware to automatically retry 429 requests
2 | import { AxiosInstance } from 'axios';
3 |
4 | // Maximum retry-after duration in seconds (to avoid long delays)
5 | const MAX_RETRY_AFTER = 500;
6 |
7 | // Retry delay in seconds if 'retry-after' header is not present or exceeds MAX_RETRY_AFTER
8 | const DEFAULT_RETRY_DELAY = 100;
9 |
10 | export const useRatelimitMiddleware = (axios: AxiosInstance) => {
11 | axios.interceptors.response.use(
12 | (response) => {
13 | // If the response is successful, return it
14 | return response;
15 | },
16 | async (error) => {
17 | const { response, config } = error;
18 |
19 | // Check if the error is a 429 (Too Many Requests) response
20 | if (response && response.status === 429) {
21 | let retryAfter = parseInt(response.headers['retry-after'], 10);
22 |
23 | // Use the default retry delay if retry-after header is not present or is too long
24 | if (isNaN(retryAfter) || retryAfter > MAX_RETRY_AFTER) {
25 | retryAfter = DEFAULT_RETRY_DELAY;
26 | }
27 |
28 | console.warn(
29 | `${config.url} ratelimited, automatically retrying in ${retryAfter} seconds`,
30 | );
31 |
32 | // Wait for the specified retry delay
33 | await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));
34 |
35 | // Retry the request with the same config
36 | return axios(config);
37 | }
38 |
39 | // If the error is not a 429, reject it
40 | return Promise.reject(error);
41 | },
42 | );
43 | };
44 |
--------------------------------------------------------------------------------
/src/axios/retry.ts:
--------------------------------------------------------------------------------
1 | // Axios middleware to retry requests at least once
2 | import { AxiosInstance } from 'axios';
3 |
4 | export const useRetryMiddleware = (axiosInstance: AxiosInstance) => {
5 | axiosInstance.interceptors.response.use(
6 | (response) => {
7 | // If the response is successful, just return it
8 | return response;
9 | },
10 | async (error) => {
11 | const { config, response } = error;
12 |
13 | // Check if the error is retryable (i.e., not 429)
14 | if (response && response.status !== 429) {
15 | const retryCount = config._retry || 0;
16 | if (retryCount <= 5) {
17 | config._retry = retryCount + 1;
18 | console.log(
19 | `Retrying request to ${config.url}(${retryCount}), recieved status code ${response.status}`,
20 | );
21 |
22 | await new Promise((resolve) => setTimeout(resolve, 500 * retryCount));
23 |
24 | // Retry the request
25 | return axiosInstance(config);
26 | }
27 | }
28 |
29 | // If it's a 429 or has already been retried, reject the promise with the error
30 | return Promise.reject(error);
31 | },
32 | );
33 | };
34 |
--------------------------------------------------------------------------------
/src/cli.ts:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | process.env['NODE_NO_WARNINGS'] = '1';
3 | import chalk from 'chalk';
4 | import { program } from 'commander';
5 | import { existsSync, mkdirSync } from 'fs';
6 | import { appendFile, readFile, writeFile } from 'fs/promises';
7 | import { join, resolve } from 'path';
8 | import { Exporter } from './api/exporter';
9 | import { ReplZip } from './repl';
10 |
11 | program
12 | .version(require('../package.json').version)
13 | .requiredOption('-o, --output ', 'Directory to save Repls to')
14 | .requiredOption('-a, --auth ', 'Replit authorization cookie (connect.sid)')
15 | .option('-l, --load ', 'Exporter savefile to continue from', '.replit-export.save')
16 | .option('-c, --concurrent ', 'Maximum concurrent download', '15')
17 | .option('-m, --max', 'Maximum amount of Repls to download')
18 | .option('-f, --filter <...files>', 'Filter files that match the expressions', [
19 | 'node_modules/',
20 | '.cargo/',
21 | '.cache/typescript/',
22 | ])
23 | .action(async (args) => {
24 | const output = resolve(args.output);
25 | const concurrent = parseInt(args.concurrent);
26 | const saveFile = resolve(args.load);
27 | const max = args.max ? parseInt(args.max) : undefined;
28 | let filter = args.filter;
29 | const auth = args.auth;
30 |
31 | if (isNaN(concurrent)) throw new Error(`Not a Number: ${args.concurrent} (concurrent)`);
32 | if (max && isNaN(max)) throw new Error(`Not a Number: ${args.max} (max)`);
33 | if (typeof filter == 'string') filter = filter.split(',');
34 |
35 | await run(output, concurrent, saveFile, auth, filter, max);
36 | });
37 |
38 | program.parse(process.argv);
39 |
40 | process.on('unhandledRejection', (error) => {
41 | console.error(error);
42 | console.warn('Unknown error occured, simply restart the CLI to resume download');
43 | process.exit(1);
44 | });
45 |
46 | process.on('uncaughtException', (error) => {
47 | console.error(error);
48 | console.warn('Unknown error occured, simply restart the CLI to resume download');
49 | process.exit(1);
50 | });
51 |
52 | async function run(
53 | output: string,
54 | concurrent: number,
55 | saveFile: string,
56 | auth: string,
57 | filteredFiles: Array,
58 | maxRepls?: number,
59 | ) {
60 | let state = null;
61 | if (existsSync(saveFile)) {
62 | const save = (await readFile(saveFile)).toString();
63 | try {
64 | state = JSON.parse(save);
65 | console.log('Resuming state', state);
66 | } catch {}
67 | }
68 |
69 | if (!existsSync(output)) mkdirSync(output);
70 |
71 | const failedReplsPath = join(output, 'failed-repls.txt');
72 | const exporter = new Exporter({ rest: { authorization: auth }, state: state });
73 | let count = 0;
74 |
75 | const userId = await exporter.getUser();
76 | if (state) {
77 | if (userId != state.user) {
78 | console.warn(`Ignoring savefile, user mismatch (${state.user} != ${userId})`);
79 | exporter.state = {};
80 | }
81 | }
82 |
83 | exporter.state.user = userId;
84 | while (true) {
85 | if (maxRepls && concurrent + count > maxRepls) {
86 | concurrent = maxRepls - count;
87 | } else if (maxRepls && count >= maxRepls) {
88 | break;
89 | }
90 |
91 | const repls = await exporter.getNextRepls(concurrent);
92 |
93 | console.log(`Downloading ${repls.length} repls (${count} finished).`);
94 | count += repls.length;
95 | if (repls.length < 1) break;
96 |
97 | let zips = repls.map((r) => new ReplZip(r, output, filteredFiles));
98 | const { failed } = await exporter.bulkDownloadRepls(
99 | repls,
100 | zips.map((z) => z.getZipWriteStream()),
101 | );
102 |
103 | zips = zips.filter((z) => !failed.includes(z.repl.id));
104 | await Promise.all(zips.map((z) => z.process()));
105 | await save(exporter, saveFile);
106 |
107 | if (failed.length > 0) {
108 | await appendFile(failedReplsPath, failed.join('\r\n'));
109 | }
110 | }
111 |
112 | console.log(chalk.green(`Downloaded ${count} repls`));
113 | }
114 |
115 | async function save(exporter: Exporter, saveFile: string) {
116 | const state = JSON.stringify(exporter.state);
117 | await writeFile(saveFile, state);
118 | }
119 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './api/exporter';
2 | export * from './api/replit';
3 | export * from './repl';
4 | export * from './axios/ratelimit';
5 |
--------------------------------------------------------------------------------
/src/logger.ts:
--------------------------------------------------------------------------------
1 | import chalk from 'chalk';
2 |
3 | const originalLog = console.log;
4 | const originalError = console.error;
5 | const originalWarn = console.warn;
6 |
7 | console.log = (...data) => {
8 | const timestamp = new Date().toISOString();
9 | return originalLog(timestamp, ...data);
10 | };
11 |
12 | console.error = (...data) => {
13 | const timestamp = new Date().toISOString();
14 | const c = chalk.redBright(timestamp, ...data);
15 | return originalError(c);
16 | };
17 |
18 | console.warn = (...data) => {
19 | const timestamp = new Date().toISOString();
20 | const c = chalk.yellowBright(timestamp, ...data);
21 | return originalWarn(c);
22 | };
23 |
24 | export const trace = (...data: any[]) => {
25 | if (!process.env['DEBUG']) return;
26 |
27 | const timestamp = new Date().toISOString();
28 | const c = chalk.bgCyanBright(timestamp, ...data);
29 | return console.log(c);
30 | };
31 |
--------------------------------------------------------------------------------
/src/repl.ts:
--------------------------------------------------------------------------------
1 | import { Repl } from './api/exporter';
2 | import extract from 'extract-zip';
3 |
4 | import { join } from 'node:path';
5 | import { createWriteStream, existsSync, WriteStream } from 'node:fs';
6 | import { readFile, unlink, writeFile, rm } from 'node:fs/promises';
7 | import { Glob } from 'glob';
8 |
9 | // Post processing for extracting zip files from repls
10 | export class ReplZip {
11 | public repl: Repl;
12 | private paths: { zip: string; folder: string };
13 | private filter: Array;
14 |
15 | constructor(repl: Repl, source: string, filter: Array) {
16 | this.repl = repl;
17 | this.filter = filter || [];
18 | this.paths = {
19 | zip: join(source, `${repl.id}.zip`),
20 | folder: join(source, `${repl.slug}/`),
21 | };
22 | }
23 |
24 | public getZipWriteStream(): WriteStream {
25 | const path = this.paths.zip;
26 | return createWriteStream(path);
27 | }
28 |
29 | public async process() {
30 | await this.unzip();
31 |
32 | // Create a file with repl data
33 | const metadata = join(this.paths.folder, 'repl.metadata.json');
34 | if (!existsSync(metadata)) {
35 | await writeFile(metadata, JSON.stringify(this.repl, null, 4));
36 | }
37 |
38 | // Parse environment variables from cache folder
39 | // and sort them into one file
40 | const replitEnvPath = join(this.paths.folder, '.cache/replit/env/latest.json');
41 | if (existsSync(replitEnvPath)) {
42 | const data = (await readFile(replitEnvPath)).toString();
43 | const envData = JSON.parse(data).environment;
44 |
45 | const env = Object.keys(envData)
46 | .filter((e) => !REPLIT_SYSTEM_ENV.includes(e))
47 | .map((n) => `${n}=${envData[n]}`)
48 | .join('\r\n');
49 | const envPath = join(this.paths.folder, '.env');
50 | if (!existsSync(envPath)) {
51 | await writeFile(envPath, env);
52 | }
53 | }
54 |
55 | console.log(`Extracted @${this.repl.user.username}/${this.repl.slug}`);
56 | }
57 |
58 | async unzip() {
59 | await extract(this.paths.zip, {
60 | dir: this.paths.folder,
61 | defaultDirMode: 0o755,
62 | defaultFileMode: 0o755,
63 | });
64 |
65 | await unlink(this.paths.zip);
66 |
67 | const filters = this.filter.map((f) => join(this.paths.folder, f));
68 | const filtered = new Glob(filters, { absolute: true });
69 | const iterator = filtered.iterate();
70 |
71 | while (true) {
72 | const { done, value } = await iterator.next();
73 | if (done) break;
74 |
75 | if (!value) continue;
76 |
77 | const file = value;
78 | await rm(file, { force: true, recursive: true });
79 | }
80 | }
81 | }
82 |
83 | // Default environment variables in all Repls to filter
84 | export const REPLIT_SYSTEM_ENV = [
85 | 'PATH',
86 | 'REQUESTS_CA_BUNDLE',
87 | 'SSL_CERT_FILE',
88 | 'XDG_CACHE_HOME',
89 | 'XDG_CONFIG_HOME',
90 | 'XDG_DATA_HOME',
91 | '__EGL_VENDOR_LIBRARY_FILENAMES',
92 | 'REPLIT_CLI',
93 | 'REPLIT_BASHRC',
94 | 'NODE_EXTRA_CA_CERTS',
95 | 'NIX_PATH',
96 | 'NIX_PROFILES',
97 | 'NIXPKGS_ALLOW_UNFREE',
98 | 'LIBGL_DRIVERS_PATH',
99 | 'LOCALE_ARCHIVE',
100 | ];
101 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig to read more about this file */
4 |
5 | /* Projects */
6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12 |
13 | /* Language and Environment */
14 | "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16 | // "jsx": "preserve", /* Specify what JSX code is generated. */
17 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
26 |
27 | /* Modules */
28 | "module": "commonjs", /* Specify what module code is generated. */
29 | "rootDir": "./src", /* Specify the root folder within your source files. */
30 | // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
38 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
39 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
40 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
41 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
42 | // "resolveJsonModule": true, /* Enable importing .json files. */
43 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
44 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */
45 |
46 | /* JavaScript Support */
47 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
48 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
49 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
50 |
51 | /* Emit */
52 | "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
53 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */
54 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
55 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
56 | "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
57 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
58 | "outDir": "./dist", /* Specify an output folder for all emitted files. */
59 | "removeComments": false, /* Disable emitting comments. */
60 | // "noEmit": true, /* Disable emitting files from a compilation. */
61 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
62 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
63 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
64 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
65 | "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
66 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
67 | // "newLine": "crlf", /* Set the newline character for emitting files. */
68 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
69 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
70 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
71 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
72 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
73 |
74 | /* Interop Constraints */
75 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
76 | // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
77 | // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */
78 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
79 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
80 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
81 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
82 |
83 | /* Type Checking */
84 | "strict": true, /* Enable all strict type-checking options. */
85 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
86 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
87 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
88 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
89 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
90 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
91 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
92 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
93 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
94 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
95 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
96 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
97 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
98 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
99 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
100 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
101 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
102 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
103 |
104 | /* Completeness */
105 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
106 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
6 | version "4.4.0"
7 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
8 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
9 | dependencies:
10 | eslint-visitor-keys "^3.3.0"
11 |
12 | "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0":
13 | version "4.11.0"
14 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
15 | integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
16 |
17 | "@eslint/config-array@^0.18.0":
18 | version "0.18.0"
19 | resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d"
20 | integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==
21 | dependencies:
22 | "@eslint/object-schema" "^2.1.4"
23 | debug "^4.3.1"
24 | minimatch "^3.1.2"
25 |
26 | "@eslint/eslintrc@^3.1.0":
27 | version "3.1.0"
28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6"
29 | integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==
30 | dependencies:
31 | ajv "^6.12.4"
32 | debug "^4.3.2"
33 | espree "^10.0.1"
34 | globals "^14.0.0"
35 | ignore "^5.2.0"
36 | import-fresh "^3.2.1"
37 | js-yaml "^4.1.0"
38 | minimatch "^3.1.2"
39 | strip-json-comments "^3.1.1"
40 |
41 | "@eslint/js@9.9.1", "@eslint/js@^9.5.0":
42 | version "9.9.1"
43 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.9.1.tgz#4a97e85e982099d6c7ee8410aacb55adaa576f06"
44 | integrity sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==
45 |
46 | "@eslint/object-schema@^2.1.4":
47 | version "2.1.4"
48 | resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
49 | integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
50 |
51 | "@humanwhocodes/module-importer@^1.0.1":
52 | version "1.0.1"
53 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
54 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
55 |
56 | "@humanwhocodes/retry@^0.3.0":
57 | version "0.3.0"
58 | resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570"
59 | integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==
60 |
61 | "@isaacs/cliui@^8.0.2":
62 | version "8.0.2"
63 | resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
64 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
65 | dependencies:
66 | string-width "^5.1.2"
67 | string-width-cjs "npm:string-width@^4.2.0"
68 | strip-ansi "^7.0.1"
69 | strip-ansi-cjs "npm:strip-ansi@^6.0.1"
70 | wrap-ansi "^8.1.0"
71 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
72 |
73 | "@nodelib/fs.scandir@2.1.5":
74 | version "2.1.5"
75 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
76 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
77 | dependencies:
78 | "@nodelib/fs.stat" "2.0.5"
79 | run-parallel "^1.1.9"
80 |
81 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
82 | version "2.0.5"
83 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
84 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
85 |
86 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
87 | version "1.2.8"
88 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
89 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
90 | dependencies:
91 | "@nodelib/fs.scandir" "2.1.5"
92 | fastq "^1.6.0"
93 |
94 | "@pkgjs/parseargs@^0.11.0":
95 | version "0.11.0"
96 | resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
97 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
98 |
99 | "@pkgr/core@^0.1.0":
100 | version "0.1.1"
101 | resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31"
102 | integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
103 |
104 | "@types/node@*", "@types/node@^22.5.0":
105 | version "22.5.0"
106 | resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.0.tgz#10f01fe9465166b4cab72e75f60d8b99d019f958"
107 | integrity sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==
108 | dependencies:
109 | undici-types "~6.19.2"
110 |
111 | "@types/yauzl@^2.9.1":
112 | version "2.10.3"
113 | resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999"
114 | integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
115 | dependencies:
116 | "@types/node" "*"
117 |
118 | "@typescript-eslint/eslint-plugin@^7.14.1":
119 | version "7.18.0"
120 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3"
121 | integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==
122 | dependencies:
123 | "@eslint-community/regexpp" "^4.10.0"
124 | "@typescript-eslint/scope-manager" "7.18.0"
125 | "@typescript-eslint/type-utils" "7.18.0"
126 | "@typescript-eslint/utils" "7.18.0"
127 | "@typescript-eslint/visitor-keys" "7.18.0"
128 | graphemer "^1.4.0"
129 | ignore "^5.3.1"
130 | natural-compare "^1.4.0"
131 | ts-api-utils "^1.3.0"
132 |
133 | "@typescript-eslint/parser@^7.14.1":
134 | version "7.18.0"
135 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0"
136 | integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==
137 | dependencies:
138 | "@typescript-eslint/scope-manager" "7.18.0"
139 | "@typescript-eslint/types" "7.18.0"
140 | "@typescript-eslint/typescript-estree" "7.18.0"
141 | "@typescript-eslint/visitor-keys" "7.18.0"
142 | debug "^4.3.4"
143 |
144 | "@typescript-eslint/scope-manager@7.18.0":
145 | version "7.18.0"
146 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83"
147 | integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==
148 | dependencies:
149 | "@typescript-eslint/types" "7.18.0"
150 | "@typescript-eslint/visitor-keys" "7.18.0"
151 |
152 | "@typescript-eslint/type-utils@7.18.0":
153 | version "7.18.0"
154 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b"
155 | integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==
156 | dependencies:
157 | "@typescript-eslint/typescript-estree" "7.18.0"
158 | "@typescript-eslint/utils" "7.18.0"
159 | debug "^4.3.4"
160 | ts-api-utils "^1.3.0"
161 |
162 | "@typescript-eslint/types@7.18.0":
163 | version "7.18.0"
164 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9"
165 | integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==
166 |
167 | "@typescript-eslint/typescript-estree@7.18.0":
168 | version "7.18.0"
169 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931"
170 | integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==
171 | dependencies:
172 | "@typescript-eslint/types" "7.18.0"
173 | "@typescript-eslint/visitor-keys" "7.18.0"
174 | debug "^4.3.4"
175 | globby "^11.1.0"
176 | is-glob "^4.0.3"
177 | minimatch "^9.0.4"
178 | semver "^7.6.0"
179 | ts-api-utils "^1.3.0"
180 |
181 | "@typescript-eslint/utils@7.18.0":
182 | version "7.18.0"
183 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f"
184 | integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==
185 | dependencies:
186 | "@eslint-community/eslint-utils" "^4.4.0"
187 | "@typescript-eslint/scope-manager" "7.18.0"
188 | "@typescript-eslint/types" "7.18.0"
189 | "@typescript-eslint/typescript-estree" "7.18.0"
190 |
191 | "@typescript-eslint/visitor-keys@7.18.0":
192 | version "7.18.0"
193 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7"
194 | integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==
195 | dependencies:
196 | "@typescript-eslint/types" "7.18.0"
197 | eslint-visitor-keys "^3.4.3"
198 |
199 | acorn-jsx@^5.3.2:
200 | version "5.3.2"
201 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
202 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
203 |
204 | acorn@^8.12.0:
205 | version "8.12.1"
206 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
207 | integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
208 |
209 | ajv@^6.12.4:
210 | version "6.12.6"
211 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
212 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
213 | dependencies:
214 | fast-deep-equal "^3.1.1"
215 | fast-json-stable-stringify "^2.0.0"
216 | json-schema-traverse "^0.4.1"
217 | uri-js "^4.2.2"
218 |
219 | ansi-regex@^5.0.1:
220 | version "5.0.1"
221 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
222 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
223 |
224 | ansi-regex@^6.0.1:
225 | version "6.0.1"
226 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
227 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
228 |
229 | ansi-styles@^3.2.1:
230 | version "3.2.1"
231 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
232 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
233 | dependencies:
234 | color-convert "^1.9.0"
235 |
236 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
237 | version "4.3.0"
238 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
239 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
240 | dependencies:
241 | color-convert "^2.0.1"
242 |
243 | ansi-styles@^6.1.0:
244 | version "6.2.1"
245 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
246 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
247 |
248 | argparse@^2.0.1:
249 | version "2.0.1"
250 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
251 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
252 |
253 | array-union@^2.1.0:
254 | version "2.1.0"
255 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
256 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
257 |
258 | asynckit@^0.4.0:
259 | version "0.4.0"
260 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
261 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
262 |
263 | axios@^1.7.5:
264 | version "1.7.5"
265 | resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.5.tgz#21eed340eb5daf47d29b6e002424b3e88c8c54b1"
266 | integrity sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==
267 | dependencies:
268 | follow-redirects "^1.15.6"
269 | form-data "^4.0.0"
270 | proxy-from-env "^1.1.0"
271 |
272 | balanced-match@^1.0.0:
273 | version "1.0.2"
274 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
275 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
276 |
277 | brace-expansion@^1.1.7:
278 | version "1.1.11"
279 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
280 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
281 | dependencies:
282 | balanced-match "^1.0.0"
283 | concat-map "0.0.1"
284 |
285 | brace-expansion@^2.0.1:
286 | version "2.0.1"
287 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
288 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
289 | dependencies:
290 | balanced-match "^1.0.0"
291 |
292 | braces@^3.0.3:
293 | version "3.0.3"
294 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
295 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
296 | dependencies:
297 | fill-range "^7.1.1"
298 |
299 | buffer-crc32@~0.2.3:
300 | version "0.2.13"
301 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
302 | integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
303 |
304 | callsites@^3.0.0:
305 | version "3.1.0"
306 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
307 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
308 |
309 | chalk@2:
310 | version "2.4.2"
311 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
312 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
313 | dependencies:
314 | ansi-styles "^3.2.1"
315 | escape-string-regexp "^1.0.5"
316 | supports-color "^5.3.0"
317 |
318 | chalk@^4.0.0:
319 | version "4.1.2"
320 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
321 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
322 | dependencies:
323 | ansi-styles "^4.1.0"
324 | supports-color "^7.1.0"
325 |
326 | color-convert@^1.9.0:
327 | version "1.9.3"
328 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
329 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
330 | dependencies:
331 | color-name "1.1.3"
332 |
333 | color-convert@^2.0.1:
334 | version "2.0.1"
335 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
336 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
337 | dependencies:
338 | color-name "~1.1.4"
339 |
340 | color-name@1.1.3:
341 | version "1.1.3"
342 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
343 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
344 |
345 | color-name@~1.1.4:
346 | version "1.1.4"
347 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
348 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
349 |
350 | combined-stream@^1.0.8:
351 | version "1.0.8"
352 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
353 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
354 | dependencies:
355 | delayed-stream "~1.0.0"
356 |
357 | commander@^12.1.0:
358 | version "12.1.0"
359 | resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
360 | integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==
361 |
362 | concat-map@0.0.1:
363 | version "0.0.1"
364 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
365 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
366 |
367 | cross-spawn@^7.0.0, cross-spawn@^7.0.2:
368 | version "7.0.3"
369 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
370 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
371 | dependencies:
372 | path-key "^3.1.0"
373 | shebang-command "^2.0.0"
374 | which "^2.0.1"
375 |
376 | debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
377 | version "4.3.6"
378 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b"
379 | integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==
380 | dependencies:
381 | ms "2.1.2"
382 |
383 | deep-is@^0.1.3:
384 | version "0.1.4"
385 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
386 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
387 |
388 | delayed-stream@~1.0.0:
389 | version "1.0.0"
390 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
391 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
392 |
393 | dir-glob@^3.0.1:
394 | version "3.0.1"
395 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
396 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
397 | dependencies:
398 | path-type "^4.0.0"
399 |
400 | eastasianwidth@^0.2.0:
401 | version "0.2.0"
402 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
403 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
404 |
405 | emoji-regex@^8.0.0:
406 | version "8.0.0"
407 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
408 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
409 |
410 | emoji-regex@^9.2.2:
411 | version "9.2.2"
412 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
413 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
414 |
415 | end-of-stream@^1.1.0:
416 | version "1.4.4"
417 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
418 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
419 | dependencies:
420 | once "^1.4.0"
421 |
422 | escape-string-regexp@^1.0.5:
423 | version "1.0.5"
424 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
425 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
426 |
427 | escape-string-regexp@^4.0.0:
428 | version "4.0.0"
429 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
430 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
431 |
432 | eslint-config-prettier@^9.1.0:
433 | version "9.1.0"
434 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f"
435 | integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
436 |
437 | eslint-plugin-prettier@^5.1.3:
438 | version "5.2.1"
439 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz#d1c8f972d8f60e414c25465c163d16f209411f95"
440 | integrity sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==
441 | dependencies:
442 | prettier-linter-helpers "^1.0.0"
443 | synckit "^0.9.1"
444 |
445 | eslint-scope@^8.0.2:
446 | version "8.0.2"
447 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94"
448 | integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==
449 | dependencies:
450 | esrecurse "^4.3.0"
451 | estraverse "^5.2.0"
452 |
453 | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3:
454 | version "3.4.3"
455 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
456 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
457 |
458 | eslint-visitor-keys@^4.0.0:
459 | version "4.0.0"
460 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb"
461 | integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
462 |
463 | eslint@^9.5.0:
464 | version "9.9.1"
465 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.9.1.tgz#147ac9305d56696fb84cf5bdecafd6517ddc77ec"
466 | integrity sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==
467 | dependencies:
468 | "@eslint-community/eslint-utils" "^4.2.0"
469 | "@eslint-community/regexpp" "^4.11.0"
470 | "@eslint/config-array" "^0.18.0"
471 | "@eslint/eslintrc" "^3.1.0"
472 | "@eslint/js" "9.9.1"
473 | "@humanwhocodes/module-importer" "^1.0.1"
474 | "@humanwhocodes/retry" "^0.3.0"
475 | "@nodelib/fs.walk" "^1.2.8"
476 | ajv "^6.12.4"
477 | chalk "^4.0.0"
478 | cross-spawn "^7.0.2"
479 | debug "^4.3.2"
480 | escape-string-regexp "^4.0.0"
481 | eslint-scope "^8.0.2"
482 | eslint-visitor-keys "^4.0.0"
483 | espree "^10.1.0"
484 | esquery "^1.5.0"
485 | esutils "^2.0.2"
486 | fast-deep-equal "^3.1.3"
487 | file-entry-cache "^8.0.0"
488 | find-up "^5.0.0"
489 | glob-parent "^6.0.2"
490 | ignore "^5.2.0"
491 | imurmurhash "^0.1.4"
492 | is-glob "^4.0.0"
493 | is-path-inside "^3.0.3"
494 | json-stable-stringify-without-jsonify "^1.0.1"
495 | levn "^0.4.1"
496 | lodash.merge "^4.6.2"
497 | minimatch "^3.1.2"
498 | natural-compare "^1.4.0"
499 | optionator "^0.9.3"
500 | strip-ansi "^6.0.1"
501 | text-table "^0.2.0"
502 |
503 | espree@^10.0.1, espree@^10.1.0:
504 | version "10.1.0"
505 | resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56"
506 | integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==
507 | dependencies:
508 | acorn "^8.12.0"
509 | acorn-jsx "^5.3.2"
510 | eslint-visitor-keys "^4.0.0"
511 |
512 | esquery@^1.5.0:
513 | version "1.6.0"
514 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
515 | integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
516 | dependencies:
517 | estraverse "^5.1.0"
518 |
519 | esrecurse@^4.3.0:
520 | version "4.3.0"
521 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
522 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
523 | dependencies:
524 | estraverse "^5.2.0"
525 |
526 | estraverse@^5.1.0, estraverse@^5.2.0:
527 | version "5.3.0"
528 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
529 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
530 |
531 | esutils@^2.0.2:
532 | version "2.0.3"
533 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
534 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
535 |
536 | extract-zip@^2.0.1:
537 | version "2.0.1"
538 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
539 | integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
540 | dependencies:
541 | debug "^4.1.1"
542 | get-stream "^5.1.0"
543 | yauzl "^2.10.0"
544 | optionalDependencies:
545 | "@types/yauzl" "^2.9.1"
546 |
547 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
548 | version "3.1.3"
549 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
550 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
551 |
552 | fast-diff@^1.1.2:
553 | version "1.3.0"
554 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
555 | integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
556 |
557 | fast-glob@^3.2.9:
558 | version "3.3.2"
559 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
560 | integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
561 | dependencies:
562 | "@nodelib/fs.stat" "^2.0.2"
563 | "@nodelib/fs.walk" "^1.2.3"
564 | glob-parent "^5.1.2"
565 | merge2 "^1.3.0"
566 | micromatch "^4.0.4"
567 |
568 | fast-json-stable-stringify@^2.0.0:
569 | version "2.1.0"
570 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
571 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
572 |
573 | fast-levenshtein@^2.0.6:
574 | version "2.0.6"
575 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
576 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
577 |
578 | fastq@^1.6.0:
579 | version "1.17.1"
580 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
581 | integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
582 | dependencies:
583 | reusify "^1.0.4"
584 |
585 | fd-slicer@~1.1.0:
586 | version "1.1.0"
587 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
588 | integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
589 | dependencies:
590 | pend "~1.2.0"
591 |
592 | file-entry-cache@^8.0.0:
593 | version "8.0.0"
594 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
595 | integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
596 | dependencies:
597 | flat-cache "^4.0.0"
598 |
599 | fill-range@^7.1.1:
600 | version "7.1.1"
601 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
602 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
603 | dependencies:
604 | to-regex-range "^5.0.1"
605 |
606 | find-up@^5.0.0:
607 | version "5.0.0"
608 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
609 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
610 | dependencies:
611 | locate-path "^6.0.0"
612 | path-exists "^4.0.0"
613 |
614 | flat-cache@^4.0.0:
615 | version "4.0.1"
616 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
617 | integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
618 | dependencies:
619 | flatted "^3.2.9"
620 | keyv "^4.5.4"
621 |
622 | flatted@^3.2.9:
623 | version "3.3.1"
624 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
625 | integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
626 |
627 | follow-redirects@^1.15.6:
628 | version "1.15.6"
629 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
630 | integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
631 |
632 | foreground-child@^3.1.0:
633 | version "3.3.0"
634 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
635 | integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==
636 | dependencies:
637 | cross-spawn "^7.0.0"
638 | signal-exit "^4.0.1"
639 |
640 | form-data@^4.0.0:
641 | version "4.0.0"
642 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
643 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
644 | dependencies:
645 | asynckit "^0.4.0"
646 | combined-stream "^1.0.8"
647 | mime-types "^2.1.12"
648 |
649 | get-stream@^5.1.0:
650 | version "5.2.0"
651 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
652 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
653 | dependencies:
654 | pump "^3.0.0"
655 |
656 | glob-parent@^5.1.2:
657 | version "5.1.2"
658 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
659 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
660 | dependencies:
661 | is-glob "^4.0.1"
662 |
663 | glob-parent@^6.0.2:
664 | version "6.0.2"
665 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
666 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
667 | dependencies:
668 | is-glob "^4.0.3"
669 |
670 | glob@^11.0.0:
671 | version "11.0.0"
672 | resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.0.tgz#6031df0d7b65eaa1ccb9b29b5ced16cea658e77e"
673 | integrity sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==
674 | dependencies:
675 | foreground-child "^3.1.0"
676 | jackspeak "^4.0.1"
677 | minimatch "^10.0.0"
678 | minipass "^7.1.2"
679 | package-json-from-dist "^1.0.0"
680 | path-scurry "^2.0.0"
681 |
682 | globals@^14.0.0:
683 | version "14.0.0"
684 | resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
685 | integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
686 |
687 | globby@^11.1.0:
688 | version "11.1.0"
689 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
690 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
691 | dependencies:
692 | array-union "^2.1.0"
693 | dir-glob "^3.0.1"
694 | fast-glob "^3.2.9"
695 | ignore "^5.2.0"
696 | merge2 "^1.4.1"
697 | slash "^3.0.0"
698 |
699 | graphemer@^1.4.0:
700 | version "1.4.0"
701 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
702 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
703 |
704 | has-flag@^3.0.0:
705 | version "3.0.0"
706 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
707 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
708 |
709 | has-flag@^4.0.0:
710 | version "4.0.0"
711 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
712 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
713 |
714 | ignore@^5.2.0, ignore@^5.3.1:
715 | version "5.3.2"
716 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
717 | integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
718 |
719 | import-fresh@^3.2.1:
720 | version "3.3.0"
721 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
722 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
723 | dependencies:
724 | parent-module "^1.0.0"
725 | resolve-from "^4.0.0"
726 |
727 | imurmurhash@^0.1.4:
728 | version "0.1.4"
729 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
730 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
731 |
732 | is-extglob@^2.1.1:
733 | version "2.1.1"
734 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
735 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
736 |
737 | is-fullwidth-code-point@^3.0.0:
738 | version "3.0.0"
739 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
740 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
741 |
742 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
743 | version "4.0.3"
744 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
745 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
746 | dependencies:
747 | is-extglob "^2.1.1"
748 |
749 | is-number@^7.0.0:
750 | version "7.0.0"
751 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
752 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
753 |
754 | is-path-inside@^3.0.3:
755 | version "3.0.3"
756 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
757 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
758 |
759 | isexe@^2.0.0:
760 | version "2.0.0"
761 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
762 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
763 |
764 | jackspeak@^4.0.1:
765 | version "4.0.1"
766 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.0.1.tgz#9fca4ce961af6083e259c376e9e3541431f5287b"
767 | integrity sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==
768 | dependencies:
769 | "@isaacs/cliui" "^8.0.2"
770 | optionalDependencies:
771 | "@pkgjs/parseargs" "^0.11.0"
772 |
773 | js-yaml@^4.1.0:
774 | version "4.1.0"
775 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
776 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
777 | dependencies:
778 | argparse "^2.0.1"
779 |
780 | json-buffer@3.0.1:
781 | version "3.0.1"
782 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
783 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
784 |
785 | json-schema-traverse@^0.4.1:
786 | version "0.4.1"
787 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
788 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
789 |
790 | json-stable-stringify-without-jsonify@^1.0.1:
791 | version "1.0.1"
792 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
793 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
794 |
795 | keyv@^4.5.4:
796 | version "4.5.4"
797 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
798 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
799 | dependencies:
800 | json-buffer "3.0.1"
801 |
802 | levn@^0.4.1:
803 | version "0.4.1"
804 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
805 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
806 | dependencies:
807 | prelude-ls "^1.2.1"
808 | type-check "~0.4.0"
809 |
810 | locate-path@^6.0.0:
811 | version "6.0.0"
812 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
813 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
814 | dependencies:
815 | p-locate "^5.0.0"
816 |
817 | lodash.merge@^4.6.2:
818 | version "4.6.2"
819 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
820 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
821 |
822 | lru-cache@^11.0.0:
823 | version "11.0.0"
824 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.0.tgz#15d93a196f189034d7166caf9fe55e7384c98a21"
825 | integrity sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==
826 |
827 | merge2@^1.3.0, merge2@^1.4.1:
828 | version "1.4.1"
829 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
830 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
831 |
832 | micromatch@^4.0.4:
833 | version "4.0.8"
834 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
835 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
836 | dependencies:
837 | braces "^3.0.3"
838 | picomatch "^2.3.1"
839 |
840 | mime-db@1.52.0:
841 | version "1.52.0"
842 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
843 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
844 |
845 | mime-types@^2.1.12:
846 | version "2.1.35"
847 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
848 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
849 | dependencies:
850 | mime-db "1.52.0"
851 |
852 | minimatch@^10.0.0:
853 | version "10.0.1"
854 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b"
855 | integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==
856 | dependencies:
857 | brace-expansion "^2.0.1"
858 |
859 | minimatch@^3.1.2:
860 | version "3.1.2"
861 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
862 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
863 | dependencies:
864 | brace-expansion "^1.1.7"
865 |
866 | minimatch@^9.0.4:
867 | version "9.0.5"
868 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
869 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
870 | dependencies:
871 | brace-expansion "^2.0.1"
872 |
873 | minipass@^7.1.2:
874 | version "7.1.2"
875 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
876 | integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
877 |
878 | ms@2.1.2:
879 | version "2.1.2"
880 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
881 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
882 |
883 | natural-compare@^1.4.0:
884 | version "1.4.0"
885 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
886 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
887 |
888 | once@^1.3.1, once@^1.4.0:
889 | version "1.4.0"
890 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
891 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
892 | dependencies:
893 | wrappy "1"
894 |
895 | optionator@^0.9.3:
896 | version "0.9.4"
897 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
898 | integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
899 | dependencies:
900 | deep-is "^0.1.3"
901 | fast-levenshtein "^2.0.6"
902 | levn "^0.4.1"
903 | prelude-ls "^1.2.1"
904 | type-check "^0.4.0"
905 | word-wrap "^1.2.5"
906 |
907 | p-limit@^3.0.2:
908 | version "3.1.0"
909 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
910 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
911 | dependencies:
912 | yocto-queue "^0.1.0"
913 |
914 | p-locate@^5.0.0:
915 | version "5.0.0"
916 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
917 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
918 | dependencies:
919 | p-limit "^3.0.2"
920 |
921 | package-json-from-dist@^1.0.0:
922 | version "1.0.0"
923 | resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00"
924 | integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==
925 |
926 | parent-module@^1.0.0:
927 | version "1.0.1"
928 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
929 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
930 | dependencies:
931 | callsites "^3.0.0"
932 |
933 | path-exists@^4.0.0:
934 | version "4.0.0"
935 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
936 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
937 |
938 | path-key@^3.1.0:
939 | version "3.1.1"
940 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
941 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
942 |
943 | path-scurry@^2.0.0:
944 | version "2.0.0"
945 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580"
946 | integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==
947 | dependencies:
948 | lru-cache "^11.0.0"
949 | minipass "^7.1.2"
950 |
951 | path-type@^4.0.0:
952 | version "4.0.0"
953 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
954 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
955 |
956 | pend@~1.2.0:
957 | version "1.2.0"
958 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
959 | integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
960 |
961 | picomatch@^2.3.1:
962 | version "2.3.1"
963 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
964 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
965 |
966 | prelude-ls@^1.2.1:
967 | version "1.2.1"
968 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
969 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
970 |
971 | prettier-linter-helpers@^1.0.0:
972 | version "1.0.0"
973 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
974 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
975 | dependencies:
976 | fast-diff "^1.1.2"
977 |
978 | prettier@^3.3.2:
979 | version "3.3.3"
980 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105"
981 | integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
982 |
983 | proxy-from-env@^1.1.0:
984 | version "1.1.0"
985 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
986 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
987 |
988 | pump@^3.0.0:
989 | version "3.0.0"
990 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
991 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
992 | dependencies:
993 | end-of-stream "^1.1.0"
994 | once "^1.3.1"
995 |
996 | punycode@^2.1.0:
997 | version "2.3.1"
998 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
999 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
1000 |
1001 | queue-microtask@^1.2.2:
1002 | version "1.2.3"
1003 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
1004 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1005 |
1006 | resolve-from@^4.0.0:
1007 | version "4.0.0"
1008 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1009 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1010 |
1011 | reusify@^1.0.4:
1012 | version "1.0.4"
1013 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
1014 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
1015 |
1016 | run-parallel@^1.1.9:
1017 | version "1.2.0"
1018 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
1019 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
1020 | dependencies:
1021 | queue-microtask "^1.2.2"
1022 |
1023 | semver@^7.6.0:
1024 | version "7.6.3"
1025 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
1026 | integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
1027 |
1028 | shebang-command@^2.0.0:
1029 | version "2.0.0"
1030 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
1031 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
1032 | dependencies:
1033 | shebang-regex "^3.0.0"
1034 |
1035 | shebang-regex@^3.0.0:
1036 | version "3.0.0"
1037 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
1038 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
1039 |
1040 | signal-exit@^4.0.1:
1041 | version "4.1.0"
1042 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
1043 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
1044 |
1045 | slash@^3.0.0:
1046 | version "3.0.0"
1047 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
1048 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
1049 |
1050 | "string-width-cjs@npm:string-width@^4.2.0":
1051 | version "4.2.3"
1052 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
1053 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
1054 | dependencies:
1055 | emoji-regex "^8.0.0"
1056 | is-fullwidth-code-point "^3.0.0"
1057 | strip-ansi "^6.0.1"
1058 |
1059 | string-width@^4.1.0:
1060 | version "4.2.3"
1061 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
1062 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
1063 | dependencies:
1064 | emoji-regex "^8.0.0"
1065 | is-fullwidth-code-point "^3.0.0"
1066 | strip-ansi "^6.0.1"
1067 |
1068 | string-width@^5.0.1, string-width@^5.1.2:
1069 | version "5.1.2"
1070 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
1071 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
1072 | dependencies:
1073 | eastasianwidth "^0.2.0"
1074 | emoji-regex "^9.2.2"
1075 | strip-ansi "^7.0.1"
1076 |
1077 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1":
1078 | version "6.0.1"
1079 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1080 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1081 | dependencies:
1082 | ansi-regex "^5.0.1"
1083 |
1084 | strip-ansi@^6.0.0, strip-ansi@^6.0.1:
1085 | version "6.0.1"
1086 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1087 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1088 | dependencies:
1089 | ansi-regex "^5.0.1"
1090 |
1091 | strip-ansi@^7.0.1:
1092 | version "7.1.0"
1093 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
1094 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
1095 | dependencies:
1096 | ansi-regex "^6.0.1"
1097 |
1098 | strip-json-comments@^3.1.1:
1099 | version "3.1.1"
1100 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
1101 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1102 |
1103 | supports-color@^5.3.0:
1104 | version "5.5.0"
1105 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1106 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1107 | dependencies:
1108 | has-flag "^3.0.0"
1109 |
1110 | supports-color@^7.1.0:
1111 | version "7.2.0"
1112 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1113 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1114 | dependencies:
1115 | has-flag "^4.0.0"
1116 |
1117 | synckit@^0.9.1:
1118 | version "0.9.1"
1119 | resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88"
1120 | integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==
1121 | dependencies:
1122 | "@pkgr/core" "^0.1.0"
1123 | tslib "^2.6.2"
1124 |
1125 | text-table@^0.2.0:
1126 | version "0.2.0"
1127 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
1128 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
1129 |
1130 | to-regex-range@^5.0.1:
1131 | version "5.0.1"
1132 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1133 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1134 | dependencies:
1135 | is-number "^7.0.0"
1136 |
1137 | ts-api-utils@^1.3.0:
1138 | version "1.3.0"
1139 | resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
1140 | integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
1141 |
1142 | tslib@^2.6.2:
1143 | version "2.7.0"
1144 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
1145 | integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
1146 |
1147 | type-check@^0.4.0, type-check@~0.4.0:
1148 | version "0.4.0"
1149 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
1150 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
1151 | dependencies:
1152 | prelude-ls "^1.2.1"
1153 |
1154 | typescript@^5.5.4:
1155 | version "5.5.4"
1156 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba"
1157 | integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==
1158 |
1159 | undici-types@~6.19.2:
1160 | version "6.19.8"
1161 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
1162 | integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
1163 |
1164 | uri-js@^4.2.2:
1165 | version "4.4.1"
1166 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
1167 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
1168 | dependencies:
1169 | punycode "^2.1.0"
1170 |
1171 | which@^2.0.1:
1172 | version "2.0.2"
1173 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
1174 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
1175 | dependencies:
1176 | isexe "^2.0.0"
1177 |
1178 | word-wrap@^1.2.5:
1179 | version "1.2.5"
1180 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
1181 | integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
1182 |
1183 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
1184 | version "7.0.0"
1185 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
1186 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
1187 | dependencies:
1188 | ansi-styles "^4.0.0"
1189 | string-width "^4.1.0"
1190 | strip-ansi "^6.0.0"
1191 |
1192 | wrap-ansi@^8.1.0:
1193 | version "8.1.0"
1194 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
1195 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
1196 | dependencies:
1197 | ansi-styles "^6.1.0"
1198 | string-width "^5.0.1"
1199 | strip-ansi "^7.0.1"
1200 |
1201 | wrappy@1:
1202 | version "1.0.2"
1203 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1204 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
1205 |
1206 | yauzl@^2.10.0:
1207 | version "2.10.0"
1208 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
1209 | integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
1210 | dependencies:
1211 | buffer-crc32 "~0.2.3"
1212 | fd-slicer "~1.1.0"
1213 |
1214 | yocto-queue@^0.1.0:
1215 | version "0.1.0"
1216 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
1217 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
1218 |
--------------------------------------------------------------------------------