├── .gitignore
├── .prettierrc
├── README.md
├── package.json
├── packages
└── create-ts-fast
│ ├── README.md
│ ├── assets
│ └── logo.png
│ ├── package.json
│ ├── src
│ ├── index.ts
│ └── utils.ts
│ ├── templates
│ ├── cli
│ │ ├── .github
│ │ │ └── workflows
│ │ │ │ └── ci.yml
│ │ ├── .npmignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── _gitignore
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── __tests__
│ │ │ │ ├── add.test.ts
│ │ │ │ └── subtract.test.ts
│ │ │ ├── add.ts
│ │ │ ├── index.ts
│ │ │ └── subtract.ts
│ │ ├── tsconfig.json
│ │ ├── tsup.config.ts
│ │ └── vitest.config.ts
│ ├── react-hooks
│ │ ├── .github
│ │ │ └── workflows
│ │ │ │ └── ci.yml
│ │ ├── .npmignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── _gitignore
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── __tests__
│ │ │ │ ├── use-counter.test.ts
│ │ │ │ └── use-toggle.test.ts
│ │ │ ├── index.ts
│ │ │ ├── use-counter.ts
│ │ │ └── use-toggle.ts
│ │ ├── tsconfig.json
│ │ ├── tsup.config.ts
│ │ └── vitest.config.ts
│ └── universal
│ │ ├── .github
│ │ └── workflows
│ │ │ └── ci.yml
│ │ ├── .npmignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── _gitignore
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── src
│ │ ├── __tests__
│ │ │ ├── add.test.ts
│ │ │ └── subtract.test.ts
│ │ ├── add.ts
│ │ ├── index.ts
│ │ └── subtract.ts
│ │ ├── tsconfig.json
│ │ ├── tsup.config.ts
│ │ └── vitest.config.ts
│ ├── tsconfig.json
│ └── tsup.config.ts
├── pnpm-lock.yaml
└── pnpm-workspace.yaml
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | .pnpm-debug.log*
9 |
10 | # Diagnostic reports (https://nodejs.org/api/report.html)
11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12 |
13 | # Runtime data
14 | pids
15 | *.pid
16 | *.seed
17 | *.pid.lock
18 |
19 | # Directory for instrumented libs generated by jscoverage/JSCover
20 | lib-cov
21 |
22 | # Coverage directory used by tools like istanbul
23 | coverage
24 | *.lcov
25 |
26 | # nyc test coverage
27 | .nyc_output
28 |
29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30 | .grunt
31 |
32 | # Bower dependency directory (https://bower.io/)
33 | bower_components
34 |
35 | # node-waf configuration
36 | .lock-wscript
37 |
38 | # Compiled binary addons (https://nodejs.org/api/addons.html)
39 | build/Release
40 |
41 | # Dependency directories
42 | node_modules
43 | jspm_packages/
44 |
45 | # Snowpack dependency directory (https://snowpack.dev/)
46 | web_modules/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Optional stylelint cache
58 | .stylelintcache
59 |
60 | # Microbundle cache
61 | .rpt2_cache/
62 | .rts2_cache_cjs/
63 | .rts2_cache_es/
64 | .rts2_cache_umd/
65 |
66 | # Optional REPL history
67 | .node_repl_history
68 |
69 | # Output of 'npm pack'
70 | *.tgz
71 |
72 | # Yarn Integrity file
73 | .yarn-integrity
74 |
75 | # dotenv environment variable files
76 | .env
77 | .env.development.local
78 | .env.test.local
79 | .env.production.local
80 | .env.local
81 |
82 | # parcel-bundler cache (https://parceljs.org/)
83 | .cache
84 | .parcel-cache
85 |
86 | # Next.js build output
87 | .next
88 | out
89 |
90 | # Nuxt.js build / generate output
91 | .nuxt
92 | dist
93 |
94 | # Gatsby files
95 | .cache/
96 | # Comment in the public line in if your project uses Gatsby and not Next.js
97 | # https://nextjs.org/blog/next-9-1#public-directory-support
98 | # public
99 |
100 | # vuepress build output
101 | .vuepress/dist
102 |
103 | # vuepress v2.x temp and cache directory
104 | .temp
105 | .cache
106 |
107 | # Docusaurus cache and generated files
108 | .docusaurus
109 |
110 | # Serverless directories
111 | .serverless/
112 |
113 | # FuseBox cache
114 | .fusebox/
115 |
116 | # DynamoDB Local files
117 | .dynamodb/
118 |
119 | # TernJS port file
120 | .tern-port
121 |
122 | # Stores VSCode versions used for testing VSCode extensions
123 | .vscode-test
124 |
125 | # yarn v2
126 | .yarn/cache
127 | .yarn/unplugged
128 | .yarn/build-state.yml
129 | .yarn/install-state.gz
130 | .pnp.*
131 |
132 | # create-ts-fast
133 | __scaffold__
134 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "bracketSameLine": true,
3 | "printWidth": 80,
4 | "proseWrap": "never",
5 | "singleQuote": true,
6 | "trailingComma": "all"
7 | }
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ./packages/create-ts-fast/README.md
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@yangshun/create-ts-fast",
3 | "version": "0.0.0",
4 | "description": "Create TypeScript packages really fast",
5 | "author": "yangshun",
6 | "scripts": {
7 | "format": "prettier --write \"**/*.{ts,tsx,js,jsx,md,mdx}\""
8 | },
9 | "keywords": [
10 | "typescript",
11 | "npm",
12 | "library",
13 | "package",
14 | "boilerplate"
15 | ],
16 | "license": "MIT",
17 | "devDependencies": {
18 | "prettier": "^3.4.2"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # Create TypeScript Fast
4 |
5 | Create React App but for creating TypeScript-based packages to be published to the npm registry.
6 |
7 | ```sh
8 | npm create ts-fast@latest
9 | ```
10 |
11 | Supported templates:
12 |
13 | - **Universal utility**: Platform-agnostic utilities intended to run on both server and client, e.g. [`axios`](https://github.com/axios/axios), [`lodash`](https://github.com/lodash/lodash), [`clsx`](https://github.com/lukeed/clsx), [`zod`](https://github.com/colinhacks/zod)
14 | - **Command line utility**: Runs in the terminal, e.g. [`eslint`](https://github.com/eslint/eslint), [`vite`](https://github.com/vitejs/vite), [`jest`](https://github.com/jestjs/jest)
15 | - **React hooks**: Custom React hooks, e.g. [`react-use`](https://github.com/streamich/react-use), [`usehooks-ts`](https://github.com/juliencrn/usehooks-ts)
16 |
17 | ## Features
18 |
19 | Contains just enough features to help you author and publish TypeScript-based npm packages in under 15 minutes. Features include:
20 |
21 | - **Lean and mean**: **Zero `dependencies`, minimal `devDependencies`**
22 | - [TypeScript](https://www.typescriptlang.org/): Modern, de facto flavor of JavaScript
23 | - [Vitest](https://vitest.dev/): Next generation testing framework with out-of-the-box TypeScript support. Easily replace this with Jest should you wish to
24 | - [tsup](https://tsup.egoist.dev/): Bundles your TypeScript code, powered by [esbuild](https://esbuild.github.io/)
25 | - **Unopinionated**: Includes only the necessary dependencies to get you started
26 | - **Types generation**: Type declaration files are automatically generated
27 | - **Continuous integration**: Test, typecheck, and build on every commit / pull request. Uses GitHub actions
28 |
29 | ### Where's pnpm, ESLint, Prettier, and <trendy library>?
30 |
31 | The project is unopinionated about the following:
32 |
33 | - Alternative package managers, e.g. pnpm, Yarn
34 | - Linting, e.g. ESLint, Biome, oxlint
35 | - Formatting, e.g Prettier, Biome
36 | - Alternative runtimes e.g. Bun, Deno
37 |
38 | Why? Because no matter the choice, someone will have a different opinion and want to use something else, so we rather leave it to you. Moreover, these tools can be easily added yourself.
39 |
40 | If/when one of them becomes the standard (e.g. TypeScript), we can then include them as a default.
41 |
42 | ## Getting started
43 |
44 | Run the scaffolding command, use the scaffolded project as a **starting point** and **customize** it to your liking.
45 |
46 | Start by running the appropriate command and answering a few questions:
47 |
48 | ### npm
49 |
50 | ```sh
51 | npm create ts-fast@latest
52 | ```
53 |
54 | ### Yarn
55 |
56 | ```sh
57 | yarn create ts-fast
58 | ```
59 |
60 | ### pnpm
61 |
62 | ```sh
63 | pnpm create ts-fast@latest
64 | ```
65 |
66 | ### bun
67 |
68 | ```sh
69 | bun create ts-fast@latest
70 | ```
71 |
72 | ### Scaffolded project structure
73 |
74 | Scaffolded projects have these base files:
75 |
76 | ```
77 | ├── .github/workflows/ci.yml
78 | ├── dist
79 | ├── src
80 | │ ├── __tests__
81 | │ └── index.ts
82 | ├── package.json
83 | ├── README.md
84 | ├── tsconfig.json
85 | ├── tsup.config.ts
86 | └── vitest.config.ts
87 | ```
88 |
89 | ### Next steps
90 |
91 | 1. Implement your library within `src`. Add tests if you take pride in being a developer
92 | 2. Modify `package.json` – update `name`, `version`, `author` and any other relevant fields
93 | 3. Update `README.md`
94 | 4. `npm run publish`. You will have to login to npm if you aren't already logged in
95 | 5. Profit!
96 |
97 | ## Roadmap
98 |
99 | - [x] Scaffolding command similar to `create-vite` and `create-react-app`
100 | - [x] Multiple output formats (esm, cjs)
101 | - [ ] Choose between tools (Jest vs Vitest)
102 |
103 | ## Credits and inspiration
104 |
105 | - [create-vite](https://github.com/vitejs/vite/tree/main/packages/create-vite)
106 | - [create-t3-app](https://github.com/t3-oss/create-t3-app)
107 | - [tsup](https://github.com/egoist/tsup)
108 | - [microbundle](https://github.com/developit/microbundle)
109 | - [tsdx](https://github.com/jaredpalmer/tsdx)
110 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yangshun/create-ts-fast/3d3f734e98e3faabebb4bec1e2b6b019059e738e/packages/create-ts-fast/assets/logo.png
--------------------------------------------------------------------------------
/packages/create-ts-fast/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "create-ts-fast",
3 | "version": "0.0.13",
4 | "description": "Create TypeScript packages really fast",
5 | "author": "yangshun",
6 | "license": "MIT",
7 | "type": "module",
8 | "exports": "./dist/index.js",
9 | "bin": "dist/index.js",
10 | "files": [
11 | "dist",
12 | "templates"
13 | ],
14 | "scripts": {
15 | "build": "tsup",
16 | "dev": "tsup --watch",
17 | "typecheck": "tsc",
18 | "verify": "pnpm run typecheck && pnpm run build",
19 | "clean": "rimraf dist __scaffold__",
20 | "prepublishOnly": "pnpm verify"
21 | },
22 | "keywords": [
23 | "typescript",
24 | "npm",
25 | "library",
26 | "package",
27 | "boilerplate"
28 | ],
29 | "dependencies": {
30 | "@clack/prompts": "^0.9.1",
31 | "minimist": "^1.2.8"
32 | },
33 | "devDependencies": {
34 | "@types/minimist": "^1.2.5",
35 | "@types/node": "^22.10.7",
36 | "@types/prompts": "^2.4.9",
37 | "rimraf": "^6.0.1",
38 | "tsup": "^8.3.5",
39 | "typescript": "^5.7.3"
40 | },
41 | "engines": {
42 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/src/index.ts:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | // Stolen from https://github.com/vitejs/vite/blob/main/packages/create-vite/src/index.ts
4 | import minimist from 'minimist';
5 | import { execSync } from 'node:child_process';
6 | import fs from 'node:fs';
7 | import path from 'node:path';
8 | import { fileURLToPath } from 'node:url';
9 | import * as p from '@clack/prompts';
10 | import {
11 | copy,
12 | formatTargetDir,
13 | isEmptyDir,
14 | isValidPackageName,
15 | pkgFromUserAgent,
16 | rmdirPreserveGit,
17 | toValidPackageName,
18 | } from './utils';
19 |
20 | const argv = minimist<{
21 | template?: string;
22 | }>(process.argv.slice(2), {
23 | default: { help: false },
24 | alias: { t: 'template' },
25 | string: ['_'],
26 | });
27 | const cwd = process.cwd();
28 |
29 | const renameFiles: Record = {
30 | _gitignore: '.gitignore',
31 | };
32 |
33 | const defaultTargetDir = 'ts-fast-project';
34 |
35 | // Sync with templates dir
36 | type Template = 'universal' | 'cli' | 'react-hooks';
37 | const templateOptions: Record<
38 | Template,
39 | Readonly<{ label: string; value: Template; hint: string }>
40 | > = {
41 | universal: {
42 | label: 'Universal utility',
43 | value: 'universal',
44 | hint: 'Runs on both client and server, e.g. axios, clsx, lodash, zod',
45 | },
46 | cli: {
47 | label: 'Command line utility',
48 | value: 'cli',
49 | hint: 'Runs in the terminal, e.g. eslint, tsc, vite, jest',
50 | },
51 | 'react-hooks': {
52 | label: 'React hooks',
53 | value: 'react-hooks',
54 | hint: 'Custom React hooks, e.g. react-use, usehooks-ts',
55 | },
56 | };
57 | const templateValues = Object.values(templateOptions).map(({ value }) => value);
58 |
59 | type PromptResults = {
60 | overwrite: 'no' | 'yes' | 'ignore';
61 | packageName: string;
62 | template: string;
63 | };
64 |
65 | async function main() {
66 | const argTargetDir = formatTargetDir(argv._[0]);
67 | const argTemplate = argv.template || argv.t;
68 |
69 | function normalizeTargetDir(dir: string) {
70 | return process.env.npm_lifecycle_event === 'dev'
71 | ? path.join('__scaffold__', dir)
72 | : path.join(dir);
73 | }
74 |
75 | let targetDir = normalizeTargetDir(argTargetDir || defaultTargetDir);
76 | function getProjectName() {
77 | return path.basename(path.resolve(targetDir));
78 | }
79 |
80 | let results: PromptResults = {
81 | overwrite: 'no',
82 | packageName: getProjectName(),
83 | template: '',
84 | };
85 |
86 | try {
87 | if (!argTargetDir) {
88 | const targetDirResponse = await p.text({
89 | message: 'Enter your project name',
90 | placeholder: 'my-ts-project',
91 | });
92 |
93 | if (p.isCancel(targetDirResponse)) {
94 | p.cancel('Operation cancelled.');
95 | process.exit(1);
96 | }
97 |
98 | targetDir = normalizeTargetDir(
99 | formatTargetDir(targetDirResponse) || defaultTargetDir,
100 | );
101 | }
102 |
103 | if (fs.existsSync(targetDir) && !isEmptyDir(targetDir)) {
104 | const overwriteResponse = await p.select({
105 | message:
106 | (targetDir === '.'
107 | ? 'Current directory'
108 | : `Target directory "${targetDir}"`) +
109 | ' is not empty. Please choose how to proceed:',
110 | initialValue: results.overwrite,
111 | options: [
112 | {
113 | label: 'Cancel operation',
114 | value: 'no',
115 | },
116 | {
117 | label: 'Remove existing files and continue',
118 | value: 'yes',
119 | },
120 | {
121 | label: 'Ignore files and continue',
122 | value: 'ignore',
123 | },
124 | ],
125 | });
126 |
127 | if (p.isCancel(overwriteResponse) || overwriteResponse === 'no') {
128 | p.cancel('Operation cancelled.');
129 | process.exit(1);
130 | }
131 |
132 | results.overwrite = overwriteResponse;
133 | }
134 |
135 | if (!isValidPackageName(getProjectName())) {
136 | const packageNameResponse = await p.text({
137 | message: 'Package name',
138 | initialValue: toValidPackageName(getProjectName()),
139 | validate: (pkgName) =>
140 | isValidPackageName(pkgName) ? undefined : 'Invalid package.json name',
141 | });
142 |
143 | if (p.isCancel(packageNameResponse)) {
144 | p.cancel('Operation cancelled.');
145 | process.exit(1);
146 | }
147 |
148 | results.packageName = packageNameResponse;
149 | }
150 |
151 | if (!argTemplate || !templateValues.includes(argTemplate)) {
152 | const templateResponse = await p.select({
153 | message:
154 | typeof argTemplate === 'string' &&
155 | !templateValues.includes(argTemplate as Template)
156 | ? `"${argTemplate}" isn't a valid template. Please choose from the following:`
157 | : 'Select a template:',
158 | options: Object.values(templateOptions),
159 | });
160 |
161 | if (p.isCancel(templateResponse)) {
162 | p.cancel('Operation cancelled.');
163 | process.exit(1);
164 | }
165 |
166 | results.template = templateResponse;
167 | }
168 | } catch (cancelled: any) {
169 | p.log.error(cancelled.message);
170 | return;
171 | }
172 |
173 | // User choice associated with prompts
174 | const { template, overwrite, packageName } = results;
175 |
176 | const root = path.join(cwd, targetDir);
177 |
178 | if (overwrite === 'yes') {
179 | rmdirPreserveGit(root);
180 | } else if (!fs.existsSync(root)) {
181 | fs.mkdirSync(root, { recursive: true });
182 | }
183 |
184 | p.log.info(`Scaffolding project in ${root}...`);
185 |
186 | const templateDir = path.resolve(
187 | fileURLToPath(import.meta.url),
188 | '../..',
189 | 'templates',
190 | template,
191 | );
192 |
193 | function write(file: string, content?: string) {
194 | const targetPath = path.join(root, renameFiles[file] ?? file);
195 | if (content) {
196 | fs.writeFileSync(targetPath, content);
197 | } else {
198 | copy(path.join(templateDir, file), targetPath);
199 | }
200 | }
201 |
202 | // Copy files from template to target dir
203 | const files = fs.readdirSync(templateDir);
204 | for (const file of files.filter((file_) => file_ !== 'package.json')) {
205 | write(file);
206 | }
207 |
208 | // Write personalized package.json to target dir
209 | const pkg = JSON.parse(
210 | fs.readFileSync(path.join(templateDir, `package.json`), 'utf-8'),
211 | );
212 |
213 | const pkgName = packageName || getProjectName();
214 | pkg.name = pkgName;
215 |
216 | pkg.version = '0.0.0';
217 |
218 | // Attempt to fill author field
219 | try {
220 | const name = execSync('git config user.name').toString().trim();
221 | const email = execSync('git config user.email').toString().trim();
222 |
223 | if (name) {
224 | pkg.author = email ? `${name} <${email}>` : name;
225 | }
226 | } catch {
227 | // Do nothing
228 | }
229 |
230 | write('package.json', JSON.stringify(pkg, null, 2) + '\n');
231 |
232 | const cdProjectName = path.relative(cwd, root);
233 | p.log.success('Done. Now run:');
234 | console.log();
235 |
236 | // Print installation commands
237 | if (root !== cwd) {
238 | console.log(
239 | ` cd ${
240 | cdProjectName.includes(' ') ? `"${cdProjectName}"` : cdProjectName
241 | }`,
242 | );
243 | }
244 |
245 | const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent);
246 | const pkgManager = pkgInfo ? pkgInfo.name : 'npm';
247 | switch (pkgManager) {
248 | case 'yarn':
249 | console.log(' yarn');
250 | console.log(' yarn dev');
251 | break;
252 | default:
253 | console.log(` ${pkgManager} install`);
254 | console.log(` ${pkgManager} run dev`);
255 | break;
256 | }
257 |
258 | process.exit(0);
259 | }
260 |
261 | try {
262 | await main();
263 | } catch (err) {
264 | p.log.error('Aborting installation...');
265 | if (err instanceof Error) {
266 | p.log.error(err.message);
267 | } else {
268 | p.log.error(
269 | 'An unknown error has occurred. Please open a GitHub issue with the following:',
270 | );
271 | p.log.error(String(err));
272 | }
273 |
274 | process.exit(1);
275 | }
276 |
277 | export {};
278 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/src/utils.ts:
--------------------------------------------------------------------------------
1 | import fs from 'node:fs';
2 | import path from 'node:path';
3 |
4 | export function formatTargetDir(targetDir: string | undefined) {
5 | return targetDir?.trim().replace(/\/+$/g, '');
6 | }
7 |
8 | function copyDir(srcDir: string, destDir: string) {
9 | fs.mkdirSync(destDir, { recursive: true });
10 | for (const file of fs.readdirSync(srcDir)) {
11 | const srcFile = path.resolve(srcDir, file);
12 | const destFile = path.resolve(destDir, file);
13 | copy(srcFile, destFile);
14 | }
15 | }
16 |
17 | export function copy(src: string, dest: string) {
18 | const stat = fs.statSync(src);
19 | if (stat.isDirectory()) {
20 | copyDir(src, dest);
21 | } else {
22 | fs.copyFileSync(src, dest);
23 | }
24 | }
25 |
26 | export function isValidPackageName(projectName: string) {
27 | return /^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(
28 | projectName,
29 | );
30 | }
31 |
32 | export function toValidPackageName(projectName: string) {
33 | return projectName
34 | .trim()
35 | .toLowerCase()
36 | .replace(/\s+/g, '-')
37 | .replace(/^[._]/, '')
38 | .replace(/[^a-z\d\-~]+/g, '-');
39 | }
40 |
41 | export function isEmptyDir(path: string) {
42 | const files = fs.readdirSync(path);
43 | return files.length === 0 || (files.length === 1 && files[0] === '.git');
44 | }
45 |
46 | export function pkgFromUserAgent(userAgent: string | undefined) {
47 | if (!userAgent) {
48 | return undefined;
49 | }
50 |
51 | const pkgSpec = userAgent.split(' ')[0];
52 | const pkgSpecArr = pkgSpec.split('/');
53 |
54 | return {
55 | name: pkgSpecArr[0],
56 | version: pkgSpecArr[1],
57 | };
58 | }
59 |
60 | export function rmdirPreserveGit(dir: string) {
61 | if (!fs.existsSync(dir)) {
62 | return;
63 | }
64 |
65 | for (const file of fs.readdirSync(dir)) {
66 | if (file === '.git') {
67 | continue;
68 | }
69 |
70 | fs.rmSync(path.resolve(dir, file), { recursive: true, force: true });
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: Continuous integration
2 | on:
3 | push:
4 | branches:
5 | - main
6 | pull_request:
7 | branches:
8 | - main
9 | jobs:
10 | typecheck:
11 | name: Typecheck
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v3
15 | - uses: actions/setup-node@v3
16 | with:
17 | node-version: 22
18 | - run: npm install
19 | - run: npm run typecheck
20 | tests:
21 | name: Tests
22 | runs-on: ubuntu-latest
23 | steps:
24 | - uses: actions/checkout@v3
25 | - uses: actions/setup-node@v3
26 | with:
27 | node-version: 22
28 | - run: npm install
29 | - run: npm test
30 | build:
31 | name: Build
32 | runs-on: ubuntu-latest
33 | steps:
34 | - uses: actions/checkout@v3
35 | - uses: actions/setup-node@v3
36 | with:
37 | node-version: 22
38 | - run: npm install
39 | - run: npm run build
40 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | package-lock.json
3 | dist
4 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Yangshun Tay
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/README.md:
--------------------------------------------------------------------------------
1 | # Create TypeScript Fast
2 |
3 | This project is generated by [create-ts-fast](https://github.com/yangshun/create-ts-fast), a tool for scaffolding npm libraries written in TypeScript.
4 |
5 | ## Directory walkthrough
6 |
7 | The project has the following files and directories:
8 |
9 | ```
10 | ├── .github/workflows/ci.yml
11 | ├── dist
12 | ├── src
13 | │ ├── __tests__
14 | │ └── index.ts
15 | ├── package.json
16 | ├── README.md
17 | ├── tsconfig.json
18 | ├── tsup.config.ts
19 | └── vitest.config.ts
20 | ```
21 |
22 | - `src`: Contains source code
23 | - `__tests__`: Directory containing tests. Code within `__tests__` will be ignored during build
24 | - `index.ts`: Main file
25 | - `package.json`: Self explanatory
26 | - `README.md`: Project's README file. Contents will be displayed on the package homepage on npmjs.com and repo homepage of github.com
27 | - `tsconfig.json`: Base TypeScript config. Used when developing
28 | - `tsup.config.json`: tsup config. Refer to its [documentation for customization](https://tsup.egoist.dev/#using-custom-configuration)
29 | - `vitest.config.ts`: Vitest config. Refer to its [documentation for customization](https://vitest.dev/config/)
30 | - `dist`: Directory containing generated files. The contents of this directory is published
31 | - `.github/workflows/ci.yml`: GitHub action that runs typechecks, tests and build
32 |
33 | ## Next steps
34 |
35 | 1. Implement your library within `src`. Add tests if you take pride in being a developer
36 | 2. Modify `package.json` – update `name`, `version`, `author` and any other relevant fields
37 | 3. Update `README.md`
38 | 4. `npm publish`. You will have to login to npm if you aren't already logged in
39 | 5. Profit!
40 |
41 | ## Commands
42 |
43 | - `npm run typecheck`: Checks code within `src` for TypeScript issues. No artifacts are generated
44 | - `npm test`: Single test run using Vitest
45 | - `npm run test:watch`: Watch mode. Runs all test suites and reruns them when there are changes
46 | - `npm run build`: Compiles `src` into CommonJS and ES modules (along with TypeScript declaration files) into the `dist` directory
47 | - `npm run verify`: Run typechecks + tests + build. Suitable when developing and in CI environments to ensure all checks are valid
48 | - `npm run clean`: Deletes the `dist` directory
49 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/_gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | .pnpm-debug.log*
9 |
10 | # Diagnostic reports (https://nodejs.org/api/report.html)
11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12 |
13 | # Runtime data
14 | pids
15 | *.pid
16 | *.seed
17 | *.pid.lock
18 |
19 | # Directory for instrumented libs generated by jscoverage/JSCover
20 | lib-cov
21 |
22 | # Coverage directory used by tools like istanbul
23 | coverage
24 | *.lcov
25 |
26 | # nyc test coverage
27 | .nyc_output
28 |
29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30 | .grunt
31 |
32 | # Bower dependency directory (https://bower.io/)
33 | bower_components
34 |
35 | # node-waf configuration
36 | .lock-wscript
37 |
38 | # Compiled binary addons (https://nodejs.org/api/addons.html)
39 | build/Release
40 |
41 | # Dependency directories
42 | node_modules/
43 | jspm_packages/
44 |
45 | # Snowpack dependency directory (https://snowpack.dev/)
46 | web_modules/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Optional stylelint cache
58 | .stylelintcache
59 |
60 | # Microbundle cache
61 | .rpt2_cache/
62 | .rts2_cache_cjs/
63 | .rts2_cache_es/
64 | .rts2_cache_umd/
65 |
66 | # Optional REPL history
67 | .node_repl_history
68 |
69 | # Output of 'npm pack'
70 | *.tgz
71 |
72 | # Yarn Integrity file
73 | .yarn-integrity
74 |
75 | # dotenv environment variable files
76 | .env
77 | .env.development.local
78 | .env.test.local
79 | .env.production.local
80 | .env.local
81 |
82 | # parcel-bundler cache (https://parceljs.org/)
83 | .cache
84 | .parcel-cache
85 |
86 | # Next.js build output
87 | .next
88 | out
89 |
90 | # Nuxt.js build / generate output
91 | .nuxt
92 | dist
93 |
94 | # Gatsby files
95 | .cache/
96 | # Comment in the public line in if your project uses Gatsby and not Next.js
97 | # https://nextjs.org/blog/next-9-1#public-directory-support
98 | # public
99 |
100 | # vuepress build output
101 | .vuepress/dist
102 |
103 | # vuepress v2.x temp and cache directory
104 | .temp
105 | .cache
106 |
107 | # Docusaurus cache and generated files
108 | .docusaurus
109 |
110 | # Serverless directories
111 | .serverless/
112 |
113 | # FuseBox cache
114 | .fusebox/
115 |
116 | # DynamoDB Local files
117 | .dynamodb/
118 |
119 | # TernJS port file
120 | .tern-port
121 |
122 | # Stores VSCode versions used for testing VSCode extensions
123 | .vscode-test
124 |
125 | # yarn v2
126 | .yarn/cache
127 | .yarn/unplugged
128 | .yarn/build-state.yml
129 | .yarn/install-state.gz
130 | .pnp.*
131 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ts-fast-cli",
3 | "version": "0.0.0",
4 | "description": "Boilerplate for building CLI packages in TypeScript",
5 | "author": "yangshun",
6 | "license": "MIT",
7 | "type": "module",
8 | "bin": "dist/index.js",
9 | "files": [
10 | "dist"
11 | ],
12 | "sideEffects": false,
13 | "scripts": {
14 | "build": "tsup",
15 | "dev": "tsup --watch",
16 | "clean": "rimraf dist",
17 | "test": "vitest run",
18 | "test:watch": "vitest",
19 | "typecheck": "tsc",
20 | "verify": "npm run typecheck && npm run test && npm run build",
21 | "prepublishOnly": "npm run verify"
22 | },
23 | "dependencies": {
24 | "@clack/prompts": "^0.9.1"
25 | },
26 | "devDependencies": {
27 | "@types/node": "^22.12.0",
28 | "rimraf": "^6.0.1",
29 | "tsup": "^8.3.6",
30 | "typescript": "^5.7.3",
31 | "vitest": "^3.0.2"
32 | },
33 | "engines": {
34 | "node": "^20.0.0 || >=22.0.0"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/src/__tests__/add.test.ts:
--------------------------------------------------------------------------------
1 | import { add } from '../add';
2 |
3 | test('add', () => {
4 | expect(add(1, 2)).toBe(3);
5 | });
6 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/src/__tests__/subtract.test.ts:
--------------------------------------------------------------------------------
1 | import { subtract } from '../subtract';
2 |
3 | test('subtract', () => {
4 | expect(subtract(3, 2)).toBe(1);
5 | });
6 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/src/add.ts:
--------------------------------------------------------------------------------
1 | export function add(a: number, b: number): number {
2 | return a + b;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/src/index.ts:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | import { cancel, group, log, select, text } from '@clack/prompts';
4 |
5 | import { add } from './add';
6 | import { subtract } from './subtract';
7 |
8 | // Docs: https://github.com/bombshell-dev/clack/tree/main/packages/prompts
9 | const results = await group(
10 | {
11 | operation: () =>
12 | select({
13 | message: `Do you want to add or subtract?`,
14 | options: [
15 | { value: 'add', label: 'Add' },
16 | { value: 'subtract', label: 'Subtract' },
17 | ],
18 | }),
19 | firstNumber: () => text({ message: 'Enter the first number' }),
20 | secondNumber: () => text({ message: 'Enter the second number' }),
21 | },
22 | {
23 | onCancel: () => {
24 | cancel('Operation cancelled.');
25 | process.exit(0);
26 | },
27 | },
28 | );
29 |
30 | log.success(
31 | `The answer is ${
32 | results.operation === 'add'
33 | ? add(+results.firstNumber, +results.secondNumber)
34 | : subtract(+results.firstNumber, +results.secondNumber)
35 | }!`,
36 | );
37 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/src/subtract.ts:
--------------------------------------------------------------------------------
1 | export function subtract(a: number, b: number): number {
2 | return a - b;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "strict": true,
4 | "module": "ESNext",
5 | "moduleResolution": "bundler",
6 | "target": "ES2020",
7 | "skipLibCheck": true,
8 | "esModuleInterop": true,
9 | "noEmit": true,
10 | "types": ["vitest/globals"]
11 | },
12 | "include": ["src", "tsup.config.ts", "vitest.config.ts"]
13 | }
14 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'tsup';
2 |
3 | const isDev = process.env.npm_lifecycle_event === 'dev';
4 |
5 | export default defineConfig({
6 | clean: true,
7 | entry: ['./src/index.ts'],
8 | format: ['esm'],
9 | minify: !isDev,
10 | target: 'esnext',
11 | onSuccess: isDev ? 'node dist/index.js' : undefined,
12 | });
13 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/cli/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitest/config';
2 |
3 | export default defineConfig({
4 | test: {
5 | globals: true,
6 | },
7 | });
8 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: Continuous integration
2 | on:
3 | push:
4 | branches:
5 | - main
6 | pull_request:
7 | branches:
8 | - main
9 | jobs:
10 | typecheck:
11 | name: Typecheck
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v3
15 | - uses: actions/setup-node@v3
16 | with:
17 | node-version: 22
18 | - run: npm install
19 | - run: npm run typecheck
20 | tests:
21 | name: Tests
22 | runs-on: ubuntu-latest
23 | steps:
24 | - uses: actions/checkout@v3
25 | - uses: actions/setup-node@v3
26 | with:
27 | node-version: 22
28 | - run: npm install
29 | - run: npm test
30 | build:
31 | name: Build
32 | runs-on: ubuntu-latest
33 | steps:
34 | - uses: actions/checkout@v3
35 | - uses: actions/setup-node@v3
36 | with:
37 | node-version: 22
38 | - run: npm install
39 | - run: npm run build
40 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | package-lock.json
3 | dist
4 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Yangshun Tay
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/README.md:
--------------------------------------------------------------------------------
1 | # Create TypeScript Fast
2 |
3 | This project is generated by [create-ts-fast](https://github.com/yangshun/create-ts-fast), a tool for scaffolding npm libraries written in TypeScript.
4 |
5 | ## Directory walkthrough
6 |
7 | The project has the following files and directories:
8 |
9 | ```
10 | ├── .github/workflows/ci.yml
11 | ├── dist
12 | ├── src
13 | │ ├── __tests__
14 | │ └── index.ts
15 | ├── package.json
16 | ├── README.md
17 | ├── tsconfig.json
18 | ├── tsup.config.ts
19 | └── vitest.config.ts
20 | ```
21 |
22 | - `src`: Contains source code
23 | - `__tests__`: Directory containing tests. Code within `__tests__` will be ignored during build
24 | - `index.ts`: Main file
25 | - `package.json`: Self explanatory
26 | - `README.md`: Project's README file. Contents will be displayed on the package homepage on npmjs.com and repo homepage of github.com
27 | - `tsconfig.json`: Base TypeScript config. Used when developing
28 | - `tsup.config.json`: tsup config. Refer to its [documentation for customization](https://tsup.egoist.dev/#using-custom-configuration)
29 | - `vitest.config.ts`: Vitest config. Refer to its [documentation for customization](https://vitest.dev/config/)
30 | - `dist`: Directory containing generated files. The contents of this directory is published
31 | - `.github/workflows/ci.yml`: GitHub action that runs typechecks, tests and build
32 |
33 | ## Next steps
34 |
35 | 1. Implement your library within `src`. Add tests if you take pride in being a developer
36 | 2. Modify `package.json` – update `name`, `version`, `author` and any other relevant fields
37 | 3. Update `README.md`
38 | 4. `npm publish`. You will have to login to npm if you aren't already logged in
39 | 5. Profit!
40 |
41 | ## Commands
42 |
43 | - `npm run typecheck`: Checks code within `src` for TypeScript issues. No artifacts are generated
44 | - `npm test`: Single test run using Vitest
45 | - `npm run test:watch`: Watch mode. Runs all test suites and reruns them when there are changes
46 | - `npm run build`: Compiles `src` into CommonJS and ES modules (along with TypeScript declarations files) into the `dist` directory
47 | - `npm run verify`: Run typechecks + tests + build. Suitable when developing and in CI environments to ensure all checks are valid
48 | - `npm run clean`: Deletes the `dist` directory
49 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/_gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | .pnpm-debug.log*
9 |
10 | # Diagnostic reports (https://nodejs.org/api/report.html)
11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12 |
13 | # Runtime data
14 | pids
15 | *.pid
16 | *.seed
17 | *.pid.lock
18 |
19 | # Directory for instrumented libs generated by jscoverage/JSCover
20 | lib-cov
21 |
22 | # Coverage directory used by tools like istanbul
23 | coverage
24 | *.lcov
25 |
26 | # nyc test coverage
27 | .nyc_output
28 |
29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30 | .grunt
31 |
32 | # Bower dependency directory (https://bower.io/)
33 | bower_components
34 |
35 | # node-waf configuration
36 | .lock-wscript
37 |
38 | # Compiled binary addons (https://nodejs.org/api/addons.html)
39 | build/Release
40 |
41 | # Dependency directories
42 | node_modules/
43 | jspm_packages/
44 |
45 | # Snowpack dependency directory (https://snowpack.dev/)
46 | web_modules/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Optional stylelint cache
58 | .stylelintcache
59 |
60 | # Microbundle cache
61 | .rpt2_cache/
62 | .rts2_cache_cjs/
63 | .rts2_cache_es/
64 | .rts2_cache_umd/
65 |
66 | # Optional REPL history
67 | .node_repl_history
68 |
69 | # Output of 'npm pack'
70 | *.tgz
71 |
72 | # Yarn Integrity file
73 | .yarn-integrity
74 |
75 | # dotenv environment variable files
76 | .env
77 | .env.development.local
78 | .env.test.local
79 | .env.production.local
80 | .env.local
81 |
82 | # parcel-bundler cache (https://parceljs.org/)
83 | .cache
84 | .parcel-cache
85 |
86 | # Next.js build output
87 | .next
88 | out
89 |
90 | # Nuxt.js build / generate output
91 | .nuxt
92 | dist
93 |
94 | # Gatsby files
95 | .cache/
96 | # Comment in the public line in if your project uses Gatsby and not Next.js
97 | # https://nextjs.org/blog/next-9-1#public-directory-support
98 | # public
99 |
100 | # vuepress build output
101 | .vuepress/dist
102 |
103 | # vuepress v2.x temp and cache directory
104 | .temp
105 | .cache
106 |
107 | # Docusaurus cache and generated files
108 | .docusaurus
109 |
110 | # Serverless directories
111 | .serverless/
112 |
113 | # FuseBox cache
114 | .fusebox/
115 |
116 | # DynamoDB Local files
117 | .dynamodb/
118 |
119 | # TernJS port file
120 | .tern-port
121 |
122 | # Stores VSCode versions used for testing VSCode extensions
123 | .vscode-test
124 |
125 | # yarn v2
126 | .yarn/cache
127 | .yarn/unplugged
128 | .yarn/build-state.yml
129 | .yarn/install-state.gz
130 | .pnp.*
131 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ts-fast-react-hooks",
3 | "version": "0.0.0",
4 | "description": "Boilerplate for building React hook libraries in TypeScript",
5 | "author": "yangshun",
6 | "license": "MIT",
7 | "type": "module",
8 | "main": "dist/index.js",
9 | "module": "dist/index.mjs",
10 | "types": "dist/index.d.ts",
11 | "exports": {
12 | ".": {
13 | "import": {
14 | "types": "./dist/index.d.mts",
15 | "default": "./dist/index.mjs"
16 | },
17 | "require": {
18 | "types": "./dist/index.d.ts",
19 | "default": "./dist/index.js"
20 | }
21 | }
22 | },
23 | "files": [
24 | "dist"
25 | ],
26 | "sideEffects": false,
27 | "scripts": {
28 | "build": "tsup",
29 | "dev": "tsup --watch",
30 | "typecheck": "tsc",
31 | "clean": "rimraf dist",
32 | "test": "vitest run",
33 | "test:watch": "vitest",
34 | "verify": "npm run typecheck && npm run test && npm run build",
35 | "prepublishOnly": "npm run verify"
36 | },
37 | "devDependencies": {
38 | "@testing-library/react": "^16.2.0",
39 | "@types/react": "^19.0.8",
40 | "jsdom": "^26.0.0",
41 | "rimraf": "^6.0.1",
42 | "tsup": "^8.3.6",
43 | "typescript": "^5.7.3",
44 | "vitest": "^3.0.2"
45 | },
46 | "peerDependencies": {
47 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
48 | },
49 | "engines": {
50 | "node": "^20.0.0 || >=22.0.0"
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/src/__tests__/use-counter.test.ts:
--------------------------------------------------------------------------------
1 | import { renderHook, act } from '@testing-library/react';
2 | import { useCounter } from '../use-counter';
3 |
4 | describe('useCounter', () => {
5 | test('should initialize with default value', () => {
6 | const { result } = renderHook(() => useCounter());
7 | expect(result.current.count).toBe(0);
8 | });
9 |
10 | test('should initialize with given initial value', () => {
11 | const { result } = renderHook(() => useCounter(10));
12 | expect(result.current.count).toBe(10);
13 | });
14 |
15 | test('should increment the counter', () => {
16 | const { result } = renderHook(() => useCounter(5));
17 |
18 | act(() => {
19 | result.current.increment();
20 | });
21 |
22 | expect(result.current.count).toBe(6);
23 | });
24 | });
25 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/src/__tests__/use-toggle.test.ts:
--------------------------------------------------------------------------------
1 | import { renderHook, act } from '@testing-library/react';
2 | import { useToggle } from '../use-toggle';
3 |
4 | describe('useToggle', () => {
5 | test('should initialize with the correct default value', () => {
6 | const { result } = renderHook(() => useToggle());
7 |
8 | // Default value should be false
9 | expect(result.current[0]).toBe(false);
10 | });
11 |
12 | test('should initialize with the provided initial value', () => {
13 | const { result } = renderHook(() => useToggle(true));
14 |
15 | // Initial value should be true
16 | expect(result.current[0]).toBe(true);
17 | });
18 |
19 | test('should toggle the value', () => {
20 | const { result } = renderHook(() => useToggle(false));
21 |
22 | // Initial value should be false
23 | expect(result.current[0]).toBe(false);
24 |
25 | // Toggle the value
26 | act(() => {
27 | result.current[1]();
28 | });
29 |
30 | // Value should now be true
31 | expect(result.current[0]).toBe(true);
32 |
33 | // Toggle again
34 | act(() => {
35 | result.current[1]();
36 | });
37 |
38 | // Value should now be false
39 | expect(result.current[0]).toBe(false);
40 | });
41 |
42 | test('should handle multiple toggles', () => {
43 | const { result } = renderHook(() => useToggle(false));
44 |
45 | // Toggle multiple times
46 | act(() => {
47 | result.current[1]();
48 | });
49 | expect(result.current[0]).toBe(true);
50 |
51 | act(() => {
52 | result.current[1]();
53 | });
54 | expect(result.current[0]).toBe(false);
55 |
56 | act(() => {
57 | result.current[1]();
58 | });
59 | expect(result.current[0]).toBe(true);
60 | });
61 | });
62 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/src/index.ts:
--------------------------------------------------------------------------------
1 | import { useCounter } from './use-counter';
2 | import { useToggle } from './use-toggle';
3 |
4 | export { useCounter, useToggle };
5 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/src/use-counter.ts:
--------------------------------------------------------------------------------
1 | import { useCallback, useState } from 'react';
2 |
3 | export function useCounter(initialValue = 0) {
4 | const [count, setCount] = useState(initialValue);
5 |
6 | const increment = useCallback(() => setCount((x) => x + 1), []);
7 |
8 | return { count, increment };
9 | }
10 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/src/use-toggle.ts:
--------------------------------------------------------------------------------
1 | import { useCallback, useState } from 'react';
2 |
3 | export function useToggle(initialValue = false) {
4 | const [value, setValue] = useState(initialValue);
5 |
6 | const toggle = useCallback(() => {
7 | setValue((prevValue) => !prevValue);
8 | }, []);
9 |
10 | return [value, toggle] as const;
11 | }
12 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "strict": true,
4 | "module": "ESNext",
5 | "moduleResolution": "bundler",
6 | "skipLibCheck": true,
7 | "esModuleInterop": true,
8 | "jsx": "react-jsx",
9 | "noEmit": true,
10 | "types": ["vitest/globals"]
11 | },
12 | "include": ["src", "tsup.config.ts", "vitest.config.ts"]
13 | }
14 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'tsup';
2 |
3 | export default defineConfig({
4 | clean: true,
5 | entry: ['./src/index.ts'],
6 | format: ['cjs', 'esm'],
7 | dts: true,
8 | treeshake: true,
9 | cjsInterop: true,
10 | });
11 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/react-hooks/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitest/config';
2 |
3 | export default defineConfig({
4 | test: {
5 | globals: true,
6 | environment: 'jsdom',
7 | },
8 | });
9 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: Continuous integration
2 | on:
3 | push:
4 | branches:
5 | - main
6 | pull_request:
7 | branches:
8 | - main
9 | jobs:
10 | typecheck:
11 | name: Typecheck
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v3
15 | - uses: actions/setup-node@v3
16 | with:
17 | node-version: 22
18 | - run: npm install
19 | - run: npm run typecheck
20 | tests:
21 | name: Tests
22 | runs-on: ubuntu-latest
23 | steps:
24 | - uses: actions/checkout@v3
25 | - uses: actions/setup-node@v3
26 | with:
27 | node-version: 22
28 | - run: npm install
29 | - run: npm test
30 | build:
31 | name: Build
32 | runs-on: ubuntu-latest
33 | steps:
34 | - uses: actions/checkout@v3
35 | - uses: actions/setup-node@v3
36 | with:
37 | node-version: 22
38 | - run: npm install
39 | - run: npm run build
40 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | package-lock.json
3 | dist
4 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Yangshun Tay
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/README.md:
--------------------------------------------------------------------------------
1 | # Create TypeScript Fast
2 |
3 | This project is generated by [create-ts-fast](https://github.com/yangshun/create-ts-fast), a tool for scaffolding npm libraries written in TypeScript.
4 |
5 | ## Directory walkthrough
6 |
7 | The project has the following files and directories:
8 |
9 | ```
10 | ├── .github/workflows/ci.yml
11 | ├── dist
12 | ├── src
13 | │ ├── __tests__
14 | │ └── index.ts
15 | ├── package.json
16 | ├── README.md
17 | ├── tsconfig.json
18 | ├── tsup.config.ts
19 | └── vitest.config.ts
20 | ```
21 |
22 | - `src`: Contains source code
23 | - `__tests__`: Directory containing tests. Code within `__tests__` will be ignored during build
24 | - `index.ts`: Main file
25 | - `package.json`: Self explanatory
26 | - `README.md`: Project's README file. Contents will be displayed on the package homepage on npmjs.com and repo homepage of github.com
27 | - `tsconfig.json`: Base TypeScript config. Used when developing
28 | - `tsup.config.json`: tsup config. Refer to its [documentation for customization](https://tsup.egoist.dev/#using-custom-configuration)
29 | - `vitest.config.ts`: Vitest config. Refer to its [documentation for customization](https://vitest.dev/config/)
30 | - `dist`: Directory containing generated files. The contents of this directory is published
31 | - `.github/workflows/ci.yml`: GitHub action that runs typechecks, tests and build
32 |
33 | ## Next steps
34 |
35 | 1. Implement your library within `src`. Add tests if you take pride in being a developer
36 | 2. Modify `package.json` – update `name`, `version`, `author` and any other relevant fields
37 | 3. Update `README.md`
38 | 4. `npm publish`. You will have to login to npm if you aren't already logged in
39 | 5. Profit!
40 |
41 | ## Commands
42 |
43 | - `npm run typecheck`: Checks code within `src` for TypeScript issues. No artifacts are generated
44 | - `npm test`: Single test run using Vitest
45 | - `npm run test:watch`: Watch mode. Runs all test suites and reruns them when there are changes
46 | - `npm run build`: Compiles `src` into CommonJS and ES modules (along with TypeScript declaration files) into the `dist` directory
47 | - `npm run verify`: Run typechecks + tests + build. Suitable when developing and in CI environments to ensure all checks are valid
48 | - `npm run clean`: Deletes the `dist` directory
49 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/_gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | .pnpm-debug.log*
9 |
10 | # Diagnostic reports (https://nodejs.org/api/report.html)
11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12 |
13 | # Runtime data
14 | pids
15 | *.pid
16 | *.seed
17 | *.pid.lock
18 |
19 | # Directory for instrumented libs generated by jscoverage/JSCover
20 | lib-cov
21 |
22 | # Coverage directory used by tools like istanbul
23 | coverage
24 | *.lcov
25 |
26 | # nyc test coverage
27 | .nyc_output
28 |
29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30 | .grunt
31 |
32 | # Bower dependency directory (https://bower.io/)
33 | bower_components
34 |
35 | # node-waf configuration
36 | .lock-wscript
37 |
38 | # Compiled binary addons (https://nodejs.org/api/addons.html)
39 | build/Release
40 |
41 | # Dependency directories
42 | node_modules/
43 | jspm_packages/
44 |
45 | # Snowpack dependency directory (https://snowpack.dev/)
46 | web_modules/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Optional stylelint cache
58 | .stylelintcache
59 |
60 | # Microbundle cache
61 | .rpt2_cache/
62 | .rts2_cache_cjs/
63 | .rts2_cache_es/
64 | .rts2_cache_umd/
65 |
66 | # Optional REPL history
67 | .node_repl_history
68 |
69 | # Output of 'npm pack'
70 | *.tgz
71 |
72 | # Yarn Integrity file
73 | .yarn-integrity
74 |
75 | # dotenv environment variable files
76 | .env
77 | .env.development.local
78 | .env.test.local
79 | .env.production.local
80 | .env.local
81 |
82 | # parcel-bundler cache (https://parceljs.org/)
83 | .cache
84 | .parcel-cache
85 |
86 | # Next.js build output
87 | .next
88 | out
89 |
90 | # Nuxt.js build / generate output
91 | .nuxt
92 | dist
93 |
94 | # Gatsby files
95 | .cache/
96 | # Comment in the public line in if your project uses Gatsby and not Next.js
97 | # https://nextjs.org/blog/next-9-1#public-directory-support
98 | # public
99 |
100 | # vuepress build output
101 | .vuepress/dist
102 |
103 | # vuepress v2.x temp and cache directory
104 | .temp
105 | .cache
106 |
107 | # Docusaurus cache and generated files
108 | .docusaurus
109 |
110 | # Serverless directories
111 | .serverless/
112 |
113 | # FuseBox cache
114 | .fusebox/
115 |
116 | # DynamoDB Local files
117 | .dynamodb/
118 |
119 | # TernJS port file
120 | .tern-port
121 |
122 | # Stores VSCode versions used for testing VSCode extensions
123 | .vscode-test
124 |
125 | # yarn v2
126 | .yarn/cache
127 | .yarn/unplugged
128 | .yarn/build-state.yml
129 | .yarn/install-state.gz
130 | .pnp.*
131 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ts-fast-universal",
3 | "version": "0.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "ts-fast-universal",
9 | "version": "0.0.0",
10 | "license": "MIT",
11 | "dependencies": {
12 | "tsup": "^8.3.6"
13 | },
14 | "devDependencies": {
15 | "rimraf": "^6.0.1",
16 | "typescript": "^5.7.3",
17 | "vitest": "^3.0.2"
18 | },
19 | "engines": {
20 | "node": "^20.0.0 || >=22.0.0"
21 | }
22 | },
23 | "node_modules/@esbuild/aix-ppc64": {
24 | "version": "0.24.2",
25 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
26 | "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
27 | "cpu": [
28 | "ppc64"
29 | ],
30 | "optional": true,
31 | "os": [
32 | "aix"
33 | ],
34 | "engines": {
35 | "node": ">=18"
36 | }
37 | },
38 | "node_modules/@esbuild/android-arm": {
39 | "version": "0.24.2",
40 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
41 | "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
42 | "cpu": [
43 | "arm"
44 | ],
45 | "optional": true,
46 | "os": [
47 | "android"
48 | ],
49 | "engines": {
50 | "node": ">=18"
51 | }
52 | },
53 | "node_modules/@esbuild/android-arm64": {
54 | "version": "0.24.2",
55 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
56 | "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
57 | "cpu": [
58 | "arm64"
59 | ],
60 | "optional": true,
61 | "os": [
62 | "android"
63 | ],
64 | "engines": {
65 | "node": ">=18"
66 | }
67 | },
68 | "node_modules/@esbuild/android-x64": {
69 | "version": "0.24.2",
70 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
71 | "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
72 | "cpu": [
73 | "x64"
74 | ],
75 | "optional": true,
76 | "os": [
77 | "android"
78 | ],
79 | "engines": {
80 | "node": ">=18"
81 | }
82 | },
83 | "node_modules/@esbuild/darwin-arm64": {
84 | "version": "0.24.2",
85 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
86 | "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
87 | "cpu": [
88 | "arm64"
89 | ],
90 | "optional": true,
91 | "os": [
92 | "darwin"
93 | ],
94 | "engines": {
95 | "node": ">=18"
96 | }
97 | },
98 | "node_modules/@esbuild/darwin-x64": {
99 | "version": "0.24.2",
100 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
101 | "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
102 | "cpu": [
103 | "x64"
104 | ],
105 | "optional": true,
106 | "os": [
107 | "darwin"
108 | ],
109 | "engines": {
110 | "node": ">=18"
111 | }
112 | },
113 | "node_modules/@esbuild/freebsd-arm64": {
114 | "version": "0.24.2",
115 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
116 | "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
117 | "cpu": [
118 | "arm64"
119 | ],
120 | "optional": true,
121 | "os": [
122 | "freebsd"
123 | ],
124 | "engines": {
125 | "node": ">=18"
126 | }
127 | },
128 | "node_modules/@esbuild/freebsd-x64": {
129 | "version": "0.24.2",
130 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
131 | "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
132 | "cpu": [
133 | "x64"
134 | ],
135 | "optional": true,
136 | "os": [
137 | "freebsd"
138 | ],
139 | "engines": {
140 | "node": ">=18"
141 | }
142 | },
143 | "node_modules/@esbuild/linux-arm": {
144 | "version": "0.24.2",
145 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
146 | "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
147 | "cpu": [
148 | "arm"
149 | ],
150 | "optional": true,
151 | "os": [
152 | "linux"
153 | ],
154 | "engines": {
155 | "node": ">=18"
156 | }
157 | },
158 | "node_modules/@esbuild/linux-arm64": {
159 | "version": "0.24.2",
160 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
161 | "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
162 | "cpu": [
163 | "arm64"
164 | ],
165 | "optional": true,
166 | "os": [
167 | "linux"
168 | ],
169 | "engines": {
170 | "node": ">=18"
171 | }
172 | },
173 | "node_modules/@esbuild/linux-ia32": {
174 | "version": "0.24.2",
175 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
176 | "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
177 | "cpu": [
178 | "ia32"
179 | ],
180 | "optional": true,
181 | "os": [
182 | "linux"
183 | ],
184 | "engines": {
185 | "node": ">=18"
186 | }
187 | },
188 | "node_modules/@esbuild/linux-loong64": {
189 | "version": "0.24.2",
190 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
191 | "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
192 | "cpu": [
193 | "loong64"
194 | ],
195 | "optional": true,
196 | "os": [
197 | "linux"
198 | ],
199 | "engines": {
200 | "node": ">=18"
201 | }
202 | },
203 | "node_modules/@esbuild/linux-mips64el": {
204 | "version": "0.24.2",
205 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
206 | "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
207 | "cpu": [
208 | "mips64el"
209 | ],
210 | "optional": true,
211 | "os": [
212 | "linux"
213 | ],
214 | "engines": {
215 | "node": ">=18"
216 | }
217 | },
218 | "node_modules/@esbuild/linux-ppc64": {
219 | "version": "0.24.2",
220 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
221 | "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
222 | "cpu": [
223 | "ppc64"
224 | ],
225 | "optional": true,
226 | "os": [
227 | "linux"
228 | ],
229 | "engines": {
230 | "node": ">=18"
231 | }
232 | },
233 | "node_modules/@esbuild/linux-riscv64": {
234 | "version": "0.24.2",
235 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
236 | "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
237 | "cpu": [
238 | "riscv64"
239 | ],
240 | "optional": true,
241 | "os": [
242 | "linux"
243 | ],
244 | "engines": {
245 | "node": ">=18"
246 | }
247 | },
248 | "node_modules/@esbuild/linux-s390x": {
249 | "version": "0.24.2",
250 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
251 | "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
252 | "cpu": [
253 | "s390x"
254 | ],
255 | "optional": true,
256 | "os": [
257 | "linux"
258 | ],
259 | "engines": {
260 | "node": ">=18"
261 | }
262 | },
263 | "node_modules/@esbuild/linux-x64": {
264 | "version": "0.24.2",
265 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
266 | "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
267 | "cpu": [
268 | "x64"
269 | ],
270 | "optional": true,
271 | "os": [
272 | "linux"
273 | ],
274 | "engines": {
275 | "node": ">=18"
276 | }
277 | },
278 | "node_modules/@esbuild/netbsd-arm64": {
279 | "version": "0.24.2",
280 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
281 | "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
282 | "cpu": [
283 | "arm64"
284 | ],
285 | "optional": true,
286 | "os": [
287 | "netbsd"
288 | ],
289 | "engines": {
290 | "node": ">=18"
291 | }
292 | },
293 | "node_modules/@esbuild/netbsd-x64": {
294 | "version": "0.24.2",
295 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
296 | "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
297 | "cpu": [
298 | "x64"
299 | ],
300 | "optional": true,
301 | "os": [
302 | "netbsd"
303 | ],
304 | "engines": {
305 | "node": ">=18"
306 | }
307 | },
308 | "node_modules/@esbuild/openbsd-arm64": {
309 | "version": "0.24.2",
310 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
311 | "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
312 | "cpu": [
313 | "arm64"
314 | ],
315 | "optional": true,
316 | "os": [
317 | "openbsd"
318 | ],
319 | "engines": {
320 | "node": ">=18"
321 | }
322 | },
323 | "node_modules/@esbuild/openbsd-x64": {
324 | "version": "0.24.2",
325 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
326 | "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
327 | "cpu": [
328 | "x64"
329 | ],
330 | "optional": true,
331 | "os": [
332 | "openbsd"
333 | ],
334 | "engines": {
335 | "node": ">=18"
336 | }
337 | },
338 | "node_modules/@esbuild/sunos-x64": {
339 | "version": "0.24.2",
340 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
341 | "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
342 | "cpu": [
343 | "x64"
344 | ],
345 | "optional": true,
346 | "os": [
347 | "sunos"
348 | ],
349 | "engines": {
350 | "node": ">=18"
351 | }
352 | },
353 | "node_modules/@esbuild/win32-arm64": {
354 | "version": "0.24.2",
355 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
356 | "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
357 | "cpu": [
358 | "arm64"
359 | ],
360 | "optional": true,
361 | "os": [
362 | "win32"
363 | ],
364 | "engines": {
365 | "node": ">=18"
366 | }
367 | },
368 | "node_modules/@esbuild/win32-ia32": {
369 | "version": "0.24.2",
370 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
371 | "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
372 | "cpu": [
373 | "ia32"
374 | ],
375 | "optional": true,
376 | "os": [
377 | "win32"
378 | ],
379 | "engines": {
380 | "node": ">=18"
381 | }
382 | },
383 | "node_modules/@esbuild/win32-x64": {
384 | "version": "0.24.2",
385 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
386 | "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
387 | "cpu": [
388 | "x64"
389 | ],
390 | "optional": true,
391 | "os": [
392 | "win32"
393 | ],
394 | "engines": {
395 | "node": ">=18"
396 | }
397 | },
398 | "node_modules/@isaacs/cliui": {
399 | "version": "8.0.2",
400 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
401 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
402 | "dependencies": {
403 | "string-width": "^5.1.2",
404 | "string-width-cjs": "npm:string-width@^4.2.0",
405 | "strip-ansi": "^7.0.1",
406 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
407 | "wrap-ansi": "^8.1.0",
408 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
409 | },
410 | "engines": {
411 | "node": ">=12"
412 | }
413 | },
414 | "node_modules/@jridgewell/gen-mapping": {
415 | "version": "0.3.8",
416 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
417 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
418 | "dependencies": {
419 | "@jridgewell/set-array": "^1.2.1",
420 | "@jridgewell/sourcemap-codec": "^1.4.10",
421 | "@jridgewell/trace-mapping": "^0.3.24"
422 | },
423 | "engines": {
424 | "node": ">=6.0.0"
425 | }
426 | },
427 | "node_modules/@jridgewell/resolve-uri": {
428 | "version": "3.1.2",
429 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
430 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
431 | "engines": {
432 | "node": ">=6.0.0"
433 | }
434 | },
435 | "node_modules/@jridgewell/set-array": {
436 | "version": "1.2.1",
437 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
438 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
439 | "engines": {
440 | "node": ">=6.0.0"
441 | }
442 | },
443 | "node_modules/@jridgewell/sourcemap-codec": {
444 | "version": "1.5.0",
445 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
446 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
447 | },
448 | "node_modules/@jridgewell/trace-mapping": {
449 | "version": "0.3.25",
450 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
451 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
452 | "dependencies": {
453 | "@jridgewell/resolve-uri": "^3.1.0",
454 | "@jridgewell/sourcemap-codec": "^1.4.14"
455 | }
456 | },
457 | "node_modules/@pkgjs/parseargs": {
458 | "version": "0.11.0",
459 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
460 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
461 | "optional": true,
462 | "engines": {
463 | "node": ">=14"
464 | }
465 | },
466 | "node_modules/@rollup/rollup-android-arm-eabi": {
467 | "version": "4.31.0",
468 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.31.0.tgz",
469 | "integrity": "sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA==",
470 | "cpu": [
471 | "arm"
472 | ],
473 | "optional": true,
474 | "os": [
475 | "android"
476 | ]
477 | },
478 | "node_modules/@rollup/rollup-android-arm64": {
479 | "version": "4.31.0",
480 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.31.0.tgz",
481 | "integrity": "sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g==",
482 | "cpu": [
483 | "arm64"
484 | ],
485 | "optional": true,
486 | "os": [
487 | "android"
488 | ]
489 | },
490 | "node_modules/@rollup/rollup-darwin-arm64": {
491 | "version": "4.31.0",
492 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.31.0.tgz",
493 | "integrity": "sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g==",
494 | "cpu": [
495 | "arm64"
496 | ],
497 | "optional": true,
498 | "os": [
499 | "darwin"
500 | ]
501 | },
502 | "node_modules/@rollup/rollup-darwin-x64": {
503 | "version": "4.31.0",
504 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.31.0.tgz",
505 | "integrity": "sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ==",
506 | "cpu": [
507 | "x64"
508 | ],
509 | "optional": true,
510 | "os": [
511 | "darwin"
512 | ]
513 | },
514 | "node_modules/@rollup/rollup-freebsd-arm64": {
515 | "version": "4.31.0",
516 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.31.0.tgz",
517 | "integrity": "sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew==",
518 | "cpu": [
519 | "arm64"
520 | ],
521 | "optional": true,
522 | "os": [
523 | "freebsd"
524 | ]
525 | },
526 | "node_modules/@rollup/rollup-freebsd-x64": {
527 | "version": "4.31.0",
528 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.31.0.tgz",
529 | "integrity": "sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA==",
530 | "cpu": [
531 | "x64"
532 | ],
533 | "optional": true,
534 | "os": [
535 | "freebsd"
536 | ]
537 | },
538 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
539 | "version": "4.31.0",
540 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.31.0.tgz",
541 | "integrity": "sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw==",
542 | "cpu": [
543 | "arm"
544 | ],
545 | "optional": true,
546 | "os": [
547 | "linux"
548 | ]
549 | },
550 | "node_modules/@rollup/rollup-linux-arm-musleabihf": {
551 | "version": "4.31.0",
552 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.31.0.tgz",
553 | "integrity": "sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg==",
554 | "cpu": [
555 | "arm"
556 | ],
557 | "optional": true,
558 | "os": [
559 | "linux"
560 | ]
561 | },
562 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
563 | "version": "4.31.0",
564 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.31.0.tgz",
565 | "integrity": "sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA==",
566 | "cpu": [
567 | "arm64"
568 | ],
569 | "optional": true,
570 | "os": [
571 | "linux"
572 | ]
573 | },
574 | "node_modules/@rollup/rollup-linux-arm64-musl": {
575 | "version": "4.31.0",
576 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.31.0.tgz",
577 | "integrity": "sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g==",
578 | "cpu": [
579 | "arm64"
580 | ],
581 | "optional": true,
582 | "os": [
583 | "linux"
584 | ]
585 | },
586 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
587 | "version": "4.31.0",
588 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.31.0.tgz",
589 | "integrity": "sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ==",
590 | "cpu": [
591 | "loong64"
592 | ],
593 | "optional": true,
594 | "os": [
595 | "linux"
596 | ]
597 | },
598 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
599 | "version": "4.31.0",
600 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.31.0.tgz",
601 | "integrity": "sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ==",
602 | "cpu": [
603 | "ppc64"
604 | ],
605 | "optional": true,
606 | "os": [
607 | "linux"
608 | ]
609 | },
610 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
611 | "version": "4.31.0",
612 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.31.0.tgz",
613 | "integrity": "sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw==",
614 | "cpu": [
615 | "riscv64"
616 | ],
617 | "optional": true,
618 | "os": [
619 | "linux"
620 | ]
621 | },
622 | "node_modules/@rollup/rollup-linux-s390x-gnu": {
623 | "version": "4.31.0",
624 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.31.0.tgz",
625 | "integrity": "sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ==",
626 | "cpu": [
627 | "s390x"
628 | ],
629 | "optional": true,
630 | "os": [
631 | "linux"
632 | ]
633 | },
634 | "node_modules/@rollup/rollup-linux-x64-gnu": {
635 | "version": "4.31.0",
636 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.31.0.tgz",
637 | "integrity": "sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g==",
638 | "cpu": [
639 | "x64"
640 | ],
641 | "optional": true,
642 | "os": [
643 | "linux"
644 | ]
645 | },
646 | "node_modules/@rollup/rollup-linux-x64-musl": {
647 | "version": "4.31.0",
648 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.31.0.tgz",
649 | "integrity": "sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA==",
650 | "cpu": [
651 | "x64"
652 | ],
653 | "optional": true,
654 | "os": [
655 | "linux"
656 | ]
657 | },
658 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
659 | "version": "4.31.0",
660 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.31.0.tgz",
661 | "integrity": "sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw==",
662 | "cpu": [
663 | "arm64"
664 | ],
665 | "optional": true,
666 | "os": [
667 | "win32"
668 | ]
669 | },
670 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
671 | "version": "4.31.0",
672 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.31.0.tgz",
673 | "integrity": "sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ==",
674 | "cpu": [
675 | "ia32"
676 | ],
677 | "optional": true,
678 | "os": [
679 | "win32"
680 | ]
681 | },
682 | "node_modules/@rollup/rollup-win32-x64-msvc": {
683 | "version": "4.31.0",
684 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.31.0.tgz",
685 | "integrity": "sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw==",
686 | "cpu": [
687 | "x64"
688 | ],
689 | "optional": true,
690 | "os": [
691 | "win32"
692 | ]
693 | },
694 | "node_modules/@types/estree": {
695 | "version": "1.0.6",
696 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
697 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="
698 | },
699 | "node_modules/@vitest/expect": {
700 | "version": "3.0.3",
701 | "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.3.tgz",
702 | "integrity": "sha512-SbRCHU4qr91xguu+dH3RUdI5dC86zm8aZWydbp961aIR7G8OYNN6ZiayFuf9WAngRbFOfdrLHCGgXTj3GtoMRQ==",
703 | "dev": true,
704 | "dependencies": {
705 | "@vitest/spy": "3.0.3",
706 | "@vitest/utils": "3.0.3",
707 | "chai": "^5.1.2",
708 | "tinyrainbow": "^2.0.0"
709 | },
710 | "funding": {
711 | "url": "https://opencollective.com/vitest"
712 | }
713 | },
714 | "node_modules/@vitest/mocker": {
715 | "version": "3.0.3",
716 | "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.3.tgz",
717 | "integrity": "sha512-XT2XBc4AN9UdaxJAeIlcSZ0ILi/GzmG5G8XSly4gaiqIvPV3HMTSIDZWJVX6QRJ0PX1m+W8Cy0K9ByXNb/bPIA==",
718 | "dev": true,
719 | "dependencies": {
720 | "@vitest/spy": "3.0.3",
721 | "estree-walker": "^3.0.3",
722 | "magic-string": "^0.30.17"
723 | },
724 | "funding": {
725 | "url": "https://opencollective.com/vitest"
726 | },
727 | "peerDependencies": {
728 | "msw": "^2.4.9",
729 | "vite": "^5.0.0 || ^6.0.0"
730 | },
731 | "peerDependenciesMeta": {
732 | "msw": {
733 | "optional": true
734 | },
735 | "vite": {
736 | "optional": true
737 | }
738 | }
739 | },
740 | "node_modules/@vitest/pretty-format": {
741 | "version": "3.0.3",
742 | "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.3.tgz",
743 | "integrity": "sha512-gCrM9F7STYdsDoNjGgYXKPq4SkSxwwIU5nkaQvdUxiQ0EcNlez+PdKOVIsUJvh9P9IeIFmjn4IIREWblOBpP2Q==",
744 | "dev": true,
745 | "dependencies": {
746 | "tinyrainbow": "^2.0.0"
747 | },
748 | "funding": {
749 | "url": "https://opencollective.com/vitest"
750 | }
751 | },
752 | "node_modules/@vitest/runner": {
753 | "version": "3.0.3",
754 | "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.3.tgz",
755 | "integrity": "sha512-Rgi2kOAk5ZxWZlwPguRJFOBmWs6uvvyAAR9k3MvjRvYrG7xYvKChZcmnnpJCS98311CBDMqsW9MzzRFsj2gX3g==",
756 | "dev": true,
757 | "dependencies": {
758 | "@vitest/utils": "3.0.3",
759 | "pathe": "^2.0.1"
760 | },
761 | "funding": {
762 | "url": "https://opencollective.com/vitest"
763 | }
764 | },
765 | "node_modules/@vitest/snapshot": {
766 | "version": "3.0.3",
767 | "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.3.tgz",
768 | "integrity": "sha512-kNRcHlI4txBGztuJfPEJ68VezlPAXLRT1u5UCx219TU3kOG2DplNxhWLwDf2h6emwmTPogzLnGVwP6epDaJN6Q==",
769 | "dev": true,
770 | "dependencies": {
771 | "@vitest/pretty-format": "3.0.3",
772 | "magic-string": "^0.30.17",
773 | "pathe": "^2.0.1"
774 | },
775 | "funding": {
776 | "url": "https://opencollective.com/vitest"
777 | }
778 | },
779 | "node_modules/@vitest/spy": {
780 | "version": "3.0.3",
781 | "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.3.tgz",
782 | "integrity": "sha512-7/dgux8ZBbF7lEIKNnEqQlyRaER9nkAL9eTmdKJkDO3hS8p59ATGwKOCUDHcBLKr7h/oi/6hP+7djQk8049T2A==",
783 | "dev": true,
784 | "dependencies": {
785 | "tinyspy": "^3.0.2"
786 | },
787 | "funding": {
788 | "url": "https://opencollective.com/vitest"
789 | }
790 | },
791 | "node_modules/@vitest/utils": {
792 | "version": "3.0.3",
793 | "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.3.tgz",
794 | "integrity": "sha512-f+s8CvyzPtMFY1eZKkIHGhPsQgYo5qCm6O8KZoim9qm1/jT64qBgGpO5tHscNH6BzRHM+edLNOP+3vO8+8pE/A==",
795 | "dev": true,
796 | "dependencies": {
797 | "@vitest/pretty-format": "3.0.3",
798 | "loupe": "^3.1.2",
799 | "tinyrainbow": "^2.0.0"
800 | },
801 | "funding": {
802 | "url": "https://opencollective.com/vitest"
803 | }
804 | },
805 | "node_modules/ansi-regex": {
806 | "version": "6.1.0",
807 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
808 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
809 | "engines": {
810 | "node": ">=12"
811 | },
812 | "funding": {
813 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
814 | }
815 | },
816 | "node_modules/ansi-styles": {
817 | "version": "6.2.1",
818 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
819 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
820 | "engines": {
821 | "node": ">=12"
822 | },
823 | "funding": {
824 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
825 | }
826 | },
827 | "node_modules/any-promise": {
828 | "version": "1.3.0",
829 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
830 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
831 | },
832 | "node_modules/assertion-error": {
833 | "version": "2.0.1",
834 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
835 | "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
836 | "dev": true,
837 | "engines": {
838 | "node": ">=12"
839 | }
840 | },
841 | "node_modules/balanced-match": {
842 | "version": "1.0.2",
843 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
844 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
845 | },
846 | "node_modules/brace-expansion": {
847 | "version": "2.0.1",
848 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
849 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
850 | "dependencies": {
851 | "balanced-match": "^1.0.0"
852 | }
853 | },
854 | "node_modules/bundle-require": {
855 | "version": "5.1.0",
856 | "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz",
857 | "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==",
858 | "dependencies": {
859 | "load-tsconfig": "^0.2.3"
860 | },
861 | "engines": {
862 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
863 | },
864 | "peerDependencies": {
865 | "esbuild": ">=0.18"
866 | }
867 | },
868 | "node_modules/cac": {
869 | "version": "6.7.14",
870 | "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
871 | "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
872 | "engines": {
873 | "node": ">=8"
874 | }
875 | },
876 | "node_modules/chai": {
877 | "version": "5.1.2",
878 | "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz",
879 | "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==",
880 | "dev": true,
881 | "dependencies": {
882 | "assertion-error": "^2.0.1",
883 | "check-error": "^2.1.1",
884 | "deep-eql": "^5.0.1",
885 | "loupe": "^3.1.0",
886 | "pathval": "^2.0.0"
887 | },
888 | "engines": {
889 | "node": ">=12"
890 | }
891 | },
892 | "node_modules/check-error": {
893 | "version": "2.1.1",
894 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
895 | "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
896 | "dev": true,
897 | "engines": {
898 | "node": ">= 16"
899 | }
900 | },
901 | "node_modules/chokidar": {
902 | "version": "4.0.3",
903 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
904 | "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
905 | "dependencies": {
906 | "readdirp": "^4.0.1"
907 | },
908 | "engines": {
909 | "node": ">= 14.16.0"
910 | },
911 | "funding": {
912 | "url": "https://paulmillr.com/funding/"
913 | }
914 | },
915 | "node_modules/color-convert": {
916 | "version": "2.0.1",
917 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
918 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
919 | "dependencies": {
920 | "color-name": "~1.1.4"
921 | },
922 | "engines": {
923 | "node": ">=7.0.0"
924 | }
925 | },
926 | "node_modules/color-name": {
927 | "version": "1.1.4",
928 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
929 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
930 | },
931 | "node_modules/commander": {
932 | "version": "4.1.1",
933 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
934 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
935 | "engines": {
936 | "node": ">= 6"
937 | }
938 | },
939 | "node_modules/consola": {
940 | "version": "3.4.0",
941 | "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz",
942 | "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==",
943 | "engines": {
944 | "node": "^14.18.0 || >=16.10.0"
945 | }
946 | },
947 | "node_modules/cross-spawn": {
948 | "version": "7.0.6",
949 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
950 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
951 | "dependencies": {
952 | "path-key": "^3.1.0",
953 | "shebang-command": "^2.0.0",
954 | "which": "^2.0.1"
955 | },
956 | "engines": {
957 | "node": ">= 8"
958 | }
959 | },
960 | "node_modules/debug": {
961 | "version": "4.4.0",
962 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
963 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
964 | "dependencies": {
965 | "ms": "^2.1.3"
966 | },
967 | "engines": {
968 | "node": ">=6.0"
969 | },
970 | "peerDependenciesMeta": {
971 | "supports-color": {
972 | "optional": true
973 | }
974 | }
975 | },
976 | "node_modules/deep-eql": {
977 | "version": "5.0.2",
978 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
979 | "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
980 | "dev": true,
981 | "engines": {
982 | "node": ">=6"
983 | }
984 | },
985 | "node_modules/eastasianwidth": {
986 | "version": "0.2.0",
987 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
988 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
989 | },
990 | "node_modules/emoji-regex": {
991 | "version": "9.2.2",
992 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
993 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
994 | },
995 | "node_modules/es-module-lexer": {
996 | "version": "1.6.0",
997 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
998 | "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
999 | "dev": true
1000 | },
1001 | "node_modules/esbuild": {
1002 | "version": "0.24.2",
1003 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
1004 | "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
1005 | "hasInstallScript": true,
1006 | "bin": {
1007 | "esbuild": "bin/esbuild"
1008 | },
1009 | "engines": {
1010 | "node": ">=18"
1011 | },
1012 | "optionalDependencies": {
1013 | "@esbuild/aix-ppc64": "0.24.2",
1014 | "@esbuild/android-arm": "0.24.2",
1015 | "@esbuild/android-arm64": "0.24.2",
1016 | "@esbuild/android-x64": "0.24.2",
1017 | "@esbuild/darwin-arm64": "0.24.2",
1018 | "@esbuild/darwin-x64": "0.24.2",
1019 | "@esbuild/freebsd-arm64": "0.24.2",
1020 | "@esbuild/freebsd-x64": "0.24.2",
1021 | "@esbuild/linux-arm": "0.24.2",
1022 | "@esbuild/linux-arm64": "0.24.2",
1023 | "@esbuild/linux-ia32": "0.24.2",
1024 | "@esbuild/linux-loong64": "0.24.2",
1025 | "@esbuild/linux-mips64el": "0.24.2",
1026 | "@esbuild/linux-ppc64": "0.24.2",
1027 | "@esbuild/linux-riscv64": "0.24.2",
1028 | "@esbuild/linux-s390x": "0.24.2",
1029 | "@esbuild/linux-x64": "0.24.2",
1030 | "@esbuild/netbsd-arm64": "0.24.2",
1031 | "@esbuild/netbsd-x64": "0.24.2",
1032 | "@esbuild/openbsd-arm64": "0.24.2",
1033 | "@esbuild/openbsd-x64": "0.24.2",
1034 | "@esbuild/sunos-x64": "0.24.2",
1035 | "@esbuild/win32-arm64": "0.24.2",
1036 | "@esbuild/win32-ia32": "0.24.2",
1037 | "@esbuild/win32-x64": "0.24.2"
1038 | }
1039 | },
1040 | "node_modules/estree-walker": {
1041 | "version": "3.0.3",
1042 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
1043 | "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
1044 | "dev": true,
1045 | "dependencies": {
1046 | "@types/estree": "^1.0.0"
1047 | }
1048 | },
1049 | "node_modules/expect-type": {
1050 | "version": "1.1.0",
1051 | "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz",
1052 | "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==",
1053 | "dev": true,
1054 | "engines": {
1055 | "node": ">=12.0.0"
1056 | }
1057 | },
1058 | "node_modules/fdir": {
1059 | "version": "6.4.3",
1060 | "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz",
1061 | "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==",
1062 | "peerDependencies": {
1063 | "picomatch": "^3 || ^4"
1064 | },
1065 | "peerDependenciesMeta": {
1066 | "picomatch": {
1067 | "optional": true
1068 | }
1069 | }
1070 | },
1071 | "node_modules/foreground-child": {
1072 | "version": "3.3.0",
1073 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
1074 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
1075 | "dependencies": {
1076 | "cross-spawn": "^7.0.0",
1077 | "signal-exit": "^4.0.1"
1078 | },
1079 | "engines": {
1080 | "node": ">=14"
1081 | },
1082 | "funding": {
1083 | "url": "https://github.com/sponsors/isaacs"
1084 | }
1085 | },
1086 | "node_modules/fsevents": {
1087 | "version": "2.3.3",
1088 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1089 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1090 | "hasInstallScript": true,
1091 | "optional": true,
1092 | "os": [
1093 | "darwin"
1094 | ],
1095 | "engines": {
1096 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1097 | }
1098 | },
1099 | "node_modules/glob": {
1100 | "version": "11.0.1",
1101 | "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz",
1102 | "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==",
1103 | "dev": true,
1104 | "dependencies": {
1105 | "foreground-child": "^3.1.0",
1106 | "jackspeak": "^4.0.1",
1107 | "minimatch": "^10.0.0",
1108 | "minipass": "^7.1.2",
1109 | "package-json-from-dist": "^1.0.0",
1110 | "path-scurry": "^2.0.0"
1111 | },
1112 | "bin": {
1113 | "glob": "dist/esm/bin.mjs"
1114 | },
1115 | "engines": {
1116 | "node": "20 || >=22"
1117 | },
1118 | "funding": {
1119 | "url": "https://github.com/sponsors/isaacs"
1120 | }
1121 | },
1122 | "node_modules/is-fullwidth-code-point": {
1123 | "version": "3.0.0",
1124 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1125 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1126 | "engines": {
1127 | "node": ">=8"
1128 | }
1129 | },
1130 | "node_modules/isexe": {
1131 | "version": "2.0.0",
1132 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1133 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
1134 | },
1135 | "node_modules/jackspeak": {
1136 | "version": "4.0.2",
1137 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz",
1138 | "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==",
1139 | "dev": true,
1140 | "dependencies": {
1141 | "@isaacs/cliui": "^8.0.2"
1142 | },
1143 | "engines": {
1144 | "node": "20 || >=22"
1145 | },
1146 | "funding": {
1147 | "url": "https://github.com/sponsors/isaacs"
1148 | }
1149 | },
1150 | "node_modules/joycon": {
1151 | "version": "3.1.1",
1152 | "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz",
1153 | "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==",
1154 | "engines": {
1155 | "node": ">=10"
1156 | }
1157 | },
1158 | "node_modules/lilconfig": {
1159 | "version": "3.1.3",
1160 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
1161 | "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
1162 | "engines": {
1163 | "node": ">=14"
1164 | },
1165 | "funding": {
1166 | "url": "https://github.com/sponsors/antonk52"
1167 | }
1168 | },
1169 | "node_modules/lines-and-columns": {
1170 | "version": "1.2.4",
1171 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1172 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
1173 | },
1174 | "node_modules/load-tsconfig": {
1175 | "version": "0.2.5",
1176 | "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz",
1177 | "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==",
1178 | "engines": {
1179 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1180 | }
1181 | },
1182 | "node_modules/lodash.sortby": {
1183 | "version": "4.7.0",
1184 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
1185 | "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="
1186 | },
1187 | "node_modules/loupe": {
1188 | "version": "3.1.2",
1189 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz",
1190 | "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==",
1191 | "dev": true
1192 | },
1193 | "node_modules/lru-cache": {
1194 | "version": "11.0.2",
1195 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz",
1196 | "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==",
1197 | "dev": true,
1198 | "engines": {
1199 | "node": "20 || >=22"
1200 | }
1201 | },
1202 | "node_modules/magic-string": {
1203 | "version": "0.30.17",
1204 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
1205 | "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
1206 | "dev": true,
1207 | "dependencies": {
1208 | "@jridgewell/sourcemap-codec": "^1.5.0"
1209 | }
1210 | },
1211 | "node_modules/minimatch": {
1212 | "version": "10.0.1",
1213 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
1214 | "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
1215 | "dev": true,
1216 | "dependencies": {
1217 | "brace-expansion": "^2.0.1"
1218 | },
1219 | "engines": {
1220 | "node": "20 || >=22"
1221 | },
1222 | "funding": {
1223 | "url": "https://github.com/sponsors/isaacs"
1224 | }
1225 | },
1226 | "node_modules/minipass": {
1227 | "version": "7.1.2",
1228 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
1229 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
1230 | "engines": {
1231 | "node": ">=16 || 14 >=14.17"
1232 | }
1233 | },
1234 | "node_modules/ms": {
1235 | "version": "2.1.3",
1236 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1237 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1238 | },
1239 | "node_modules/mz": {
1240 | "version": "2.7.0",
1241 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
1242 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
1243 | "dependencies": {
1244 | "any-promise": "^1.0.0",
1245 | "object-assign": "^4.0.1",
1246 | "thenify-all": "^1.0.0"
1247 | }
1248 | },
1249 | "node_modules/nanoid": {
1250 | "version": "3.3.8",
1251 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
1252 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
1253 | "devOptional": true,
1254 | "funding": [
1255 | {
1256 | "type": "github",
1257 | "url": "https://github.com/sponsors/ai"
1258 | }
1259 | ],
1260 | "bin": {
1261 | "nanoid": "bin/nanoid.cjs"
1262 | },
1263 | "engines": {
1264 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1265 | }
1266 | },
1267 | "node_modules/object-assign": {
1268 | "version": "4.1.1",
1269 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1270 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1271 | "engines": {
1272 | "node": ">=0.10.0"
1273 | }
1274 | },
1275 | "node_modules/package-json-from-dist": {
1276 | "version": "1.0.1",
1277 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
1278 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
1279 | },
1280 | "node_modules/path-key": {
1281 | "version": "3.1.1",
1282 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1283 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1284 | "engines": {
1285 | "node": ">=8"
1286 | }
1287 | },
1288 | "node_modules/path-scurry": {
1289 | "version": "2.0.0",
1290 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
1291 | "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
1292 | "dev": true,
1293 | "dependencies": {
1294 | "lru-cache": "^11.0.0",
1295 | "minipass": "^7.1.2"
1296 | },
1297 | "engines": {
1298 | "node": "20 || >=22"
1299 | },
1300 | "funding": {
1301 | "url": "https://github.com/sponsors/isaacs"
1302 | }
1303 | },
1304 | "node_modules/pathe": {
1305 | "version": "2.0.2",
1306 | "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
1307 | "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==",
1308 | "dev": true
1309 | },
1310 | "node_modules/pathval": {
1311 | "version": "2.0.0",
1312 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
1313 | "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
1314 | "dev": true,
1315 | "engines": {
1316 | "node": ">= 14.16"
1317 | }
1318 | },
1319 | "node_modules/picocolors": {
1320 | "version": "1.1.1",
1321 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1322 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
1323 | },
1324 | "node_modules/picomatch": {
1325 | "version": "4.0.2",
1326 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
1327 | "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
1328 | "engines": {
1329 | "node": ">=12"
1330 | },
1331 | "funding": {
1332 | "url": "https://github.com/sponsors/jonschlinkert"
1333 | }
1334 | },
1335 | "node_modules/pirates": {
1336 | "version": "4.0.6",
1337 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
1338 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
1339 | "engines": {
1340 | "node": ">= 6"
1341 | }
1342 | },
1343 | "node_modules/postcss": {
1344 | "version": "8.5.1",
1345 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
1346 | "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
1347 | "devOptional": true,
1348 | "funding": [
1349 | {
1350 | "type": "opencollective",
1351 | "url": "https://opencollective.com/postcss/"
1352 | },
1353 | {
1354 | "type": "tidelift",
1355 | "url": "https://tidelift.com/funding/github/npm/postcss"
1356 | },
1357 | {
1358 | "type": "github",
1359 | "url": "https://github.com/sponsors/ai"
1360 | }
1361 | ],
1362 | "dependencies": {
1363 | "nanoid": "^3.3.8",
1364 | "picocolors": "^1.1.1",
1365 | "source-map-js": "^1.2.1"
1366 | },
1367 | "engines": {
1368 | "node": "^10 || ^12 || >=14"
1369 | }
1370 | },
1371 | "node_modules/postcss-load-config": {
1372 | "version": "6.0.1",
1373 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz",
1374 | "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==",
1375 | "funding": [
1376 | {
1377 | "type": "opencollective",
1378 | "url": "https://opencollective.com/postcss/"
1379 | },
1380 | {
1381 | "type": "github",
1382 | "url": "https://github.com/sponsors/ai"
1383 | }
1384 | ],
1385 | "dependencies": {
1386 | "lilconfig": "^3.1.1"
1387 | },
1388 | "engines": {
1389 | "node": ">= 18"
1390 | },
1391 | "peerDependencies": {
1392 | "jiti": ">=1.21.0",
1393 | "postcss": ">=8.0.9",
1394 | "tsx": "^4.8.1",
1395 | "yaml": "^2.4.2"
1396 | },
1397 | "peerDependenciesMeta": {
1398 | "jiti": {
1399 | "optional": true
1400 | },
1401 | "postcss": {
1402 | "optional": true
1403 | },
1404 | "tsx": {
1405 | "optional": true
1406 | },
1407 | "yaml": {
1408 | "optional": true
1409 | }
1410 | }
1411 | },
1412 | "node_modules/punycode": {
1413 | "version": "2.3.1",
1414 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
1415 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
1416 | "engines": {
1417 | "node": ">=6"
1418 | }
1419 | },
1420 | "node_modules/readdirp": {
1421 | "version": "4.1.1",
1422 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz",
1423 | "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==",
1424 | "engines": {
1425 | "node": ">= 14.18.0"
1426 | },
1427 | "funding": {
1428 | "type": "individual",
1429 | "url": "https://paulmillr.com/funding/"
1430 | }
1431 | },
1432 | "node_modules/resolve-from": {
1433 | "version": "5.0.0",
1434 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
1435 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
1436 | "engines": {
1437 | "node": ">=8"
1438 | }
1439 | },
1440 | "node_modules/rimraf": {
1441 | "version": "6.0.1",
1442 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
1443 | "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
1444 | "dev": true,
1445 | "dependencies": {
1446 | "glob": "^11.0.0",
1447 | "package-json-from-dist": "^1.0.0"
1448 | },
1449 | "bin": {
1450 | "rimraf": "dist/esm/bin.mjs"
1451 | },
1452 | "engines": {
1453 | "node": "20 || >=22"
1454 | },
1455 | "funding": {
1456 | "url": "https://github.com/sponsors/isaacs"
1457 | }
1458 | },
1459 | "node_modules/rollup": {
1460 | "version": "4.31.0",
1461 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.31.0.tgz",
1462 | "integrity": "sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw==",
1463 | "dependencies": {
1464 | "@types/estree": "1.0.6"
1465 | },
1466 | "bin": {
1467 | "rollup": "dist/bin/rollup"
1468 | },
1469 | "engines": {
1470 | "node": ">=18.0.0",
1471 | "npm": ">=8.0.0"
1472 | },
1473 | "optionalDependencies": {
1474 | "@rollup/rollup-android-arm-eabi": "4.31.0",
1475 | "@rollup/rollup-android-arm64": "4.31.0",
1476 | "@rollup/rollup-darwin-arm64": "4.31.0",
1477 | "@rollup/rollup-darwin-x64": "4.31.0",
1478 | "@rollup/rollup-freebsd-arm64": "4.31.0",
1479 | "@rollup/rollup-freebsd-x64": "4.31.0",
1480 | "@rollup/rollup-linux-arm-gnueabihf": "4.31.0",
1481 | "@rollup/rollup-linux-arm-musleabihf": "4.31.0",
1482 | "@rollup/rollup-linux-arm64-gnu": "4.31.0",
1483 | "@rollup/rollup-linux-arm64-musl": "4.31.0",
1484 | "@rollup/rollup-linux-loongarch64-gnu": "4.31.0",
1485 | "@rollup/rollup-linux-powerpc64le-gnu": "4.31.0",
1486 | "@rollup/rollup-linux-riscv64-gnu": "4.31.0",
1487 | "@rollup/rollup-linux-s390x-gnu": "4.31.0",
1488 | "@rollup/rollup-linux-x64-gnu": "4.31.0",
1489 | "@rollup/rollup-linux-x64-musl": "4.31.0",
1490 | "@rollup/rollup-win32-arm64-msvc": "4.31.0",
1491 | "@rollup/rollup-win32-ia32-msvc": "4.31.0",
1492 | "@rollup/rollup-win32-x64-msvc": "4.31.0",
1493 | "fsevents": "~2.3.2"
1494 | }
1495 | },
1496 | "node_modules/shebang-command": {
1497 | "version": "2.0.0",
1498 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1499 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1500 | "dependencies": {
1501 | "shebang-regex": "^3.0.0"
1502 | },
1503 | "engines": {
1504 | "node": ">=8"
1505 | }
1506 | },
1507 | "node_modules/shebang-regex": {
1508 | "version": "3.0.0",
1509 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1510 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1511 | "engines": {
1512 | "node": ">=8"
1513 | }
1514 | },
1515 | "node_modules/siginfo": {
1516 | "version": "2.0.0",
1517 | "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
1518 | "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
1519 | "dev": true
1520 | },
1521 | "node_modules/signal-exit": {
1522 | "version": "4.1.0",
1523 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
1524 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
1525 | "engines": {
1526 | "node": ">=14"
1527 | },
1528 | "funding": {
1529 | "url": "https://github.com/sponsors/isaacs"
1530 | }
1531 | },
1532 | "node_modules/source-map": {
1533 | "version": "0.8.0-beta.0",
1534 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
1535 | "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
1536 | "dependencies": {
1537 | "whatwg-url": "^7.0.0"
1538 | },
1539 | "engines": {
1540 | "node": ">= 8"
1541 | }
1542 | },
1543 | "node_modules/source-map-js": {
1544 | "version": "1.2.1",
1545 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
1546 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
1547 | "devOptional": true,
1548 | "engines": {
1549 | "node": ">=0.10.0"
1550 | }
1551 | },
1552 | "node_modules/stackback": {
1553 | "version": "0.0.2",
1554 | "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
1555 | "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
1556 | "dev": true
1557 | },
1558 | "node_modules/std-env": {
1559 | "version": "3.8.0",
1560 | "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz",
1561 | "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==",
1562 | "dev": true
1563 | },
1564 | "node_modules/string-width": {
1565 | "version": "5.1.2",
1566 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
1567 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
1568 | "dependencies": {
1569 | "eastasianwidth": "^0.2.0",
1570 | "emoji-regex": "^9.2.2",
1571 | "strip-ansi": "^7.0.1"
1572 | },
1573 | "engines": {
1574 | "node": ">=12"
1575 | },
1576 | "funding": {
1577 | "url": "https://github.com/sponsors/sindresorhus"
1578 | }
1579 | },
1580 | "node_modules/string-width-cjs": {
1581 | "name": "string-width",
1582 | "version": "4.2.3",
1583 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1584 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1585 | "dependencies": {
1586 | "emoji-regex": "^8.0.0",
1587 | "is-fullwidth-code-point": "^3.0.0",
1588 | "strip-ansi": "^6.0.1"
1589 | },
1590 | "engines": {
1591 | "node": ">=8"
1592 | }
1593 | },
1594 | "node_modules/string-width-cjs/node_modules/ansi-regex": {
1595 | "version": "5.0.1",
1596 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1597 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1598 | "engines": {
1599 | "node": ">=8"
1600 | }
1601 | },
1602 | "node_modules/string-width-cjs/node_modules/emoji-regex": {
1603 | "version": "8.0.0",
1604 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1605 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
1606 | },
1607 | "node_modules/string-width-cjs/node_modules/strip-ansi": {
1608 | "version": "6.0.1",
1609 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1610 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1611 | "dependencies": {
1612 | "ansi-regex": "^5.0.1"
1613 | },
1614 | "engines": {
1615 | "node": ">=8"
1616 | }
1617 | },
1618 | "node_modules/strip-ansi": {
1619 | "version": "7.1.0",
1620 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
1621 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
1622 | "dependencies": {
1623 | "ansi-regex": "^6.0.1"
1624 | },
1625 | "engines": {
1626 | "node": ">=12"
1627 | },
1628 | "funding": {
1629 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
1630 | }
1631 | },
1632 | "node_modules/strip-ansi-cjs": {
1633 | "name": "strip-ansi",
1634 | "version": "6.0.1",
1635 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1636 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1637 | "dependencies": {
1638 | "ansi-regex": "^5.0.1"
1639 | },
1640 | "engines": {
1641 | "node": ">=8"
1642 | }
1643 | },
1644 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
1645 | "version": "5.0.1",
1646 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1647 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1648 | "engines": {
1649 | "node": ">=8"
1650 | }
1651 | },
1652 | "node_modules/sucrase": {
1653 | "version": "3.35.0",
1654 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
1655 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
1656 | "dependencies": {
1657 | "@jridgewell/gen-mapping": "^0.3.2",
1658 | "commander": "^4.0.0",
1659 | "glob": "^10.3.10",
1660 | "lines-and-columns": "^1.1.6",
1661 | "mz": "^2.7.0",
1662 | "pirates": "^4.0.1",
1663 | "ts-interface-checker": "^0.1.9"
1664 | },
1665 | "bin": {
1666 | "sucrase": "bin/sucrase",
1667 | "sucrase-node": "bin/sucrase-node"
1668 | },
1669 | "engines": {
1670 | "node": ">=16 || 14 >=14.17"
1671 | }
1672 | },
1673 | "node_modules/sucrase/node_modules/glob": {
1674 | "version": "10.4.5",
1675 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
1676 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
1677 | "dependencies": {
1678 | "foreground-child": "^3.1.0",
1679 | "jackspeak": "^3.1.2",
1680 | "minimatch": "^9.0.4",
1681 | "minipass": "^7.1.2",
1682 | "package-json-from-dist": "^1.0.0",
1683 | "path-scurry": "^1.11.1"
1684 | },
1685 | "bin": {
1686 | "glob": "dist/esm/bin.mjs"
1687 | },
1688 | "funding": {
1689 | "url": "https://github.com/sponsors/isaacs"
1690 | }
1691 | },
1692 | "node_modules/sucrase/node_modules/jackspeak": {
1693 | "version": "3.4.3",
1694 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
1695 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
1696 | "dependencies": {
1697 | "@isaacs/cliui": "^8.0.2"
1698 | },
1699 | "funding": {
1700 | "url": "https://github.com/sponsors/isaacs"
1701 | },
1702 | "optionalDependencies": {
1703 | "@pkgjs/parseargs": "^0.11.0"
1704 | }
1705 | },
1706 | "node_modules/sucrase/node_modules/lru-cache": {
1707 | "version": "10.4.3",
1708 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
1709 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
1710 | },
1711 | "node_modules/sucrase/node_modules/minimatch": {
1712 | "version": "9.0.5",
1713 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
1714 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1715 | "dependencies": {
1716 | "brace-expansion": "^2.0.1"
1717 | },
1718 | "engines": {
1719 | "node": ">=16 || 14 >=14.17"
1720 | },
1721 | "funding": {
1722 | "url": "https://github.com/sponsors/isaacs"
1723 | }
1724 | },
1725 | "node_modules/sucrase/node_modules/path-scurry": {
1726 | "version": "1.11.1",
1727 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
1728 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
1729 | "dependencies": {
1730 | "lru-cache": "^10.2.0",
1731 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
1732 | },
1733 | "engines": {
1734 | "node": ">=16 || 14 >=14.18"
1735 | },
1736 | "funding": {
1737 | "url": "https://github.com/sponsors/isaacs"
1738 | }
1739 | },
1740 | "node_modules/thenify": {
1741 | "version": "3.3.1",
1742 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
1743 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
1744 | "dependencies": {
1745 | "any-promise": "^1.0.0"
1746 | }
1747 | },
1748 | "node_modules/thenify-all": {
1749 | "version": "1.6.0",
1750 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
1751 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
1752 | "dependencies": {
1753 | "thenify": ">= 3.1.0 < 4"
1754 | },
1755 | "engines": {
1756 | "node": ">=0.8"
1757 | }
1758 | },
1759 | "node_modules/tinybench": {
1760 | "version": "2.9.0",
1761 | "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
1762 | "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
1763 | "dev": true
1764 | },
1765 | "node_modules/tinyexec": {
1766 | "version": "0.3.2",
1767 | "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
1768 | "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="
1769 | },
1770 | "node_modules/tinyglobby": {
1771 | "version": "0.2.10",
1772 | "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz",
1773 | "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==",
1774 | "dependencies": {
1775 | "fdir": "^6.4.2",
1776 | "picomatch": "^4.0.2"
1777 | },
1778 | "engines": {
1779 | "node": ">=12.0.0"
1780 | }
1781 | },
1782 | "node_modules/tinypool": {
1783 | "version": "1.0.2",
1784 | "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz",
1785 | "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==",
1786 | "dev": true,
1787 | "engines": {
1788 | "node": "^18.0.0 || >=20.0.0"
1789 | }
1790 | },
1791 | "node_modules/tinyrainbow": {
1792 | "version": "2.0.0",
1793 | "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
1794 | "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==",
1795 | "dev": true,
1796 | "engines": {
1797 | "node": ">=14.0.0"
1798 | }
1799 | },
1800 | "node_modules/tinyspy": {
1801 | "version": "3.0.2",
1802 | "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
1803 | "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
1804 | "dev": true,
1805 | "engines": {
1806 | "node": ">=14.0.0"
1807 | }
1808 | },
1809 | "node_modules/tr46": {
1810 | "version": "1.0.1",
1811 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
1812 | "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
1813 | "dependencies": {
1814 | "punycode": "^2.1.0"
1815 | }
1816 | },
1817 | "node_modules/tree-kill": {
1818 | "version": "1.2.2",
1819 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
1820 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
1821 | "bin": {
1822 | "tree-kill": "cli.js"
1823 | }
1824 | },
1825 | "node_modules/ts-interface-checker": {
1826 | "version": "0.1.13",
1827 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
1828 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
1829 | },
1830 | "node_modules/tsup": {
1831 | "version": "8.3.6",
1832 | "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.3.6.tgz",
1833 | "integrity": "sha512-XkVtlDV/58S9Ye0JxUUTcrQk4S+EqlOHKzg6Roa62rdjL1nGWNUstG0xgI4vanHdfIpjP448J8vlN0oK6XOJ5g==",
1834 | "dependencies": {
1835 | "bundle-require": "^5.0.0",
1836 | "cac": "^6.7.14",
1837 | "chokidar": "^4.0.1",
1838 | "consola": "^3.2.3",
1839 | "debug": "^4.3.7",
1840 | "esbuild": "^0.24.0",
1841 | "joycon": "^3.1.1",
1842 | "picocolors": "^1.1.1",
1843 | "postcss-load-config": "^6.0.1",
1844 | "resolve-from": "^5.0.0",
1845 | "rollup": "^4.24.0",
1846 | "source-map": "0.8.0-beta.0",
1847 | "sucrase": "^3.35.0",
1848 | "tinyexec": "^0.3.1",
1849 | "tinyglobby": "^0.2.9",
1850 | "tree-kill": "^1.2.2"
1851 | },
1852 | "bin": {
1853 | "tsup": "dist/cli-default.js",
1854 | "tsup-node": "dist/cli-node.js"
1855 | },
1856 | "engines": {
1857 | "node": ">=18"
1858 | },
1859 | "peerDependencies": {
1860 | "@microsoft/api-extractor": "^7.36.0",
1861 | "@swc/core": "^1",
1862 | "postcss": "^8.4.12",
1863 | "typescript": ">=4.5.0"
1864 | },
1865 | "peerDependenciesMeta": {
1866 | "@microsoft/api-extractor": {
1867 | "optional": true
1868 | },
1869 | "@swc/core": {
1870 | "optional": true
1871 | },
1872 | "postcss": {
1873 | "optional": true
1874 | },
1875 | "typescript": {
1876 | "optional": true
1877 | }
1878 | }
1879 | },
1880 | "node_modules/typescript": {
1881 | "version": "5.7.3",
1882 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
1883 | "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
1884 | "devOptional": true,
1885 | "bin": {
1886 | "tsc": "bin/tsc",
1887 | "tsserver": "bin/tsserver"
1888 | },
1889 | "engines": {
1890 | "node": ">=14.17"
1891 | }
1892 | },
1893 | "node_modules/vite": {
1894 | "version": "6.0.11",
1895 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.11.tgz",
1896 | "integrity": "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==",
1897 | "dev": true,
1898 | "dependencies": {
1899 | "esbuild": "^0.24.2",
1900 | "postcss": "^8.4.49",
1901 | "rollup": "^4.23.0"
1902 | },
1903 | "bin": {
1904 | "vite": "bin/vite.js"
1905 | },
1906 | "engines": {
1907 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
1908 | },
1909 | "funding": {
1910 | "url": "https://github.com/vitejs/vite?sponsor=1"
1911 | },
1912 | "optionalDependencies": {
1913 | "fsevents": "~2.3.3"
1914 | },
1915 | "peerDependencies": {
1916 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
1917 | "jiti": ">=1.21.0",
1918 | "less": "*",
1919 | "lightningcss": "^1.21.0",
1920 | "sass": "*",
1921 | "sass-embedded": "*",
1922 | "stylus": "*",
1923 | "sugarss": "*",
1924 | "terser": "^5.16.0",
1925 | "tsx": "^4.8.1",
1926 | "yaml": "^2.4.2"
1927 | },
1928 | "peerDependenciesMeta": {
1929 | "@types/node": {
1930 | "optional": true
1931 | },
1932 | "jiti": {
1933 | "optional": true
1934 | },
1935 | "less": {
1936 | "optional": true
1937 | },
1938 | "lightningcss": {
1939 | "optional": true
1940 | },
1941 | "sass": {
1942 | "optional": true
1943 | },
1944 | "sass-embedded": {
1945 | "optional": true
1946 | },
1947 | "stylus": {
1948 | "optional": true
1949 | },
1950 | "sugarss": {
1951 | "optional": true
1952 | },
1953 | "terser": {
1954 | "optional": true
1955 | },
1956 | "tsx": {
1957 | "optional": true
1958 | },
1959 | "yaml": {
1960 | "optional": true
1961 | }
1962 | }
1963 | },
1964 | "node_modules/vite-node": {
1965 | "version": "3.0.3",
1966 | "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.3.tgz",
1967 | "integrity": "sha512-0sQcwhwAEw/UJGojbhOrnq3HtiZ3tC7BzpAa0lx3QaTX0S3YX70iGcik25UBdB96pmdwjyY2uyKNYruxCDmiEg==",
1968 | "dev": true,
1969 | "dependencies": {
1970 | "cac": "^6.7.14",
1971 | "debug": "^4.4.0",
1972 | "es-module-lexer": "^1.6.0",
1973 | "pathe": "^2.0.1",
1974 | "vite": "^5.0.0 || ^6.0.0"
1975 | },
1976 | "bin": {
1977 | "vite-node": "vite-node.mjs"
1978 | },
1979 | "engines": {
1980 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
1981 | },
1982 | "funding": {
1983 | "url": "https://opencollective.com/vitest"
1984 | }
1985 | },
1986 | "node_modules/vitest": {
1987 | "version": "3.0.3",
1988 | "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.3.tgz",
1989 | "integrity": "sha512-dWdwTFUW9rcnL0LyF2F+IfvNQWB0w9DERySCk8VMG75F8k25C7LsZoh6XfCjPvcR8Nb+Lqi9JKr6vnzH7HSrpQ==",
1990 | "dev": true,
1991 | "dependencies": {
1992 | "@vitest/expect": "3.0.3",
1993 | "@vitest/mocker": "3.0.3",
1994 | "@vitest/pretty-format": "^3.0.3",
1995 | "@vitest/runner": "3.0.3",
1996 | "@vitest/snapshot": "3.0.3",
1997 | "@vitest/spy": "3.0.3",
1998 | "@vitest/utils": "3.0.3",
1999 | "chai": "^5.1.2",
2000 | "debug": "^4.4.0",
2001 | "expect-type": "^1.1.0",
2002 | "magic-string": "^0.30.17",
2003 | "pathe": "^2.0.1",
2004 | "std-env": "^3.8.0",
2005 | "tinybench": "^2.9.0",
2006 | "tinyexec": "^0.3.2",
2007 | "tinypool": "^1.0.2",
2008 | "tinyrainbow": "^2.0.0",
2009 | "vite": "^5.0.0 || ^6.0.0",
2010 | "vite-node": "3.0.3",
2011 | "why-is-node-running": "^2.3.0"
2012 | },
2013 | "bin": {
2014 | "vitest": "vitest.mjs"
2015 | },
2016 | "engines": {
2017 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2018 | },
2019 | "funding": {
2020 | "url": "https://opencollective.com/vitest"
2021 | },
2022 | "peerDependencies": {
2023 | "@edge-runtime/vm": "*",
2024 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
2025 | "@vitest/browser": "3.0.3",
2026 | "@vitest/ui": "3.0.3",
2027 | "happy-dom": "*",
2028 | "jsdom": "*"
2029 | },
2030 | "peerDependenciesMeta": {
2031 | "@edge-runtime/vm": {
2032 | "optional": true
2033 | },
2034 | "@types/node": {
2035 | "optional": true
2036 | },
2037 | "@vitest/browser": {
2038 | "optional": true
2039 | },
2040 | "@vitest/ui": {
2041 | "optional": true
2042 | },
2043 | "happy-dom": {
2044 | "optional": true
2045 | },
2046 | "jsdom": {
2047 | "optional": true
2048 | }
2049 | }
2050 | },
2051 | "node_modules/webidl-conversions": {
2052 | "version": "4.0.2",
2053 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
2054 | "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
2055 | },
2056 | "node_modules/whatwg-url": {
2057 | "version": "7.1.0",
2058 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
2059 | "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
2060 | "dependencies": {
2061 | "lodash.sortby": "^4.7.0",
2062 | "tr46": "^1.0.1",
2063 | "webidl-conversions": "^4.0.2"
2064 | }
2065 | },
2066 | "node_modules/which": {
2067 | "version": "2.0.2",
2068 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2069 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2070 | "dependencies": {
2071 | "isexe": "^2.0.0"
2072 | },
2073 | "bin": {
2074 | "node-which": "bin/node-which"
2075 | },
2076 | "engines": {
2077 | "node": ">= 8"
2078 | }
2079 | },
2080 | "node_modules/why-is-node-running": {
2081 | "version": "2.3.0",
2082 | "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
2083 | "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
2084 | "dev": true,
2085 | "dependencies": {
2086 | "siginfo": "^2.0.0",
2087 | "stackback": "0.0.2"
2088 | },
2089 | "bin": {
2090 | "why-is-node-running": "cli.js"
2091 | },
2092 | "engines": {
2093 | "node": ">=8"
2094 | }
2095 | },
2096 | "node_modules/wrap-ansi": {
2097 | "version": "8.1.0",
2098 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
2099 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
2100 | "dependencies": {
2101 | "ansi-styles": "^6.1.0",
2102 | "string-width": "^5.0.1",
2103 | "strip-ansi": "^7.0.1"
2104 | },
2105 | "engines": {
2106 | "node": ">=12"
2107 | },
2108 | "funding": {
2109 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2110 | }
2111 | },
2112 | "node_modules/wrap-ansi-cjs": {
2113 | "name": "wrap-ansi",
2114 | "version": "7.0.0",
2115 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2116 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2117 | "dependencies": {
2118 | "ansi-styles": "^4.0.0",
2119 | "string-width": "^4.1.0",
2120 | "strip-ansi": "^6.0.0"
2121 | },
2122 | "engines": {
2123 | "node": ">=10"
2124 | },
2125 | "funding": {
2126 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2127 | }
2128 | },
2129 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
2130 | "version": "5.0.1",
2131 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2132 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2133 | "engines": {
2134 | "node": ">=8"
2135 | }
2136 | },
2137 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
2138 | "version": "4.3.0",
2139 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2140 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2141 | "dependencies": {
2142 | "color-convert": "^2.0.1"
2143 | },
2144 | "engines": {
2145 | "node": ">=8"
2146 | },
2147 | "funding": {
2148 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2149 | }
2150 | },
2151 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
2152 | "version": "8.0.0",
2153 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2154 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
2155 | },
2156 | "node_modules/wrap-ansi-cjs/node_modules/string-width": {
2157 | "version": "4.2.3",
2158 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2159 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2160 | "dependencies": {
2161 | "emoji-regex": "^8.0.0",
2162 | "is-fullwidth-code-point": "^3.0.0",
2163 | "strip-ansi": "^6.0.1"
2164 | },
2165 | "engines": {
2166 | "node": ">=8"
2167 | }
2168 | },
2169 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
2170 | "version": "6.0.1",
2171 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2172 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2173 | "dependencies": {
2174 | "ansi-regex": "^5.0.1"
2175 | },
2176 | "engines": {
2177 | "node": ">=8"
2178 | }
2179 | }
2180 | }
2181 | }
2182 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ts-fast-universal",
3 | "version": "0.0.0",
4 | "description": "Boilerplate for building npm packages in TypeScript",
5 | "author": "yangshun",
6 | "license": "MIT",
7 | "type": "module",
8 | "main": "dist/index.js",
9 | "module": "dist/index.mjs",
10 | "types": "dist/index.d.ts",
11 | "exports": {
12 | ".": {
13 | "import": {
14 | "types": "./dist/index.d.mts",
15 | "default": "./dist/index.mjs"
16 | },
17 | "require": {
18 | "types": "./dist/index.d.ts",
19 | "default": "./dist/index.js"
20 | }
21 | }
22 | },
23 | "files": [
24 | "dist"
25 | ],
26 | "sideEffects": false,
27 | "scripts": {
28 | "build": "tsup",
29 | "dev": "tsup --watch",
30 | "clean": "rimraf dist",
31 | "test": "vitest run",
32 | "test:watch": "vitest",
33 | "typecheck": "tsc",
34 | "verify": "npm run typecheck && npm run test && npm run build",
35 | "prepublishOnly": "npm run verify"
36 | },
37 | "devDependencies": {
38 | "rimraf": "^6.0.1",
39 | "tsup": "^8.3.6",
40 | "typescript": "^5.7.3",
41 | "vitest": "^3.0.2"
42 | },
43 | "engines": {
44 | "node": "^20.0.0 || >=22.0.0"
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/src/__tests__/add.test.ts:
--------------------------------------------------------------------------------
1 | import { add } from '../add';
2 |
3 | test('add', () => {
4 | expect(add(1, 2)).toBe(3);
5 | });
6 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/src/__tests__/subtract.test.ts:
--------------------------------------------------------------------------------
1 | import { subtract } from '../subtract';
2 |
3 | test('subtract', () => {
4 | expect(subtract(3, 2)).toBe(1);
5 | });
6 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/src/add.ts:
--------------------------------------------------------------------------------
1 | export function add(a: number, b: number): number {
2 | return a + b;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/src/index.ts:
--------------------------------------------------------------------------------
1 | import { add } from './add';
2 | import { subtract } from './subtract';
3 |
4 | export { add, subtract };
5 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/src/subtract.ts:
--------------------------------------------------------------------------------
1 | export function subtract(a: number, b: number): number {
2 | return a - b;
3 | }
4 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "strict": true,
4 | "module": "ESNext",
5 | "moduleResolution": "bundler",
6 | "skipLibCheck": true,
7 | "esModuleInterop": true,
8 | "noEmit": true,
9 | "types": ["vitest/globals"]
10 | },
11 | "include": ["src", "tsup.config.ts", "vitest.config.ts"]
12 | }
13 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'tsup';
2 |
3 | export default defineConfig({
4 | clean: true,
5 | entry: ['./src/index.ts'],
6 | format: ['cjs', 'esm'],
7 | dts: true,
8 | treeshake: true,
9 | cjsInterop: true,
10 | });
11 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/templates/universal/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitest/config';
2 |
3 | export default defineConfig({
4 | test: {
5 | globals: true,
6 | },
7 | });
8 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "strict": true,
4 | "skipLibCheck": true,
5 | "esModuleInterop": true,
6 | "module": "ESNext",
7 | "moduleResolution": "bundler",
8 | "target": "ES2020",
9 | "noEmit": true,
10 | "baseUrl": "./",
11 | "paths": {
12 | "~/*": ["./src/*"]
13 | }
14 | },
15 | "include": ["src", "tsup.config.ts"]
16 | }
17 |
--------------------------------------------------------------------------------
/packages/create-ts-fast/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'tsup';
2 |
3 | const isDev = process.env.npm_lifecycle_event === 'dev';
4 |
5 | export default defineConfig({
6 | clean: true,
7 | entry: ['./src/index.ts'],
8 | format: ['esm'],
9 | minify: !isDev,
10 | target: 'esnext',
11 | onSuccess: isDev ? 'node dist/index.js' : undefined,
12 | });
13 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | devDependencies:
11 | prettier:
12 | specifier: ^3.4.2
13 | version: 3.4.2
14 |
15 | packages/create-ts-fast:
16 | dependencies:
17 | '@clack/prompts':
18 | specifier: ^0.9.1
19 | version: 0.9.1
20 | minimist:
21 | specifier: ^1.2.8
22 | version: 1.2.8
23 | devDependencies:
24 | '@types/minimist':
25 | specifier: ^1.2.5
26 | version: 1.2.5
27 | '@types/node':
28 | specifier: ^22.10.7
29 | version: 22.10.7
30 | '@types/prompts':
31 | specifier: ^2.4.9
32 | version: 2.4.9
33 | rimraf:
34 | specifier: ^6.0.1
35 | version: 6.0.1
36 | tsup:
37 | specifier: ^8.3.5
38 | version: 8.3.5(typescript@5.7.3)
39 | typescript:
40 | specifier: ^5.7.3
41 | version: 5.7.3
42 |
43 | packages:
44 |
45 | /@clack/core@0.4.1:
46 | resolution: {integrity: sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==}
47 | dependencies:
48 | picocolors: 1.1.1
49 | sisteransi: 1.0.5
50 | dev: false
51 |
52 | /@clack/prompts@0.9.1:
53 | resolution: {integrity: sha512-JIpyaboYZeWYlyP0H+OoPPxd6nqueG/CmN6ixBiNFsIDHREevjIf0n0Ohh5gr5C8pEDknzgvz+pIJ8dMhzWIeg==}
54 | dependencies:
55 | '@clack/core': 0.4.1
56 | picocolors: 1.1.1
57 | sisteransi: 1.0.5
58 | dev: false
59 |
60 | /@esbuild/aix-ppc64@0.24.2:
61 | resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==}
62 | engines: {node: '>=18'}
63 | cpu: [ppc64]
64 | os: [aix]
65 | requiresBuild: true
66 | dev: true
67 | optional: true
68 |
69 | /@esbuild/android-arm64@0.24.2:
70 | resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==}
71 | engines: {node: '>=18'}
72 | cpu: [arm64]
73 | os: [android]
74 | requiresBuild: true
75 | dev: true
76 | optional: true
77 |
78 | /@esbuild/android-arm@0.24.2:
79 | resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==}
80 | engines: {node: '>=18'}
81 | cpu: [arm]
82 | os: [android]
83 | requiresBuild: true
84 | dev: true
85 | optional: true
86 |
87 | /@esbuild/android-x64@0.24.2:
88 | resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==}
89 | engines: {node: '>=18'}
90 | cpu: [x64]
91 | os: [android]
92 | requiresBuild: true
93 | dev: true
94 | optional: true
95 |
96 | /@esbuild/darwin-arm64@0.24.2:
97 | resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==}
98 | engines: {node: '>=18'}
99 | cpu: [arm64]
100 | os: [darwin]
101 | requiresBuild: true
102 | dev: true
103 | optional: true
104 |
105 | /@esbuild/darwin-x64@0.24.2:
106 | resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==}
107 | engines: {node: '>=18'}
108 | cpu: [x64]
109 | os: [darwin]
110 | requiresBuild: true
111 | dev: true
112 | optional: true
113 |
114 | /@esbuild/freebsd-arm64@0.24.2:
115 | resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==}
116 | engines: {node: '>=18'}
117 | cpu: [arm64]
118 | os: [freebsd]
119 | requiresBuild: true
120 | dev: true
121 | optional: true
122 |
123 | /@esbuild/freebsd-x64@0.24.2:
124 | resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==}
125 | engines: {node: '>=18'}
126 | cpu: [x64]
127 | os: [freebsd]
128 | requiresBuild: true
129 | dev: true
130 | optional: true
131 |
132 | /@esbuild/linux-arm64@0.24.2:
133 | resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==}
134 | engines: {node: '>=18'}
135 | cpu: [arm64]
136 | os: [linux]
137 | requiresBuild: true
138 | dev: true
139 | optional: true
140 |
141 | /@esbuild/linux-arm@0.24.2:
142 | resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==}
143 | engines: {node: '>=18'}
144 | cpu: [arm]
145 | os: [linux]
146 | requiresBuild: true
147 | dev: true
148 | optional: true
149 |
150 | /@esbuild/linux-ia32@0.24.2:
151 | resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==}
152 | engines: {node: '>=18'}
153 | cpu: [ia32]
154 | os: [linux]
155 | requiresBuild: true
156 | dev: true
157 | optional: true
158 |
159 | /@esbuild/linux-loong64@0.24.2:
160 | resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==}
161 | engines: {node: '>=18'}
162 | cpu: [loong64]
163 | os: [linux]
164 | requiresBuild: true
165 | dev: true
166 | optional: true
167 |
168 | /@esbuild/linux-mips64el@0.24.2:
169 | resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==}
170 | engines: {node: '>=18'}
171 | cpu: [mips64el]
172 | os: [linux]
173 | requiresBuild: true
174 | dev: true
175 | optional: true
176 |
177 | /@esbuild/linux-ppc64@0.24.2:
178 | resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==}
179 | engines: {node: '>=18'}
180 | cpu: [ppc64]
181 | os: [linux]
182 | requiresBuild: true
183 | dev: true
184 | optional: true
185 |
186 | /@esbuild/linux-riscv64@0.24.2:
187 | resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==}
188 | engines: {node: '>=18'}
189 | cpu: [riscv64]
190 | os: [linux]
191 | requiresBuild: true
192 | dev: true
193 | optional: true
194 |
195 | /@esbuild/linux-s390x@0.24.2:
196 | resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==}
197 | engines: {node: '>=18'}
198 | cpu: [s390x]
199 | os: [linux]
200 | requiresBuild: true
201 | dev: true
202 | optional: true
203 |
204 | /@esbuild/linux-x64@0.24.2:
205 | resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==}
206 | engines: {node: '>=18'}
207 | cpu: [x64]
208 | os: [linux]
209 | requiresBuild: true
210 | dev: true
211 | optional: true
212 |
213 | /@esbuild/netbsd-arm64@0.24.2:
214 | resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==}
215 | engines: {node: '>=18'}
216 | cpu: [arm64]
217 | os: [netbsd]
218 | requiresBuild: true
219 | dev: true
220 | optional: true
221 |
222 | /@esbuild/netbsd-x64@0.24.2:
223 | resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==}
224 | engines: {node: '>=18'}
225 | cpu: [x64]
226 | os: [netbsd]
227 | requiresBuild: true
228 | dev: true
229 | optional: true
230 |
231 | /@esbuild/openbsd-arm64@0.24.2:
232 | resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==}
233 | engines: {node: '>=18'}
234 | cpu: [arm64]
235 | os: [openbsd]
236 | requiresBuild: true
237 | dev: true
238 | optional: true
239 |
240 | /@esbuild/openbsd-x64@0.24.2:
241 | resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==}
242 | engines: {node: '>=18'}
243 | cpu: [x64]
244 | os: [openbsd]
245 | requiresBuild: true
246 | dev: true
247 | optional: true
248 |
249 | /@esbuild/sunos-x64@0.24.2:
250 | resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==}
251 | engines: {node: '>=18'}
252 | cpu: [x64]
253 | os: [sunos]
254 | requiresBuild: true
255 | dev: true
256 | optional: true
257 |
258 | /@esbuild/win32-arm64@0.24.2:
259 | resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==}
260 | engines: {node: '>=18'}
261 | cpu: [arm64]
262 | os: [win32]
263 | requiresBuild: true
264 | dev: true
265 | optional: true
266 |
267 | /@esbuild/win32-ia32@0.24.2:
268 | resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==}
269 | engines: {node: '>=18'}
270 | cpu: [ia32]
271 | os: [win32]
272 | requiresBuild: true
273 | dev: true
274 | optional: true
275 |
276 | /@esbuild/win32-x64@0.24.2:
277 | resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==}
278 | engines: {node: '>=18'}
279 | cpu: [x64]
280 | os: [win32]
281 | requiresBuild: true
282 | dev: true
283 | optional: true
284 |
285 | /@isaacs/cliui@8.0.2:
286 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
287 | engines: {node: '>=12'}
288 | dependencies:
289 | string-width: 5.1.2
290 | string-width-cjs: /string-width@4.2.3
291 | strip-ansi: 7.1.0
292 | strip-ansi-cjs: /strip-ansi@6.0.1
293 | wrap-ansi: 8.1.0
294 | wrap-ansi-cjs: /wrap-ansi@7.0.0
295 | dev: true
296 |
297 | /@jridgewell/gen-mapping@0.3.8:
298 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
299 | engines: {node: '>=6.0.0'}
300 | dependencies:
301 | '@jridgewell/set-array': 1.2.1
302 | '@jridgewell/sourcemap-codec': 1.5.0
303 | '@jridgewell/trace-mapping': 0.3.25
304 | dev: true
305 |
306 | /@jridgewell/resolve-uri@3.1.2:
307 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
308 | engines: {node: '>=6.0.0'}
309 | dev: true
310 |
311 | /@jridgewell/set-array@1.2.1:
312 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
313 | engines: {node: '>=6.0.0'}
314 | dev: true
315 |
316 | /@jridgewell/sourcemap-codec@1.5.0:
317 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
318 | dev: true
319 |
320 | /@jridgewell/trace-mapping@0.3.25:
321 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
322 | dependencies:
323 | '@jridgewell/resolve-uri': 3.1.2
324 | '@jridgewell/sourcemap-codec': 1.5.0
325 | dev: true
326 |
327 | /@pkgjs/parseargs@0.11.0:
328 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
329 | engines: {node: '>=14'}
330 | requiresBuild: true
331 | dev: true
332 | optional: true
333 |
334 | /@rollup/rollup-android-arm-eabi@4.30.1:
335 | resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==}
336 | cpu: [arm]
337 | os: [android]
338 | requiresBuild: true
339 | dev: true
340 | optional: true
341 |
342 | /@rollup/rollup-android-arm64@4.30.1:
343 | resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==}
344 | cpu: [arm64]
345 | os: [android]
346 | requiresBuild: true
347 | dev: true
348 | optional: true
349 |
350 | /@rollup/rollup-darwin-arm64@4.30.1:
351 | resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==}
352 | cpu: [arm64]
353 | os: [darwin]
354 | requiresBuild: true
355 | dev: true
356 | optional: true
357 |
358 | /@rollup/rollup-darwin-x64@4.30.1:
359 | resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==}
360 | cpu: [x64]
361 | os: [darwin]
362 | requiresBuild: true
363 | dev: true
364 | optional: true
365 |
366 | /@rollup/rollup-freebsd-arm64@4.30.1:
367 | resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==}
368 | cpu: [arm64]
369 | os: [freebsd]
370 | requiresBuild: true
371 | dev: true
372 | optional: true
373 |
374 | /@rollup/rollup-freebsd-x64@4.30.1:
375 | resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==}
376 | cpu: [x64]
377 | os: [freebsd]
378 | requiresBuild: true
379 | dev: true
380 | optional: true
381 |
382 | /@rollup/rollup-linux-arm-gnueabihf@4.30.1:
383 | resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==}
384 | cpu: [arm]
385 | os: [linux]
386 | requiresBuild: true
387 | dev: true
388 | optional: true
389 |
390 | /@rollup/rollup-linux-arm-musleabihf@4.30.1:
391 | resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==}
392 | cpu: [arm]
393 | os: [linux]
394 | requiresBuild: true
395 | dev: true
396 | optional: true
397 |
398 | /@rollup/rollup-linux-arm64-gnu@4.30.1:
399 | resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==}
400 | cpu: [arm64]
401 | os: [linux]
402 | requiresBuild: true
403 | dev: true
404 | optional: true
405 |
406 | /@rollup/rollup-linux-arm64-musl@4.30.1:
407 | resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==}
408 | cpu: [arm64]
409 | os: [linux]
410 | requiresBuild: true
411 | dev: true
412 | optional: true
413 |
414 | /@rollup/rollup-linux-loongarch64-gnu@4.30.1:
415 | resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==}
416 | cpu: [loong64]
417 | os: [linux]
418 | requiresBuild: true
419 | dev: true
420 | optional: true
421 |
422 | /@rollup/rollup-linux-powerpc64le-gnu@4.30.1:
423 | resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==}
424 | cpu: [ppc64]
425 | os: [linux]
426 | requiresBuild: true
427 | dev: true
428 | optional: true
429 |
430 | /@rollup/rollup-linux-riscv64-gnu@4.30.1:
431 | resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==}
432 | cpu: [riscv64]
433 | os: [linux]
434 | requiresBuild: true
435 | dev: true
436 | optional: true
437 |
438 | /@rollup/rollup-linux-s390x-gnu@4.30.1:
439 | resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==}
440 | cpu: [s390x]
441 | os: [linux]
442 | requiresBuild: true
443 | dev: true
444 | optional: true
445 |
446 | /@rollup/rollup-linux-x64-gnu@4.30.1:
447 | resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==}
448 | cpu: [x64]
449 | os: [linux]
450 | requiresBuild: true
451 | dev: true
452 | optional: true
453 |
454 | /@rollup/rollup-linux-x64-musl@4.30.1:
455 | resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==}
456 | cpu: [x64]
457 | os: [linux]
458 | requiresBuild: true
459 | dev: true
460 | optional: true
461 |
462 | /@rollup/rollup-win32-arm64-msvc@4.30.1:
463 | resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==}
464 | cpu: [arm64]
465 | os: [win32]
466 | requiresBuild: true
467 | dev: true
468 | optional: true
469 |
470 | /@rollup/rollup-win32-ia32-msvc@4.30.1:
471 | resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==}
472 | cpu: [ia32]
473 | os: [win32]
474 | requiresBuild: true
475 | dev: true
476 | optional: true
477 |
478 | /@rollup/rollup-win32-x64-msvc@4.30.1:
479 | resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==}
480 | cpu: [x64]
481 | os: [win32]
482 | requiresBuild: true
483 | dev: true
484 | optional: true
485 |
486 | /@types/estree@1.0.6:
487 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
488 | dev: true
489 |
490 | /@types/minimist@1.2.5:
491 | resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
492 | dev: true
493 |
494 | /@types/node@22.10.7:
495 | resolution: {integrity: sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==}
496 | dependencies:
497 | undici-types: 6.20.0
498 | dev: true
499 |
500 | /@types/prompts@2.4.9:
501 | resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==}
502 | dependencies:
503 | '@types/node': 22.10.7
504 | kleur: 3.0.3
505 | dev: true
506 |
507 | /ansi-regex@5.0.1:
508 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
509 | engines: {node: '>=8'}
510 | dev: true
511 |
512 | /ansi-regex@6.1.0:
513 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
514 | engines: {node: '>=12'}
515 | dev: true
516 |
517 | /ansi-styles@4.3.0:
518 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
519 | engines: {node: '>=8'}
520 | dependencies:
521 | color-convert: 2.0.1
522 | dev: true
523 |
524 | /ansi-styles@6.2.1:
525 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
526 | engines: {node: '>=12'}
527 | dev: true
528 |
529 | /any-promise@1.3.0:
530 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
531 | dev: true
532 |
533 | /balanced-match@1.0.2:
534 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
535 | dev: true
536 |
537 | /brace-expansion@2.0.1:
538 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
539 | dependencies:
540 | balanced-match: 1.0.2
541 | dev: true
542 |
543 | /bundle-require@5.1.0(esbuild@0.24.2):
544 | resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==}
545 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
546 | peerDependencies:
547 | esbuild: '>=0.18'
548 | dependencies:
549 | esbuild: 0.24.2
550 | load-tsconfig: 0.2.5
551 | dev: true
552 |
553 | /cac@6.7.14:
554 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
555 | engines: {node: '>=8'}
556 | dev: true
557 |
558 | /chokidar@4.0.3:
559 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
560 | engines: {node: '>= 14.16.0'}
561 | dependencies:
562 | readdirp: 4.1.1
563 | dev: true
564 |
565 | /color-convert@2.0.1:
566 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
567 | engines: {node: '>=7.0.0'}
568 | dependencies:
569 | color-name: 1.1.4
570 | dev: true
571 |
572 | /color-name@1.1.4:
573 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
574 | dev: true
575 |
576 | /commander@4.1.1:
577 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
578 | engines: {node: '>= 6'}
579 | dev: true
580 |
581 | /consola@3.4.0:
582 | resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==}
583 | engines: {node: ^14.18.0 || >=16.10.0}
584 | dev: true
585 |
586 | /cross-spawn@7.0.6:
587 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
588 | engines: {node: '>= 8'}
589 | dependencies:
590 | path-key: 3.1.1
591 | shebang-command: 2.0.0
592 | which: 2.0.2
593 | dev: true
594 |
595 | /debug@4.4.0:
596 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
597 | engines: {node: '>=6.0'}
598 | peerDependencies:
599 | supports-color: '*'
600 | peerDependenciesMeta:
601 | supports-color:
602 | optional: true
603 | dependencies:
604 | ms: 2.1.3
605 | dev: true
606 |
607 | /eastasianwidth@0.2.0:
608 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
609 | dev: true
610 |
611 | /emoji-regex@8.0.0:
612 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
613 | dev: true
614 |
615 | /emoji-regex@9.2.2:
616 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
617 | dev: true
618 |
619 | /esbuild@0.24.2:
620 | resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==}
621 | engines: {node: '>=18'}
622 | hasBin: true
623 | requiresBuild: true
624 | optionalDependencies:
625 | '@esbuild/aix-ppc64': 0.24.2
626 | '@esbuild/android-arm': 0.24.2
627 | '@esbuild/android-arm64': 0.24.2
628 | '@esbuild/android-x64': 0.24.2
629 | '@esbuild/darwin-arm64': 0.24.2
630 | '@esbuild/darwin-x64': 0.24.2
631 | '@esbuild/freebsd-arm64': 0.24.2
632 | '@esbuild/freebsd-x64': 0.24.2
633 | '@esbuild/linux-arm': 0.24.2
634 | '@esbuild/linux-arm64': 0.24.2
635 | '@esbuild/linux-ia32': 0.24.2
636 | '@esbuild/linux-loong64': 0.24.2
637 | '@esbuild/linux-mips64el': 0.24.2
638 | '@esbuild/linux-ppc64': 0.24.2
639 | '@esbuild/linux-riscv64': 0.24.2
640 | '@esbuild/linux-s390x': 0.24.2
641 | '@esbuild/linux-x64': 0.24.2
642 | '@esbuild/netbsd-arm64': 0.24.2
643 | '@esbuild/netbsd-x64': 0.24.2
644 | '@esbuild/openbsd-arm64': 0.24.2
645 | '@esbuild/openbsd-x64': 0.24.2
646 | '@esbuild/sunos-x64': 0.24.2
647 | '@esbuild/win32-arm64': 0.24.2
648 | '@esbuild/win32-ia32': 0.24.2
649 | '@esbuild/win32-x64': 0.24.2
650 | dev: true
651 |
652 | /fdir@6.4.3(picomatch@4.0.2):
653 | resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==}
654 | peerDependencies:
655 | picomatch: ^3 || ^4
656 | peerDependenciesMeta:
657 | picomatch:
658 | optional: true
659 | dependencies:
660 | picomatch: 4.0.2
661 | dev: true
662 |
663 | /foreground-child@3.3.0:
664 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
665 | engines: {node: '>=14'}
666 | dependencies:
667 | cross-spawn: 7.0.6
668 | signal-exit: 4.1.0
669 | dev: true
670 |
671 | /fsevents@2.3.3:
672 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
673 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
674 | os: [darwin]
675 | requiresBuild: true
676 | dev: true
677 | optional: true
678 |
679 | /glob@10.4.5:
680 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
681 | hasBin: true
682 | dependencies:
683 | foreground-child: 3.3.0
684 | jackspeak: 3.4.3
685 | minimatch: 9.0.5
686 | minipass: 7.1.2
687 | package-json-from-dist: 1.0.1
688 | path-scurry: 1.11.1
689 | dev: true
690 |
691 | /glob@11.0.1:
692 | resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==}
693 | engines: {node: 20 || >=22}
694 | hasBin: true
695 | dependencies:
696 | foreground-child: 3.3.0
697 | jackspeak: 4.0.2
698 | minimatch: 10.0.1
699 | minipass: 7.1.2
700 | package-json-from-dist: 1.0.1
701 | path-scurry: 2.0.0
702 | dev: true
703 |
704 | /is-fullwidth-code-point@3.0.0:
705 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
706 | engines: {node: '>=8'}
707 | dev: true
708 |
709 | /isexe@2.0.0:
710 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
711 | dev: true
712 |
713 | /jackspeak@3.4.3:
714 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
715 | dependencies:
716 | '@isaacs/cliui': 8.0.2
717 | optionalDependencies:
718 | '@pkgjs/parseargs': 0.11.0
719 | dev: true
720 |
721 | /jackspeak@4.0.2:
722 | resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==}
723 | engines: {node: 20 || >=22}
724 | dependencies:
725 | '@isaacs/cliui': 8.0.2
726 | dev: true
727 |
728 | /joycon@3.1.1:
729 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
730 | engines: {node: '>=10'}
731 | dev: true
732 |
733 | /kleur@3.0.3:
734 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
735 | engines: {node: '>=6'}
736 | dev: true
737 |
738 | /lilconfig@3.1.3:
739 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
740 | engines: {node: '>=14'}
741 | dev: true
742 |
743 | /lines-and-columns@1.2.4:
744 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
745 | dev: true
746 |
747 | /load-tsconfig@0.2.5:
748 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
749 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
750 | dev: true
751 |
752 | /lodash.sortby@4.7.0:
753 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
754 | dev: true
755 |
756 | /lru-cache@10.4.3:
757 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
758 | dev: true
759 |
760 | /lru-cache@11.0.2:
761 | resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==}
762 | engines: {node: 20 || >=22}
763 | dev: true
764 |
765 | /minimatch@10.0.1:
766 | resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
767 | engines: {node: 20 || >=22}
768 | dependencies:
769 | brace-expansion: 2.0.1
770 | dev: true
771 |
772 | /minimatch@9.0.5:
773 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
774 | engines: {node: '>=16 || 14 >=14.17'}
775 | dependencies:
776 | brace-expansion: 2.0.1
777 | dev: true
778 |
779 | /minimist@1.2.8:
780 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
781 | dev: false
782 |
783 | /minipass@7.1.2:
784 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
785 | engines: {node: '>=16 || 14 >=14.17'}
786 | dev: true
787 |
788 | /ms@2.1.3:
789 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
790 | dev: true
791 |
792 | /mz@2.7.0:
793 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
794 | dependencies:
795 | any-promise: 1.3.0
796 | object-assign: 4.1.1
797 | thenify-all: 1.6.0
798 | dev: true
799 |
800 | /object-assign@4.1.1:
801 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
802 | engines: {node: '>=0.10.0'}
803 | dev: true
804 |
805 | /package-json-from-dist@1.0.1:
806 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
807 | dev: true
808 |
809 | /path-key@3.1.1:
810 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
811 | engines: {node: '>=8'}
812 | dev: true
813 |
814 | /path-scurry@1.11.1:
815 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
816 | engines: {node: '>=16 || 14 >=14.18'}
817 | dependencies:
818 | lru-cache: 10.4.3
819 | minipass: 7.1.2
820 | dev: true
821 |
822 | /path-scurry@2.0.0:
823 | resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
824 | engines: {node: 20 || >=22}
825 | dependencies:
826 | lru-cache: 11.0.2
827 | minipass: 7.1.2
828 | dev: true
829 |
830 | /picocolors@1.1.1:
831 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
832 |
833 | /picomatch@4.0.2:
834 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
835 | engines: {node: '>=12'}
836 | dev: true
837 |
838 | /pirates@4.0.6:
839 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
840 | engines: {node: '>= 6'}
841 | dev: true
842 |
843 | /postcss-load-config@6.0.1:
844 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
845 | engines: {node: '>= 18'}
846 | peerDependencies:
847 | jiti: '>=1.21.0'
848 | postcss: '>=8.0.9'
849 | tsx: ^4.8.1
850 | yaml: ^2.4.2
851 | peerDependenciesMeta:
852 | jiti:
853 | optional: true
854 | postcss:
855 | optional: true
856 | tsx:
857 | optional: true
858 | yaml:
859 | optional: true
860 | dependencies:
861 | lilconfig: 3.1.3
862 | dev: true
863 |
864 | /prettier@3.4.2:
865 | resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==}
866 | engines: {node: '>=14'}
867 | hasBin: true
868 | dev: true
869 |
870 | /punycode@2.3.1:
871 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
872 | engines: {node: '>=6'}
873 | dev: true
874 |
875 | /readdirp@4.1.1:
876 | resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==}
877 | engines: {node: '>= 14.18.0'}
878 | dev: true
879 |
880 | /resolve-from@5.0.0:
881 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
882 | engines: {node: '>=8'}
883 | dev: true
884 |
885 | /rimraf@6.0.1:
886 | resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==}
887 | engines: {node: 20 || >=22}
888 | hasBin: true
889 | dependencies:
890 | glob: 11.0.1
891 | package-json-from-dist: 1.0.1
892 | dev: true
893 |
894 | /rollup@4.30.1:
895 | resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==}
896 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
897 | hasBin: true
898 | dependencies:
899 | '@types/estree': 1.0.6
900 | optionalDependencies:
901 | '@rollup/rollup-android-arm-eabi': 4.30.1
902 | '@rollup/rollup-android-arm64': 4.30.1
903 | '@rollup/rollup-darwin-arm64': 4.30.1
904 | '@rollup/rollup-darwin-x64': 4.30.1
905 | '@rollup/rollup-freebsd-arm64': 4.30.1
906 | '@rollup/rollup-freebsd-x64': 4.30.1
907 | '@rollup/rollup-linux-arm-gnueabihf': 4.30.1
908 | '@rollup/rollup-linux-arm-musleabihf': 4.30.1
909 | '@rollup/rollup-linux-arm64-gnu': 4.30.1
910 | '@rollup/rollup-linux-arm64-musl': 4.30.1
911 | '@rollup/rollup-linux-loongarch64-gnu': 4.30.1
912 | '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1
913 | '@rollup/rollup-linux-riscv64-gnu': 4.30.1
914 | '@rollup/rollup-linux-s390x-gnu': 4.30.1
915 | '@rollup/rollup-linux-x64-gnu': 4.30.1
916 | '@rollup/rollup-linux-x64-musl': 4.30.1
917 | '@rollup/rollup-win32-arm64-msvc': 4.30.1
918 | '@rollup/rollup-win32-ia32-msvc': 4.30.1
919 | '@rollup/rollup-win32-x64-msvc': 4.30.1
920 | fsevents: 2.3.3
921 | dev: true
922 |
923 | /shebang-command@2.0.0:
924 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
925 | engines: {node: '>=8'}
926 | dependencies:
927 | shebang-regex: 3.0.0
928 | dev: true
929 |
930 | /shebang-regex@3.0.0:
931 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
932 | engines: {node: '>=8'}
933 | dev: true
934 |
935 | /signal-exit@4.1.0:
936 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
937 | engines: {node: '>=14'}
938 | dev: true
939 |
940 | /sisteransi@1.0.5:
941 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
942 | dev: false
943 |
944 | /source-map@0.8.0-beta.0:
945 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
946 | engines: {node: '>= 8'}
947 | dependencies:
948 | whatwg-url: 7.1.0
949 | dev: true
950 |
951 | /string-width@4.2.3:
952 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
953 | engines: {node: '>=8'}
954 | dependencies:
955 | emoji-regex: 8.0.0
956 | is-fullwidth-code-point: 3.0.0
957 | strip-ansi: 6.0.1
958 | dev: true
959 |
960 | /string-width@5.1.2:
961 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
962 | engines: {node: '>=12'}
963 | dependencies:
964 | eastasianwidth: 0.2.0
965 | emoji-regex: 9.2.2
966 | strip-ansi: 7.1.0
967 | dev: true
968 |
969 | /strip-ansi@6.0.1:
970 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
971 | engines: {node: '>=8'}
972 | dependencies:
973 | ansi-regex: 5.0.1
974 | dev: true
975 |
976 | /strip-ansi@7.1.0:
977 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
978 | engines: {node: '>=12'}
979 | dependencies:
980 | ansi-regex: 6.1.0
981 | dev: true
982 |
983 | /sucrase@3.35.0:
984 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
985 | engines: {node: '>=16 || 14 >=14.17'}
986 | hasBin: true
987 | dependencies:
988 | '@jridgewell/gen-mapping': 0.3.8
989 | commander: 4.1.1
990 | glob: 10.4.5
991 | lines-and-columns: 1.2.4
992 | mz: 2.7.0
993 | pirates: 4.0.6
994 | ts-interface-checker: 0.1.13
995 | dev: true
996 |
997 | /thenify-all@1.6.0:
998 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
999 | engines: {node: '>=0.8'}
1000 | dependencies:
1001 | thenify: 3.3.1
1002 | dev: true
1003 |
1004 | /thenify@3.3.1:
1005 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1006 | dependencies:
1007 | any-promise: 1.3.0
1008 | dev: true
1009 |
1010 | /tinyexec@0.3.2:
1011 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
1012 | dev: true
1013 |
1014 | /tinyglobby@0.2.10:
1015 | resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==}
1016 | engines: {node: '>=12.0.0'}
1017 | dependencies:
1018 | fdir: 6.4.3(picomatch@4.0.2)
1019 | picomatch: 4.0.2
1020 | dev: true
1021 |
1022 | /tr46@1.0.1:
1023 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
1024 | dependencies:
1025 | punycode: 2.3.1
1026 | dev: true
1027 |
1028 | /tree-kill@1.2.2:
1029 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
1030 | hasBin: true
1031 | dev: true
1032 |
1033 | /ts-interface-checker@0.1.13:
1034 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
1035 | dev: true
1036 |
1037 | /tsup@8.3.5(typescript@5.7.3):
1038 | resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==}
1039 | engines: {node: '>=18'}
1040 | hasBin: true
1041 | peerDependencies:
1042 | '@microsoft/api-extractor': ^7.36.0
1043 | '@swc/core': ^1
1044 | postcss: ^8.4.12
1045 | typescript: '>=4.5.0'
1046 | peerDependenciesMeta:
1047 | '@microsoft/api-extractor':
1048 | optional: true
1049 | '@swc/core':
1050 | optional: true
1051 | postcss:
1052 | optional: true
1053 | typescript:
1054 | optional: true
1055 | dependencies:
1056 | bundle-require: 5.1.0(esbuild@0.24.2)
1057 | cac: 6.7.14
1058 | chokidar: 4.0.3
1059 | consola: 3.4.0
1060 | debug: 4.4.0
1061 | esbuild: 0.24.2
1062 | joycon: 3.1.1
1063 | picocolors: 1.1.1
1064 | postcss-load-config: 6.0.1
1065 | resolve-from: 5.0.0
1066 | rollup: 4.30.1
1067 | source-map: 0.8.0-beta.0
1068 | sucrase: 3.35.0
1069 | tinyexec: 0.3.2
1070 | tinyglobby: 0.2.10
1071 | tree-kill: 1.2.2
1072 | typescript: 5.7.3
1073 | transitivePeerDependencies:
1074 | - jiti
1075 | - supports-color
1076 | - tsx
1077 | - yaml
1078 | dev: true
1079 |
1080 | /typescript@5.7.3:
1081 | resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
1082 | engines: {node: '>=14.17'}
1083 | hasBin: true
1084 | dev: true
1085 |
1086 | /undici-types@6.20.0:
1087 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
1088 | dev: true
1089 |
1090 | /webidl-conversions@4.0.2:
1091 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
1092 | dev: true
1093 |
1094 | /whatwg-url@7.1.0:
1095 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
1096 | dependencies:
1097 | lodash.sortby: 4.7.0
1098 | tr46: 1.0.1
1099 | webidl-conversions: 4.0.2
1100 | dev: true
1101 |
1102 | /which@2.0.2:
1103 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1104 | engines: {node: '>= 8'}
1105 | hasBin: true
1106 | dependencies:
1107 | isexe: 2.0.0
1108 | dev: true
1109 |
1110 | /wrap-ansi@7.0.0:
1111 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1112 | engines: {node: '>=10'}
1113 | dependencies:
1114 | ansi-styles: 4.3.0
1115 | string-width: 4.2.3
1116 | strip-ansi: 6.0.1
1117 | dev: true
1118 |
1119 | /wrap-ansi@8.1.0:
1120 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
1121 | engines: {node: '>=12'}
1122 | dependencies:
1123 | ansi-styles: 6.2.1
1124 | string-width: 5.1.2
1125 | strip-ansi: 7.1.0
1126 | dev: true
1127 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'packages/*'
3 |
--------------------------------------------------------------------------------