├── .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 | Create TS Fast Logo 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 | --------------------------------------------------------------------------------