├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── documentation.md │ ├── feature_request.md │ └── question.md ├── PULL_REQUEST_TEMPLATE.md ├── dependabot.yml └── workflows │ ├── auto-assign.yml │ ├── bump_version.yml │ ├── npm-publish.yml │ └── tests.yml ├── .gitignore ├── .npmignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── UPGRADE.md ├── add-banner.js ├── package-lock.json ├── package.json ├── src ├── index.ts ├── ts-transformer.ts ├── vite-plugin.ts └── webpack-loader.ts ├── test ├── index.test.ts ├── integration.test.ts ├── ts-transformer.test.ts ├── vite-plugin.test.ts └── webpack-loader.test.ts ├── tsconfig.json └── vite.config.ts /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🐛 Bug Report 3 | about: Report a bug to help us improve 4 | title: "[Bug]: " 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Description** 11 | A clear and concise description of the bug. 12 | 13 | **Steps to Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Run '...' 17 | 3. See error '...' 18 | 19 | **Expected Behavior** 20 | A clear and concise description of what you expected to happen. 21 | 22 | **Screenshots/Logs** 23 | If applicable, add screenshots or logs to help explain your problem. 24 | 25 | **Environment :** 26 | - OS: [e.g., Windows 11, macOS Ventura] 27 | - Node.js Version: [e.g., 22.0.9] 28 | - Package Version: [e.g., 1.0.0] 29 | 30 | **Additional Context** 31 | Add any other context about the problem here. 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 📚 Improvement/Documentation Request 3 | about: Suggest improvements to documentation or examples 4 | title: "[Docs]: " 5 | labels: documentation 6 | assignees: '' 7 | 8 | --- 9 | 10 | **What part of the documentation should be improved?** 11 | Provide the URL or section that needs improvement. 12 | 13 | **Describe the improvement** 14 | A clear and concise description of what can be improved. 15 | 16 | **Additional Context** 17 | Add any examples, screenshots, or other information to explain your suggestion. 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🚀 Feature Request 3 | about: Suggest a new feature or enhancement 4 | title: "[Feature]: " 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex: "I’m frustrated when ..." 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional Context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: ❓ Question/Support 3 | about: Ask a question or request support 4 | title: "[Question]: " 5 | labels: question 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Question** 11 | What is your question or the issue you need support with? 12 | 13 | **Context** 14 | Provide details about your environment or scenario to help understand your question. 15 | 16 | **Additional Information** 17 | Add any additional information, screenshots, or code snippets to support your question. 18 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## 🚀 Purpose 2 | 3 | Please describe the purpose of this PR. What problem is being solved, or what feature is being added? 4 | 5 | --- 6 | 7 | ## 🧑‍💻 Changes 8 | 9 | Please list the changes introduced by this PR. You can format them as bullet points: 10 | 11 | - Change 1 (e.g., Added new feature X) 12 | - Change 2 (e.g., Fixed bug Y) 13 | - Change 3 (e.g., Updated dependencies) 14 | 15 | --- 16 | 17 | ## 🛠️ Fixes or Features 18 | 19 | - [ ] **Fix**: If the PR fixes a bug, describe which bug it fixes. 20 | - [ ] **Feature**: If the PR introduces a new feature, describe the feature. 21 | 22 | --- 23 | 24 | ## 🔬 Testing 25 | 26 | - Manual testing steps: 27 | - Step 1: (e.g., Run the app, and navigate to ... to test ...) 28 | - Step 2: (e.g., Verify that ...) 29 | 30 | --- 31 | 32 | ## 📚 Documentation 33 | 34 | - [ ] Documentation has been updated as needed (README, etc.). 35 | - [ ] The change has been explained in relevant docs. 36 | 37 | --- 38 | 39 | ## 📦 Dependency Updates 40 | 41 | - [ ] If this PR updates or adds a dependency, I have run `npm install` and verified that the project builds and works properly. 42 | - [ ] If applicable, I have updated the `dependabot.yml` schedule for dependency updates. 43 | 44 | --- 45 | 46 | ## ⚠️ Known Issues 47 | 48 | - [ ] If there are any known issues, please describe them here. 49 | - [ ] This PR is dependent on other PRs (link them here). 50 | 51 | --- 52 | 53 | ## 🔄 Related Issues 54 | 55 | - Closes # (issue number) 56 | - Resolves # (issue number) 57 | - Refers to # (issue number) 58 | 59 | --- 60 | 61 | ## 👀 Reviewers 62 | 63 | - [ ] Please check if everything is as expected and approve if possible. 64 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "npm" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | commit-message: 8 | prefix: "fix" -------------------------------------------------------------------------------- /.github/workflows/auto-assign.yml: -------------------------------------------------------------------------------- 1 | name: Auto Assign 2 | on: 3 | issues: 4 | types: [opened] 5 | pull_request: 6 | types: [opened] 7 | jobs: 8 | run: 9 | runs-on: ubuntu-latest 10 | permissions: 11 | issues: write 12 | pull-requests: write 13 | steps: 14 | - name: 'Auto-assign issue' 15 | uses: pozil/auto-assign-issue@39c06395cbac76e79afc4ad4e5c5c6db6ecfdd2e 16 | with: 17 | repo-token: ${{ secrets.GITHUB_TOKEN }} 18 | assignees: HichemTab-tech 19 | numOfAssignee: 1 20 | 21 | -------------------------------------------------------------------------------- /.github/workflows/bump_version.yml: -------------------------------------------------------------------------------- 1 | # remember to go to repo settings/actions and allow github actions to write and to open pull request 2 | name: Version Bump and PR 3 | 4 | on: 5 | workflow_dispatch: 6 | inputs: 7 | version_increment: 8 | description: "Version increment type (patch, minor, major, or custom)" 9 | required: true 10 | default: "patch" 11 | custom_version: 12 | description: "Custom version (only if version_increment is custom)" 13 | required: false 14 | 15 | jobs: 16 | version-bump: 17 | permissions: 18 | contents: write 19 | pull-requests: write 20 | runs-on: ubuntu-latest 21 | 22 | steps: 23 | - name: Checkout code 24 | uses: actions/checkout@v3 25 | 26 | - name: Set up Node.js 27 | uses: actions/setup-node@v3 28 | with: 29 | node-version: '22.x' 30 | 31 | 32 | - name: init git and checkout 33 | run: | 34 | git config user.name "github-actions[bot]" 35 | git config user.email "github-actions[bot]@users.noreply.github.com" 36 | 37 | - name: Increment or set version 38 | id: bump-version 39 | run: | 40 | # Read the current version from package.json 41 | CURRENT_VERSION=$(jq -r '.version' package.json) 42 | 43 | # Determine the new version 44 | if [[ "${{ github.event.inputs.version_increment }}" == "custom" && -n "${{ github.event.inputs.custom_version }}" ]]; then 45 | NEW_VERSION="${{ github.event.inputs.custom_version }}" 46 | else 47 | NEW_VERSION=$(npx semver $CURRENT_VERSION -i ${{ github.event.inputs.version_increment }}) 48 | fi 49 | 50 | # Output the new version 51 | echo "new_version=$NEW_VERSION" >> $GITHUB_ENV 52 | 53 | # create/checkout the branch 54 | git checkout -b version-bump-$NEW_VERSION 55 | 56 | # Update package.json and package-lock.json with the new version 57 | jq ".version=\"$NEW_VERSION\"" package.json > temp.json && mv temp.json package.json 58 | jq ".version=\"$NEW_VERSION\"" package-lock.json > temp-lock.json && mv temp-lock.json package-lock.json 59 | 60 | - name: Commit changes 61 | run: | 62 | git add package.json package-lock.json 63 | git commit -m "Bump version to ${{ env.new_version }}" 64 | 65 | - name: Push changes 66 | run: | 67 | git push -u origin version-bump-${{ env.new_version }} 68 | env: 69 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 70 | 71 | - name: Create Pull Request 72 | run: | 73 | echo "Creating a Pull Request for branch: version-bump-${{ env.new_version }}" 74 | PR_RESPONSE=$(curl -X POST \ 75 | -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ 76 | -H "Accept: application/vnd.github+json" \ 77 | https://api.github.com/repos/${{ github.repository }}/pulls \ 78 | -d @- <(); 88 | const filteredData = picker(request.data); 89 | 90 | firebase.collection("users").add(filteredData); 91 | ``` 92 | 93 | The `picker` function dynamically removes unwanted properties, ensuring only the keys specified in `User` are included. This approach: 94 | 95 | - ⏳ Saves time by eliminating repetitive manual filtering. 96 | - ✅ Ensures runtime safety by aligning object properties with TypeScript interfaces. 97 | - 🐞 Reduces the risk of bugs and inefficiencies caused by sending unnecessary data. 98 | 99 | --- 100 | 101 | ## 📦 Installation 102 | 103 | To start using `ts-runtime-picker`, follow these steps: 104 | 105 | ### 1. Install the Package 106 | ```bash 107 | npm install ts-runtime-picker 108 | ``` 109 | 110 | ### 2. Add the Vite Plugin or Webpack Loader 111 | 112 | #### Vite Plugin 113 | 114 | In your `vite.config.ts`, import the plugin and include it in the plugins array: 115 | 116 | ```typescript 117 | import { defineConfig } from "vite"; 118 | import TsRuntimePickerVitePlugin from "ts-runtime-picker/vite-plugin"; 119 | 120 | export default defineConfig({ 121 | plugins: [TsRuntimePickerVitePlugin()], 122 | }); 123 | ``` 124 | 125 | #### Webpack Loader 126 | 127 | For projects using Webpack, you can integrate `ts-runtime-picker` with the following webpack loader. 128 | 129 | ```javascript 130 | module.exports = { 131 | //... 132 | module: { 133 | rules: [ 134 | { 135 | test: /\.ts$/, 136 | use: [ 137 | { 138 | loader: 'ts-loader', 139 | }, 140 | { 141 | loader: 'ts-runtime-picker/webpack-loader', // add the ts-runtime-picker webpack loader 142 | }, 143 | ], 144 | include: path.resolve(__dirname, 'src'), 145 | exclude: /node_modules/, 146 | }, 147 | ], 148 | }, 149 | resolve: { 150 | extensions: ['.ts', '.js'], 151 | fallback: { 152 | fs: false, 153 | path: false, 154 | os: false, 155 | perf_hooks: false, 156 | } 157 | }, 158 | //... 159 | } 160 | ``` 161 | 162 | --- 163 | 164 | ## ✨ Usage 165 | 166 | ### 1. Define Your TypeScript Interface 167 | Create a TypeScript interface that defines the structure of the object you want to pick keys from: 168 | 169 | ```typescript 170 | interface User { 171 | firstName: string; 172 | lastName: string; 173 | email: string; 174 | password: string; 175 | } 176 | ``` 177 | 178 | ### 2. Use `createPicker` 179 | Call the `createPicker` function with your TypeScript interface: 180 | 181 | ```typescript 182 | import { createPicker } from "ts-runtime-picker"; 183 | 184 | const picker = createPicker(); 185 | 186 | const inputObject = { 187 | firstName: "John", 188 | lastName: "Doe", 189 | email: "john.doe@example.com", 190 | password: "secret", 191 | extraField: "notNeeded", 192 | }; 193 | 194 | const result = picker(inputObject); 195 | console.log(result); // { firstName: "John", lastName: "Doe", email: "john.doe@example.com", password: "secret" } 196 | ``` 197 | 198 | ### 3. Using `createFullPicker` 199 | For cases where you are certain that all properties defined in the type will be present in the object 200 | (for example, when extracting a child type from a parent type), 201 | you can use `createFullPicker`. 202 | It behaves exactly like `createPicker`, but returns a full type instead of a `Partial` type: 203 | 204 | ```typescript 205 | import { createFullPicker } from "ts-runtime-picker"; 206 | 207 | interface User { 208 | firstName: string; 209 | lastName: string; 210 | email: string; 211 | password: string; 212 | } 213 | 214 | const fullPicker = createFullPicker (); 215 | 216 | const completeUser = { 217 | firstName: "John", 218 | lastName: "Doe", 219 | email: "john.doe@example.com", 220 | password: "secret", 221 | extraData: "will be removed" 222 | }; 223 | 224 | const result = fullPicker(completeUser); // Type is User, not Partial 225 | ``` 226 | 227 | ### 4. How It Works 228 | The plugin dynamically transforms the `createPicker()` and `createFullPicker()` calls into runtime-safe implementations 229 | that pick only the keys defined in `User`. 230 | This transformation works with both Vite (via the plugin) and Webpack (via the loader). 231 | The main difference between the two functions is in their type signatures: 232 | - `createPicker()` returns `Partial`, which is safer when some properties might be missing 233 | - `createFullPicker()` returns `T`, which is appropriate when you know all properties will be present, useful in case where you want to pick a child type from a parent type. 234 | 235 | --- 236 | 237 | > [!WARNING] 238 | >Currently, `ts-runtime-picker` does not support dynamic generic types. For example, the following code will not work as expected: 239 | > 240 | >```typescript 241 | >function someFunction(data): void { 242 | > const picker = createPicker(); 243 | > const filteredData = picker(data); 244 | > //... 245 | >} 246 | > 247 | >someFunction(request.data); 248 | >``` 249 | > 250 | >The type parameter `T` must be an explicitly declared type when using `createPicker()`. **We are actively working on supporting dynamic generic types in future releases**. 251 | >And we are looking for contributors to help us implement this feature. If you're interested, please check out our [contributing guidelines](#contributing). 252 | 253 | --- 254 | 255 | ## 🎯 Purpose and Benefits 256 | 257 | The goal of `ts-runtime-picker` is to bridge the gap between TypeScript's compile-time type safety and runtime JavaScript functionality. By transforming your code at build time, this package enables developers to: 258 | 259 | - 🚫 Avoid repetitive manual key picking from objects. 260 | - ⚡ Ensure runtime behavior aligns with TypeScript-defined interfaces. 261 | - 🎉 Simplify code while maintaining type safety. 262 | - 🛠 Works seamlessly with modern bundlers, including Vite (via a plugin) and Webpack (via a loader). 263 | --- 264 | 265 | 266 | 267 | ## Contributing 268 | 269 | We welcome contributions! If you'd like to improve `ts-runtime-picker`, feel free to [open an issue](https://github.com/HichemTab-tech/ts-runtime-picker/issues) or [submit a pull request](https://github.com/HichemTab-tech/ts-runtime-picker/pulls). 270 | 271 | ## Author 272 | 273 | - [@HichemTab-tech](https://www.github.com/HichemTab-tech) 274 | 275 | ## License 276 | 277 | [MIT](https://github.com/HichemTab-tech/ts-runtime-picker/blob/master/LICENSE) 278 | 279 | ## 🌟 Acknowledgements 280 | 281 | Special thanks to the open-source community and early adopters of `ts-runtime-picker` for their feedback, which helped expand support to Webpack alongside Vite. 282 | 283 | 284 | 285 | 286 | ## GitAds Sponsored 287 | [![Sponsored by GitAds](https://gitads.dev/v1/ad-serve?source=hichemtab-tech/ts-runtime-picker@github)](https://gitads.dev/v1/ad-track?source=hichemtab-tech/ts-runtime-picker@github) 288 | 289 | 290 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Reporting a Vulnerability 4 | 5 | If you discover a security vulnerability in **ts-runtime-picker**, please follow these steps to report it: 6 | 7 | ### 1. **Do Not Open Public Issues** 8 | Please **do not open a public issue** in the repository. Instead, report the vulnerability privately. 9 | 10 | ### 2. **Send Us a Direct Message** 11 | Send a direct email to the maintainers at: 12 | 13 | **hichem.tab2002@gmail.com** 14 | 15 | Alternatively, you can open a private issue in this repository with the label `security` and we will handle it privately. 16 | 17 | ### 3. **What to Include in Your Report** 18 | When reporting a security vulnerability, please include: 19 | 20 | - A detailed description of the vulnerability. 21 | - Steps to reproduce the vulnerability. 22 | - Sample code or relevant configuration files. 23 | - Your environment details (e.g., Node.js version, operating system, etc.). 24 | 25 | ### 4. **What We Do Next** 26 | Once we receive the report, we will: 27 | 28 | - Acknowledge your report and begin investigating the issue. 29 | - Fix the vulnerability and release a patch version. 30 | - Communicate the patch version and details to you before public disclosure. 31 | - After the fix is live, we will update the documentation and changelog to notify users of the vulnerability and its resolution. 32 | 33 | ### 5. **Disclosure Timeline** 34 | Our goal is to resolve security issues promptly. Once the patch is released, we will: 35 | 36 | - Notify the reporter of the fix. 37 | - Release a new version of the package with a security update. 38 | - After the fix is live, we will disclose the issue and resolution in the changelog, without revealing sensitive details. 39 | 40 | ## Security Best Practices 41 | 42 | We recommend the following to secure your project when using **ts-runtime-picker**: 43 | 44 | - Regularly update your dependencies to ensure you are using the latest versions, especially security patches. 45 | - Consider using tools like [Snyk](https://snyk.io/) or [Dependabot](https://github.com/dependabot) to monitor vulnerabilities in dependencies. 46 | 47 | ## License 48 | 49 | **ts-runtime-picker** is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details. 50 | -------------------------------------------------------------------------------- /UPGRADE.md: -------------------------------------------------------------------------------- 1 | # **UPGRADE.md** (Migration Guide) 2 | 3 | ## **Upgrading to 2.0.0** 4 | 5 | Version `2.0.0` introduces **breaking changes** due to structural improvements and Webpack support. Follow these steps to ensure a smooth upgrade. 6 | 7 | --- 8 | 9 | ## **1. Update Your Package** 10 | Install the latest version of `ts-runtime-picker`: 11 | ```bash 12 | npm install ts-runtime-picker@2.0.0 13 | ``` 14 | 15 | --- 16 | 17 | ## **2. Update Imports for Vite** 18 | The import name for the Vite plugin has changed: 19 | - **Before**: 20 | ```typescript 21 | import tsRuntimePicker from "ts-runtime-picker/vite-plugin"; 22 | ``` 23 | - **Now**: 24 | ```typescript 25 | import TsRuntimePickerVitePlugin from "ts-runtime-picker/vite-plugin"; 26 | ``` 27 | Update your `vite.config.ts` to reflect the new import name: 28 | ```typescript 29 | import { defineConfig } from "vite"; 30 | import TsRuntimePickerVitePlugin from "ts-runtime-picker/vite-plugin"; 31 | 32 | export default defineConfig({ 33 | plugins: [TsRuntimePickerVitePlugin()], 34 | }); 35 | ``` 36 | 37 | --- 38 | 39 | ## **3. Add Webpack Support** 40 | For projects using Webpack, you can now integrate `ts-runtime-picker` using its custom loader. 41 | 42 | 1. **Update Webpack Configuration**: 43 | Add the following rule to your `webpack.config.js`: 44 | ```javascript 45 | { 46 | test: /\.ts$/, 47 | use: [ 48 | { 49 | loader: 'ts-loader', 50 | }, 51 | { 52 | loader: 'ts-runtime-picker/webpack-loader', // ts-runtime-picker loader 53 | }, 54 | ], 55 | } 56 | ``` 57 | 58 | 2. **Ensure the Order of Loaders**: 59 | The `ts-runtime-picker/webpack-loader` must come **after** `ts-loader` to work correctly. 60 | 61 | --- 62 | 63 | ## **4. Verify Your Setup** 64 | After upgrading, rebuild your project and verify that: 65 | - Your Vite or Webpack configurations are correctly updated. 66 | - Your `createPicker` calls are being transformed as expected. 67 | 68 | --- 69 | 70 | ## **5. Common Issues** 71 | - **Vite Plugin Errors**: 72 | - Ensure you’ve updated the import to `TsRuntimePickerVitePlugin`. 73 | 74 | - **Webpack Loader Issues**: 75 | - Ensure the loader is placed **after** `ts-loader` in your Webpack rules. 76 | - Verify that your TypeScript files are correctly matched by the `test` condition. 77 | 78 | --- 79 | 80 | By following these steps, your project will be fully compatible with the new version of `ts-runtime-picker`. 🚀 Let us know if you encounter any issues! -------------------------------------------------------------------------------- /add-banner.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | 4 | // Read the version from package.json 5 | const packageJson = require('./package.json'); 6 | const version = packageJson.version; 7 | 8 | // Banner to prepend to files 9 | const banner = ` 10 | /*! 11 | * ts-runtime-picker v${version} 12 | * (c) HichemTab-tech 13 | * Released under the MIT License. 14 | * Github: https://github.com/HichemTab-tech/ts-runtime-picker 15 | * Generated on: ${new Date().toLocaleDateString()} 16 | */ 17 | `; 18 | 19 | // Directory to process 20 | const distDir = path.join(__dirname, 'dist'); 21 | 22 | // Prepend banner to all `.js` files in the dist directory 23 | function addBannerToFiles(dir) { 24 | const files = fs.readdirSync(dir); 25 | 26 | for (const file of files) { 27 | const filePath = path.join(dir, file); 28 | const stat = fs.statSync(filePath); 29 | 30 | if (stat.isFile() && file.endsWith('.js')) { 31 | const content = fs.readFileSync(filePath, 'utf8'); 32 | fs.writeFileSync(filePath, `${banner}\n${content}`); 33 | console.log(`Added banner to: ${file}`); 34 | } else if (stat.isDirectory()) { 35 | addBannerToFiles(filePath); 36 | } 37 | } 38 | } 39 | 40 | addBannerToFiles(distDir); 41 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ts-runtime-picker", 3 | "version": "2.1.2", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "ts-runtime-picker", 9 | "version": "2.1.2", 10 | "license": "MIT", 11 | "dependencies": { 12 | "ts-morph": "^26.0.0" 13 | }, 14 | "devDependencies": { 15 | "@types/node": "^22.10.2", 16 | "ts-loader": "^9.5.1", 17 | "typescript": "^5.0.0", 18 | "vite": "^6.0.3", 19 | "vitest": "^3.1.4", 20 | "webpack": "^5.97.1", 21 | "webpack-cli": "^6.0.1" 22 | } 23 | }, 24 | "node_modules/@discoveryjs/json-ext": { 25 | "version": "0.6.3", 26 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", 27 | "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", 28 | "dev": true, 29 | "engines": { 30 | "node": ">=14.17.0" 31 | } 32 | }, 33 | "node_modules/@esbuild/aix-ppc64": { 34 | "version": "0.25.2", 35 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", 36 | "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", 37 | "cpu": [ 38 | "ppc64" 39 | ], 40 | "dev": true, 41 | "license": "MIT", 42 | "optional": true, 43 | "os": [ 44 | "aix" 45 | ], 46 | "engines": { 47 | "node": ">=18" 48 | } 49 | }, 50 | "node_modules/@esbuild/android-arm": { 51 | "version": "0.25.2", 52 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", 53 | "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", 54 | "cpu": [ 55 | "arm" 56 | ], 57 | "dev": true, 58 | "license": "MIT", 59 | "optional": true, 60 | "os": [ 61 | "android" 62 | ], 63 | "engines": { 64 | "node": ">=18" 65 | } 66 | }, 67 | "node_modules/@esbuild/android-arm64": { 68 | "version": "0.25.2", 69 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", 70 | "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", 71 | "cpu": [ 72 | "arm64" 73 | ], 74 | "dev": true, 75 | "license": "MIT", 76 | "optional": true, 77 | "os": [ 78 | "android" 79 | ], 80 | "engines": { 81 | "node": ">=18" 82 | } 83 | }, 84 | "node_modules/@esbuild/android-x64": { 85 | "version": "0.25.2", 86 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", 87 | "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", 88 | "cpu": [ 89 | "x64" 90 | ], 91 | "dev": true, 92 | "license": "MIT", 93 | "optional": true, 94 | "os": [ 95 | "android" 96 | ], 97 | "engines": { 98 | "node": ">=18" 99 | } 100 | }, 101 | "node_modules/@esbuild/darwin-arm64": { 102 | "version": "0.25.2", 103 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", 104 | "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", 105 | "cpu": [ 106 | "arm64" 107 | ], 108 | "dev": true, 109 | "license": "MIT", 110 | "optional": true, 111 | "os": [ 112 | "darwin" 113 | ], 114 | "engines": { 115 | "node": ">=18" 116 | } 117 | }, 118 | "node_modules/@esbuild/darwin-x64": { 119 | "version": "0.25.2", 120 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", 121 | "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", 122 | "cpu": [ 123 | "x64" 124 | ], 125 | "dev": true, 126 | "license": "MIT", 127 | "optional": true, 128 | "os": [ 129 | "darwin" 130 | ], 131 | "engines": { 132 | "node": ">=18" 133 | } 134 | }, 135 | "node_modules/@esbuild/freebsd-arm64": { 136 | "version": "0.25.2", 137 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", 138 | "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", 139 | "cpu": [ 140 | "arm64" 141 | ], 142 | "dev": true, 143 | "license": "MIT", 144 | "optional": true, 145 | "os": [ 146 | "freebsd" 147 | ], 148 | "engines": { 149 | "node": ">=18" 150 | } 151 | }, 152 | "node_modules/@esbuild/freebsd-x64": { 153 | "version": "0.25.2", 154 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", 155 | "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", 156 | "cpu": [ 157 | "x64" 158 | ], 159 | "dev": true, 160 | "license": "MIT", 161 | "optional": true, 162 | "os": [ 163 | "freebsd" 164 | ], 165 | "engines": { 166 | "node": ">=18" 167 | } 168 | }, 169 | "node_modules/@esbuild/linux-arm": { 170 | "version": "0.25.2", 171 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", 172 | "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", 173 | "cpu": [ 174 | "arm" 175 | ], 176 | "dev": true, 177 | "license": "MIT", 178 | "optional": true, 179 | "os": [ 180 | "linux" 181 | ], 182 | "engines": { 183 | "node": ">=18" 184 | } 185 | }, 186 | "node_modules/@esbuild/linux-arm64": { 187 | "version": "0.25.2", 188 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", 189 | "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", 190 | "cpu": [ 191 | "arm64" 192 | ], 193 | "dev": true, 194 | "license": "MIT", 195 | "optional": true, 196 | "os": [ 197 | "linux" 198 | ], 199 | "engines": { 200 | "node": ">=18" 201 | } 202 | }, 203 | "node_modules/@esbuild/linux-ia32": { 204 | "version": "0.25.2", 205 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", 206 | "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", 207 | "cpu": [ 208 | "ia32" 209 | ], 210 | "dev": true, 211 | "license": "MIT", 212 | "optional": true, 213 | "os": [ 214 | "linux" 215 | ], 216 | "engines": { 217 | "node": ">=18" 218 | } 219 | }, 220 | "node_modules/@esbuild/linux-loong64": { 221 | "version": "0.25.2", 222 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", 223 | "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", 224 | "cpu": [ 225 | "loong64" 226 | ], 227 | "dev": true, 228 | "license": "MIT", 229 | "optional": true, 230 | "os": [ 231 | "linux" 232 | ], 233 | "engines": { 234 | "node": ">=18" 235 | } 236 | }, 237 | "node_modules/@esbuild/linux-mips64el": { 238 | "version": "0.25.2", 239 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", 240 | "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", 241 | "cpu": [ 242 | "mips64el" 243 | ], 244 | "dev": true, 245 | "license": "MIT", 246 | "optional": true, 247 | "os": [ 248 | "linux" 249 | ], 250 | "engines": { 251 | "node": ">=18" 252 | } 253 | }, 254 | "node_modules/@esbuild/linux-ppc64": { 255 | "version": "0.25.2", 256 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", 257 | "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", 258 | "cpu": [ 259 | "ppc64" 260 | ], 261 | "dev": true, 262 | "license": "MIT", 263 | "optional": true, 264 | "os": [ 265 | "linux" 266 | ], 267 | "engines": { 268 | "node": ">=18" 269 | } 270 | }, 271 | "node_modules/@esbuild/linux-riscv64": { 272 | "version": "0.25.2", 273 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", 274 | "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", 275 | "cpu": [ 276 | "riscv64" 277 | ], 278 | "dev": true, 279 | "license": "MIT", 280 | "optional": true, 281 | "os": [ 282 | "linux" 283 | ], 284 | "engines": { 285 | "node": ">=18" 286 | } 287 | }, 288 | "node_modules/@esbuild/linux-s390x": { 289 | "version": "0.25.2", 290 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", 291 | "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", 292 | "cpu": [ 293 | "s390x" 294 | ], 295 | "dev": true, 296 | "license": "MIT", 297 | "optional": true, 298 | "os": [ 299 | "linux" 300 | ], 301 | "engines": { 302 | "node": ">=18" 303 | } 304 | }, 305 | "node_modules/@esbuild/linux-x64": { 306 | "version": "0.25.2", 307 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", 308 | "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", 309 | "cpu": [ 310 | "x64" 311 | ], 312 | "dev": true, 313 | "license": "MIT", 314 | "optional": true, 315 | "os": [ 316 | "linux" 317 | ], 318 | "engines": { 319 | "node": ">=18" 320 | } 321 | }, 322 | "node_modules/@esbuild/netbsd-arm64": { 323 | "version": "0.25.2", 324 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", 325 | "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", 326 | "cpu": [ 327 | "arm64" 328 | ], 329 | "dev": true, 330 | "license": "MIT", 331 | "optional": true, 332 | "os": [ 333 | "netbsd" 334 | ], 335 | "engines": { 336 | "node": ">=18" 337 | } 338 | }, 339 | "node_modules/@esbuild/netbsd-x64": { 340 | "version": "0.25.2", 341 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", 342 | "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", 343 | "cpu": [ 344 | "x64" 345 | ], 346 | "dev": true, 347 | "license": "MIT", 348 | "optional": true, 349 | "os": [ 350 | "netbsd" 351 | ], 352 | "engines": { 353 | "node": ">=18" 354 | } 355 | }, 356 | "node_modules/@esbuild/openbsd-arm64": { 357 | "version": "0.25.2", 358 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", 359 | "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", 360 | "cpu": [ 361 | "arm64" 362 | ], 363 | "dev": true, 364 | "license": "MIT", 365 | "optional": true, 366 | "os": [ 367 | "openbsd" 368 | ], 369 | "engines": { 370 | "node": ">=18" 371 | } 372 | }, 373 | "node_modules/@esbuild/openbsd-x64": { 374 | "version": "0.25.2", 375 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", 376 | "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", 377 | "cpu": [ 378 | "x64" 379 | ], 380 | "dev": true, 381 | "license": "MIT", 382 | "optional": true, 383 | "os": [ 384 | "openbsd" 385 | ], 386 | "engines": { 387 | "node": ">=18" 388 | } 389 | }, 390 | "node_modules/@esbuild/sunos-x64": { 391 | "version": "0.25.2", 392 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", 393 | "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", 394 | "cpu": [ 395 | "x64" 396 | ], 397 | "dev": true, 398 | "license": "MIT", 399 | "optional": true, 400 | "os": [ 401 | "sunos" 402 | ], 403 | "engines": { 404 | "node": ">=18" 405 | } 406 | }, 407 | "node_modules/@esbuild/win32-arm64": { 408 | "version": "0.25.2", 409 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", 410 | "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", 411 | "cpu": [ 412 | "arm64" 413 | ], 414 | "dev": true, 415 | "license": "MIT", 416 | "optional": true, 417 | "os": [ 418 | "win32" 419 | ], 420 | "engines": { 421 | "node": ">=18" 422 | } 423 | }, 424 | "node_modules/@esbuild/win32-ia32": { 425 | "version": "0.25.2", 426 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", 427 | "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", 428 | "cpu": [ 429 | "ia32" 430 | ], 431 | "dev": true, 432 | "license": "MIT", 433 | "optional": true, 434 | "os": [ 435 | "win32" 436 | ], 437 | "engines": { 438 | "node": ">=18" 439 | } 440 | }, 441 | "node_modules/@esbuild/win32-x64": { 442 | "version": "0.25.2", 443 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", 444 | "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", 445 | "cpu": [ 446 | "x64" 447 | ], 448 | "dev": true, 449 | "license": "MIT", 450 | "optional": true, 451 | "os": [ 452 | "win32" 453 | ], 454 | "engines": { 455 | "node": ">=18" 456 | } 457 | }, 458 | "node_modules/@jridgewell/gen-mapping": { 459 | "version": "0.3.8", 460 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 461 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 462 | "dev": true, 463 | "license": "MIT", 464 | "dependencies": { 465 | "@jridgewell/set-array": "^1.2.1", 466 | "@jridgewell/sourcemap-codec": "^1.4.10", 467 | "@jridgewell/trace-mapping": "^0.3.24" 468 | }, 469 | "engines": { 470 | "node": ">=6.0.0" 471 | } 472 | }, 473 | "node_modules/@jridgewell/resolve-uri": { 474 | "version": "3.1.2", 475 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 476 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 477 | "dev": true, 478 | "license": "MIT", 479 | "engines": { 480 | "node": ">=6.0.0" 481 | } 482 | }, 483 | "node_modules/@jridgewell/set-array": { 484 | "version": "1.2.1", 485 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 486 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 487 | "dev": true, 488 | "license": "MIT", 489 | "engines": { 490 | "node": ">=6.0.0" 491 | } 492 | }, 493 | "node_modules/@jridgewell/source-map": { 494 | "version": "0.3.6", 495 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", 496 | "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", 497 | "dev": true, 498 | "license": "MIT", 499 | "dependencies": { 500 | "@jridgewell/gen-mapping": "^0.3.5", 501 | "@jridgewell/trace-mapping": "^0.3.25" 502 | } 503 | }, 504 | "node_modules/@jridgewell/sourcemap-codec": { 505 | "version": "1.5.0", 506 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 507 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 508 | "dev": true, 509 | "license": "MIT" 510 | }, 511 | "node_modules/@jridgewell/trace-mapping": { 512 | "version": "0.3.25", 513 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 514 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 515 | "dev": true, 516 | "license": "MIT", 517 | "dependencies": { 518 | "@jridgewell/resolve-uri": "^3.1.0", 519 | "@jridgewell/sourcemap-codec": "^1.4.14" 520 | } 521 | }, 522 | "node_modules/@nodelib/fs.scandir": { 523 | "version": "2.1.5", 524 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 525 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 526 | "license": "MIT", 527 | "dependencies": { 528 | "@nodelib/fs.stat": "2.0.5", 529 | "run-parallel": "^1.1.9" 530 | }, 531 | "engines": { 532 | "node": ">= 8" 533 | } 534 | }, 535 | "node_modules/@nodelib/fs.stat": { 536 | "version": "2.0.5", 537 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 538 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 539 | "license": "MIT", 540 | "engines": { 541 | "node": ">= 8" 542 | } 543 | }, 544 | "node_modules/@nodelib/fs.walk": { 545 | "version": "1.2.8", 546 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 547 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 548 | "license": "MIT", 549 | "dependencies": { 550 | "@nodelib/fs.scandir": "2.1.5", 551 | "fastq": "^1.6.0" 552 | }, 553 | "engines": { 554 | "node": ">= 8" 555 | } 556 | }, 557 | "node_modules/@rollup/rollup-android-arm-eabi": { 558 | "version": "4.40.1", 559 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz", 560 | "integrity": "sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==", 561 | "cpu": [ 562 | "arm" 563 | ], 564 | "dev": true, 565 | "license": "MIT", 566 | "optional": true, 567 | "os": [ 568 | "android" 569 | ] 570 | }, 571 | "node_modules/@rollup/rollup-android-arm64": { 572 | "version": "4.40.1", 573 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.1.tgz", 574 | "integrity": "sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==", 575 | "cpu": [ 576 | "arm64" 577 | ], 578 | "dev": true, 579 | "license": "MIT", 580 | "optional": true, 581 | "os": [ 582 | "android" 583 | ] 584 | }, 585 | "node_modules/@rollup/rollup-darwin-arm64": { 586 | "version": "4.40.1", 587 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.1.tgz", 588 | "integrity": "sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==", 589 | "cpu": [ 590 | "arm64" 591 | ], 592 | "dev": true, 593 | "license": "MIT", 594 | "optional": true, 595 | "os": [ 596 | "darwin" 597 | ] 598 | }, 599 | "node_modules/@rollup/rollup-darwin-x64": { 600 | "version": "4.40.1", 601 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.1.tgz", 602 | "integrity": "sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==", 603 | "cpu": [ 604 | "x64" 605 | ], 606 | "dev": true, 607 | "license": "MIT", 608 | "optional": true, 609 | "os": [ 610 | "darwin" 611 | ] 612 | }, 613 | "node_modules/@rollup/rollup-freebsd-arm64": { 614 | "version": "4.40.1", 615 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.1.tgz", 616 | "integrity": "sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==", 617 | "cpu": [ 618 | "arm64" 619 | ], 620 | "dev": true, 621 | "license": "MIT", 622 | "optional": true, 623 | "os": [ 624 | "freebsd" 625 | ] 626 | }, 627 | "node_modules/@rollup/rollup-freebsd-x64": { 628 | "version": "4.40.1", 629 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.1.tgz", 630 | "integrity": "sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==", 631 | "cpu": [ 632 | "x64" 633 | ], 634 | "dev": true, 635 | "license": "MIT", 636 | "optional": true, 637 | "os": [ 638 | "freebsd" 639 | ] 640 | }, 641 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 642 | "version": "4.40.1", 643 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.1.tgz", 644 | "integrity": "sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==", 645 | "cpu": [ 646 | "arm" 647 | ], 648 | "dev": true, 649 | "license": "MIT", 650 | "optional": true, 651 | "os": [ 652 | "linux" 653 | ] 654 | }, 655 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 656 | "version": "4.40.1", 657 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.1.tgz", 658 | "integrity": "sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==", 659 | "cpu": [ 660 | "arm" 661 | ], 662 | "dev": true, 663 | "license": "MIT", 664 | "optional": true, 665 | "os": [ 666 | "linux" 667 | ] 668 | }, 669 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 670 | "version": "4.40.1", 671 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.1.tgz", 672 | "integrity": "sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==", 673 | "cpu": [ 674 | "arm64" 675 | ], 676 | "dev": true, 677 | "license": "MIT", 678 | "optional": true, 679 | "os": [ 680 | "linux" 681 | ] 682 | }, 683 | "node_modules/@rollup/rollup-linux-arm64-musl": { 684 | "version": "4.40.1", 685 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.1.tgz", 686 | "integrity": "sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==", 687 | "cpu": [ 688 | "arm64" 689 | ], 690 | "dev": true, 691 | "license": "MIT", 692 | "optional": true, 693 | "os": [ 694 | "linux" 695 | ] 696 | }, 697 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 698 | "version": "4.40.1", 699 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.1.tgz", 700 | "integrity": "sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==", 701 | "cpu": [ 702 | "loong64" 703 | ], 704 | "dev": true, 705 | "license": "MIT", 706 | "optional": true, 707 | "os": [ 708 | "linux" 709 | ] 710 | }, 711 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 712 | "version": "4.40.1", 713 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.1.tgz", 714 | "integrity": "sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==", 715 | "cpu": [ 716 | "ppc64" 717 | ], 718 | "dev": true, 719 | "license": "MIT", 720 | "optional": true, 721 | "os": [ 722 | "linux" 723 | ] 724 | }, 725 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 726 | "version": "4.40.1", 727 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.1.tgz", 728 | "integrity": "sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==", 729 | "cpu": [ 730 | "riscv64" 731 | ], 732 | "dev": true, 733 | "license": "MIT", 734 | "optional": true, 735 | "os": [ 736 | "linux" 737 | ] 738 | }, 739 | "node_modules/@rollup/rollup-linux-riscv64-musl": { 740 | "version": "4.40.1", 741 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.1.tgz", 742 | "integrity": "sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==", 743 | "cpu": [ 744 | "riscv64" 745 | ], 746 | "dev": true, 747 | "license": "MIT", 748 | "optional": true, 749 | "os": [ 750 | "linux" 751 | ] 752 | }, 753 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 754 | "version": "4.40.1", 755 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.1.tgz", 756 | "integrity": "sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==", 757 | "cpu": [ 758 | "s390x" 759 | ], 760 | "dev": true, 761 | "license": "MIT", 762 | "optional": true, 763 | "os": [ 764 | "linux" 765 | ] 766 | }, 767 | "node_modules/@rollup/rollup-linux-x64-gnu": { 768 | "version": "4.40.1", 769 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.1.tgz", 770 | "integrity": "sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==", 771 | "cpu": [ 772 | "x64" 773 | ], 774 | "dev": true, 775 | "license": "MIT", 776 | "optional": true, 777 | "os": [ 778 | "linux" 779 | ] 780 | }, 781 | "node_modules/@rollup/rollup-linux-x64-musl": { 782 | "version": "4.40.1", 783 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.1.tgz", 784 | "integrity": "sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==", 785 | "cpu": [ 786 | "x64" 787 | ], 788 | "dev": true, 789 | "license": "MIT", 790 | "optional": true, 791 | "os": [ 792 | "linux" 793 | ] 794 | }, 795 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 796 | "version": "4.40.1", 797 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.1.tgz", 798 | "integrity": "sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==", 799 | "cpu": [ 800 | "arm64" 801 | ], 802 | "dev": true, 803 | "license": "MIT", 804 | "optional": true, 805 | "os": [ 806 | "win32" 807 | ] 808 | }, 809 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 810 | "version": "4.40.1", 811 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.1.tgz", 812 | "integrity": "sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==", 813 | "cpu": [ 814 | "ia32" 815 | ], 816 | "dev": true, 817 | "license": "MIT", 818 | "optional": true, 819 | "os": [ 820 | "win32" 821 | ] 822 | }, 823 | "node_modules/@rollup/rollup-win32-x64-msvc": { 824 | "version": "4.40.1", 825 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.1.tgz", 826 | "integrity": "sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==", 827 | "cpu": [ 828 | "x64" 829 | ], 830 | "dev": true, 831 | "license": "MIT", 832 | "optional": true, 833 | "os": [ 834 | "win32" 835 | ] 836 | }, 837 | "node_modules/@ts-morph/common": { 838 | "version": "0.27.0", 839 | "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.27.0.tgz", 840 | "integrity": "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==", 841 | "license": "MIT", 842 | "dependencies": { 843 | "fast-glob": "^3.3.3", 844 | "minimatch": "^10.0.1", 845 | "path-browserify": "^1.0.1" 846 | } 847 | }, 848 | "node_modules/@types/chai": { 849 | "version": "5.2.2", 850 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", 851 | "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", 852 | "dev": true, 853 | "license": "MIT", 854 | "dependencies": { 855 | "@types/deep-eql": "*" 856 | } 857 | }, 858 | "node_modules/@types/deep-eql": { 859 | "version": "4.0.2", 860 | "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", 861 | "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", 862 | "dev": true, 863 | "license": "MIT" 864 | }, 865 | "node_modules/@types/eslint": { 866 | "version": "9.6.1", 867 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", 868 | "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", 869 | "dev": true, 870 | "license": "MIT", 871 | "dependencies": { 872 | "@types/estree": "*", 873 | "@types/json-schema": "*" 874 | } 875 | }, 876 | "node_modules/@types/eslint-scope": { 877 | "version": "3.7.7", 878 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", 879 | "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", 880 | "dev": true, 881 | "license": "MIT", 882 | "dependencies": { 883 | "@types/eslint": "*", 884 | "@types/estree": "*" 885 | } 886 | }, 887 | "node_modules/@types/estree": { 888 | "version": "1.0.7", 889 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", 890 | "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", 891 | "dev": true, 892 | "license": "MIT" 893 | }, 894 | "node_modules/@types/json-schema": { 895 | "version": "7.0.15", 896 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 897 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 898 | "dev": true, 899 | "license": "MIT" 900 | }, 901 | "node_modules/@types/node": { 902 | "version": "22.15.30", 903 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", 904 | "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", 905 | "dev": true, 906 | "license": "MIT", 907 | "dependencies": { 908 | "undici-types": "~6.21.0" 909 | } 910 | }, 911 | "node_modules/@vitest/expect": { 912 | "version": "3.2.3", 913 | "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.3.tgz", 914 | "integrity": "sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==", 915 | "dev": true, 916 | "license": "MIT", 917 | "dependencies": { 918 | "@types/chai": "^5.2.2", 919 | "@vitest/spy": "3.2.3", 920 | "@vitest/utils": "3.2.3", 921 | "chai": "^5.2.0", 922 | "tinyrainbow": "^2.0.0" 923 | }, 924 | "funding": { 925 | "url": "https://opencollective.com/vitest" 926 | } 927 | }, 928 | "node_modules/@vitest/mocker": { 929 | "version": "3.2.3", 930 | "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.3.tgz", 931 | "integrity": "sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==", 932 | "dev": true, 933 | "license": "MIT", 934 | "dependencies": { 935 | "@vitest/spy": "3.2.3", 936 | "estree-walker": "^3.0.3", 937 | "magic-string": "^0.30.17" 938 | }, 939 | "funding": { 940 | "url": "https://opencollective.com/vitest" 941 | }, 942 | "peerDependencies": { 943 | "msw": "^2.4.9", 944 | "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" 945 | }, 946 | "peerDependenciesMeta": { 947 | "msw": { 948 | "optional": true 949 | }, 950 | "vite": { 951 | "optional": true 952 | } 953 | } 954 | }, 955 | "node_modules/@vitest/pretty-format": { 956 | "version": "3.2.3", 957 | "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.3.tgz", 958 | "integrity": "sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==", 959 | "dev": true, 960 | "license": "MIT", 961 | "dependencies": { 962 | "tinyrainbow": "^2.0.0" 963 | }, 964 | "funding": { 965 | "url": "https://opencollective.com/vitest" 966 | } 967 | }, 968 | "node_modules/@vitest/runner": { 969 | "version": "3.2.3", 970 | "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.3.tgz", 971 | "integrity": "sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==", 972 | "dev": true, 973 | "license": "MIT", 974 | "dependencies": { 975 | "@vitest/utils": "3.2.3", 976 | "pathe": "^2.0.3", 977 | "strip-literal": "^3.0.0" 978 | }, 979 | "funding": { 980 | "url": "https://opencollective.com/vitest" 981 | } 982 | }, 983 | "node_modules/@vitest/snapshot": { 984 | "version": "3.2.3", 985 | "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.3.tgz", 986 | "integrity": "sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==", 987 | "dev": true, 988 | "license": "MIT", 989 | "dependencies": { 990 | "@vitest/pretty-format": "3.2.3", 991 | "magic-string": "^0.30.17", 992 | "pathe": "^2.0.3" 993 | }, 994 | "funding": { 995 | "url": "https://opencollective.com/vitest" 996 | } 997 | }, 998 | "node_modules/@vitest/spy": { 999 | "version": "3.2.3", 1000 | "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.3.tgz", 1001 | "integrity": "sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==", 1002 | "dev": true, 1003 | "license": "MIT", 1004 | "dependencies": { 1005 | "tinyspy": "^4.0.3" 1006 | }, 1007 | "funding": { 1008 | "url": "https://opencollective.com/vitest" 1009 | } 1010 | }, 1011 | "node_modules/@vitest/utils": { 1012 | "version": "3.2.3", 1013 | "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.3.tgz", 1014 | "integrity": "sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==", 1015 | "dev": true, 1016 | "license": "MIT", 1017 | "dependencies": { 1018 | "@vitest/pretty-format": "3.2.3", 1019 | "loupe": "^3.1.3", 1020 | "tinyrainbow": "^2.0.0" 1021 | }, 1022 | "funding": { 1023 | "url": "https://opencollective.com/vitest" 1024 | } 1025 | }, 1026 | "node_modules/@webassemblyjs/ast": { 1027 | "version": "1.14.1", 1028 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", 1029 | "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", 1030 | "dev": true, 1031 | "license": "MIT", 1032 | "dependencies": { 1033 | "@webassemblyjs/helper-numbers": "1.13.2", 1034 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2" 1035 | } 1036 | }, 1037 | "node_modules/@webassemblyjs/floating-point-hex-parser": { 1038 | "version": "1.13.2", 1039 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", 1040 | "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", 1041 | "dev": true, 1042 | "license": "MIT" 1043 | }, 1044 | "node_modules/@webassemblyjs/helper-api-error": { 1045 | "version": "1.13.2", 1046 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", 1047 | "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", 1048 | "dev": true, 1049 | "license": "MIT" 1050 | }, 1051 | "node_modules/@webassemblyjs/helper-buffer": { 1052 | "version": "1.14.1", 1053 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", 1054 | "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", 1055 | "dev": true, 1056 | "license": "MIT" 1057 | }, 1058 | "node_modules/@webassemblyjs/helper-numbers": { 1059 | "version": "1.13.2", 1060 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", 1061 | "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", 1062 | "dev": true, 1063 | "license": "MIT", 1064 | "dependencies": { 1065 | "@webassemblyjs/floating-point-hex-parser": "1.13.2", 1066 | "@webassemblyjs/helper-api-error": "1.13.2", 1067 | "@xtuc/long": "4.2.2" 1068 | } 1069 | }, 1070 | "node_modules/@webassemblyjs/helper-wasm-bytecode": { 1071 | "version": "1.13.2", 1072 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", 1073 | "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", 1074 | "dev": true, 1075 | "license": "MIT" 1076 | }, 1077 | "node_modules/@webassemblyjs/helper-wasm-section": { 1078 | "version": "1.14.1", 1079 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", 1080 | "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", 1081 | "dev": true, 1082 | "license": "MIT", 1083 | "dependencies": { 1084 | "@webassemblyjs/ast": "1.14.1", 1085 | "@webassemblyjs/helper-buffer": "1.14.1", 1086 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 1087 | "@webassemblyjs/wasm-gen": "1.14.1" 1088 | } 1089 | }, 1090 | "node_modules/@webassemblyjs/ieee754": { 1091 | "version": "1.13.2", 1092 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", 1093 | "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", 1094 | "dev": true, 1095 | "license": "MIT", 1096 | "dependencies": { 1097 | "@xtuc/ieee754": "^1.2.0" 1098 | } 1099 | }, 1100 | "node_modules/@webassemblyjs/leb128": { 1101 | "version": "1.13.2", 1102 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", 1103 | "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", 1104 | "dev": true, 1105 | "license": "Apache-2.0", 1106 | "dependencies": { 1107 | "@xtuc/long": "4.2.2" 1108 | } 1109 | }, 1110 | "node_modules/@webassemblyjs/utf8": { 1111 | "version": "1.13.2", 1112 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", 1113 | "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", 1114 | "dev": true, 1115 | "license": "MIT" 1116 | }, 1117 | "node_modules/@webassemblyjs/wasm-edit": { 1118 | "version": "1.14.1", 1119 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", 1120 | "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", 1121 | "dev": true, 1122 | "license": "MIT", 1123 | "dependencies": { 1124 | "@webassemblyjs/ast": "1.14.1", 1125 | "@webassemblyjs/helper-buffer": "1.14.1", 1126 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 1127 | "@webassemblyjs/helper-wasm-section": "1.14.1", 1128 | "@webassemblyjs/wasm-gen": "1.14.1", 1129 | "@webassemblyjs/wasm-opt": "1.14.1", 1130 | "@webassemblyjs/wasm-parser": "1.14.1", 1131 | "@webassemblyjs/wast-printer": "1.14.1" 1132 | } 1133 | }, 1134 | "node_modules/@webassemblyjs/wasm-gen": { 1135 | "version": "1.14.1", 1136 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", 1137 | "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", 1138 | "dev": true, 1139 | "license": "MIT", 1140 | "dependencies": { 1141 | "@webassemblyjs/ast": "1.14.1", 1142 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 1143 | "@webassemblyjs/ieee754": "1.13.2", 1144 | "@webassemblyjs/leb128": "1.13.2", 1145 | "@webassemblyjs/utf8": "1.13.2" 1146 | } 1147 | }, 1148 | "node_modules/@webassemblyjs/wasm-opt": { 1149 | "version": "1.14.1", 1150 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", 1151 | "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", 1152 | "dev": true, 1153 | "license": "MIT", 1154 | "dependencies": { 1155 | "@webassemblyjs/ast": "1.14.1", 1156 | "@webassemblyjs/helper-buffer": "1.14.1", 1157 | "@webassemblyjs/wasm-gen": "1.14.1", 1158 | "@webassemblyjs/wasm-parser": "1.14.1" 1159 | } 1160 | }, 1161 | "node_modules/@webassemblyjs/wasm-parser": { 1162 | "version": "1.14.1", 1163 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", 1164 | "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", 1165 | "dev": true, 1166 | "license": "MIT", 1167 | "dependencies": { 1168 | "@webassemblyjs/ast": "1.14.1", 1169 | "@webassemblyjs/helper-api-error": "1.13.2", 1170 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 1171 | "@webassemblyjs/ieee754": "1.13.2", 1172 | "@webassemblyjs/leb128": "1.13.2", 1173 | "@webassemblyjs/utf8": "1.13.2" 1174 | } 1175 | }, 1176 | "node_modules/@webassemblyjs/wast-printer": { 1177 | "version": "1.14.1", 1178 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", 1179 | "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", 1180 | "dev": true, 1181 | "license": "MIT", 1182 | "dependencies": { 1183 | "@webassemblyjs/ast": "1.14.1", 1184 | "@xtuc/long": "4.2.2" 1185 | } 1186 | }, 1187 | "node_modules/@webpack-cli/configtest": { 1188 | "version": "3.0.1", 1189 | "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", 1190 | "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", 1191 | "dev": true, 1192 | "engines": { 1193 | "node": ">=18.12.0" 1194 | }, 1195 | "peerDependencies": { 1196 | "webpack": "^5.82.0", 1197 | "webpack-cli": "6.x.x" 1198 | } 1199 | }, 1200 | "node_modules/@webpack-cli/info": { 1201 | "version": "3.0.1", 1202 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", 1203 | "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", 1204 | "dev": true, 1205 | "engines": { 1206 | "node": ">=18.12.0" 1207 | }, 1208 | "peerDependencies": { 1209 | "webpack": "^5.82.0", 1210 | "webpack-cli": "6.x.x" 1211 | } 1212 | }, 1213 | "node_modules/@webpack-cli/serve": { 1214 | "version": "3.0.1", 1215 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", 1216 | "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", 1217 | "dev": true, 1218 | "engines": { 1219 | "node": ">=18.12.0" 1220 | }, 1221 | "peerDependencies": { 1222 | "webpack": "^5.82.0", 1223 | "webpack-cli": "6.x.x" 1224 | }, 1225 | "peerDependenciesMeta": { 1226 | "webpack-dev-server": { 1227 | "optional": true 1228 | } 1229 | } 1230 | }, 1231 | "node_modules/@xtuc/ieee754": { 1232 | "version": "1.2.0", 1233 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 1234 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 1235 | "dev": true, 1236 | "license": "BSD-3-Clause" 1237 | }, 1238 | "node_modules/@xtuc/long": { 1239 | "version": "4.2.2", 1240 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 1241 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 1242 | "dev": true, 1243 | "license": "Apache-2.0" 1244 | }, 1245 | "node_modules/acorn": { 1246 | "version": "8.14.0", 1247 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 1248 | "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 1249 | "dev": true, 1250 | "license": "MIT", 1251 | "bin": { 1252 | "acorn": "bin/acorn" 1253 | }, 1254 | "engines": { 1255 | "node": ">=0.4.0" 1256 | } 1257 | }, 1258 | "node_modules/ajv": { 1259 | "version": "8.17.1", 1260 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", 1261 | "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", 1262 | "dev": true, 1263 | "license": "MIT", 1264 | "dependencies": { 1265 | "fast-deep-equal": "^3.1.3", 1266 | "fast-uri": "^3.0.1", 1267 | "json-schema-traverse": "^1.0.0", 1268 | "require-from-string": "^2.0.2" 1269 | }, 1270 | "funding": { 1271 | "type": "github", 1272 | "url": "https://github.com/sponsors/epoberezkin" 1273 | } 1274 | }, 1275 | "node_modules/ajv-formats": { 1276 | "version": "2.1.1", 1277 | "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", 1278 | "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", 1279 | "dev": true, 1280 | "license": "MIT", 1281 | "dependencies": { 1282 | "ajv": "^8.0.0" 1283 | }, 1284 | "peerDependencies": { 1285 | "ajv": "^8.0.0" 1286 | }, 1287 | "peerDependenciesMeta": { 1288 | "ajv": { 1289 | "optional": true 1290 | } 1291 | } 1292 | }, 1293 | "node_modules/ajv-keywords": { 1294 | "version": "5.1.0", 1295 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", 1296 | "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", 1297 | "dev": true, 1298 | "license": "MIT", 1299 | "dependencies": { 1300 | "fast-deep-equal": "^3.1.3" 1301 | }, 1302 | "peerDependencies": { 1303 | "ajv": "^8.8.2" 1304 | } 1305 | }, 1306 | "node_modules/ansi-styles": { 1307 | "version": "4.3.0", 1308 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1309 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1310 | "dev": true, 1311 | "license": "MIT", 1312 | "dependencies": { 1313 | "color-convert": "^2.0.1" 1314 | }, 1315 | "engines": { 1316 | "node": ">=8" 1317 | }, 1318 | "funding": { 1319 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1320 | } 1321 | }, 1322 | "node_modules/assertion-error": { 1323 | "version": "2.0.1", 1324 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", 1325 | "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", 1326 | "dev": true, 1327 | "license": "MIT", 1328 | "engines": { 1329 | "node": ">=12" 1330 | } 1331 | }, 1332 | "node_modules/balanced-match": { 1333 | "version": "1.0.2", 1334 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1335 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1336 | "license": "MIT" 1337 | }, 1338 | "node_modules/brace-expansion": { 1339 | "version": "2.0.1", 1340 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1341 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1342 | "license": "MIT", 1343 | "dependencies": { 1344 | "balanced-match": "^1.0.0" 1345 | } 1346 | }, 1347 | "node_modules/braces": { 1348 | "version": "3.0.3", 1349 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1350 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1351 | "license": "MIT", 1352 | "dependencies": { 1353 | "fill-range": "^7.1.1" 1354 | }, 1355 | "engines": { 1356 | "node": ">=8" 1357 | } 1358 | }, 1359 | "node_modules/browserslist": { 1360 | "version": "4.24.3", 1361 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", 1362 | "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", 1363 | "dev": true, 1364 | "funding": [ 1365 | { 1366 | "type": "opencollective", 1367 | "url": "https://opencollective.com/browserslist" 1368 | }, 1369 | { 1370 | "type": "tidelift", 1371 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1372 | }, 1373 | { 1374 | "type": "github", 1375 | "url": "https://github.com/sponsors/ai" 1376 | } 1377 | ], 1378 | "license": "MIT", 1379 | "dependencies": { 1380 | "caniuse-lite": "^1.0.30001688", 1381 | "electron-to-chromium": "^1.5.73", 1382 | "node-releases": "^2.0.19", 1383 | "update-browserslist-db": "^1.1.1" 1384 | }, 1385 | "bin": { 1386 | "browserslist": "cli.js" 1387 | }, 1388 | "engines": { 1389 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1390 | } 1391 | }, 1392 | "node_modules/buffer-from": { 1393 | "version": "1.1.2", 1394 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 1395 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 1396 | "dev": true, 1397 | "license": "MIT" 1398 | }, 1399 | "node_modules/cac": { 1400 | "version": "6.7.14", 1401 | "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", 1402 | "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", 1403 | "dev": true, 1404 | "license": "MIT", 1405 | "engines": { 1406 | "node": ">=8" 1407 | } 1408 | }, 1409 | "node_modules/caniuse-lite": { 1410 | "version": "1.0.30001688", 1411 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001688.tgz", 1412 | "integrity": "sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==", 1413 | "dev": true, 1414 | "funding": [ 1415 | { 1416 | "type": "opencollective", 1417 | "url": "https://opencollective.com/browserslist" 1418 | }, 1419 | { 1420 | "type": "tidelift", 1421 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 1422 | }, 1423 | { 1424 | "type": "github", 1425 | "url": "https://github.com/sponsors/ai" 1426 | } 1427 | ], 1428 | "license": "CC-BY-4.0" 1429 | }, 1430 | "node_modules/chai": { 1431 | "version": "5.2.0", 1432 | "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", 1433 | "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", 1434 | "dev": true, 1435 | "license": "MIT", 1436 | "dependencies": { 1437 | "assertion-error": "^2.0.1", 1438 | "check-error": "^2.1.1", 1439 | "deep-eql": "^5.0.1", 1440 | "loupe": "^3.1.0", 1441 | "pathval": "^2.0.0" 1442 | }, 1443 | "engines": { 1444 | "node": ">=12" 1445 | } 1446 | }, 1447 | "node_modules/chalk": { 1448 | "version": "4.1.2", 1449 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1450 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1451 | "dev": true, 1452 | "license": "MIT", 1453 | "dependencies": { 1454 | "ansi-styles": "^4.1.0", 1455 | "supports-color": "^7.1.0" 1456 | }, 1457 | "engines": { 1458 | "node": ">=10" 1459 | }, 1460 | "funding": { 1461 | "url": "https://github.com/chalk/chalk?sponsor=1" 1462 | } 1463 | }, 1464 | "node_modules/check-error": { 1465 | "version": "2.1.1", 1466 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", 1467 | "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", 1468 | "dev": true, 1469 | "license": "MIT", 1470 | "engines": { 1471 | "node": ">= 16" 1472 | } 1473 | }, 1474 | "node_modules/chrome-trace-event": { 1475 | "version": "1.0.4", 1476 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", 1477 | "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", 1478 | "dev": true, 1479 | "license": "MIT", 1480 | "engines": { 1481 | "node": ">=6.0" 1482 | } 1483 | }, 1484 | "node_modules/clone-deep": { 1485 | "version": "4.0.1", 1486 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", 1487 | "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", 1488 | "dev": true, 1489 | "dependencies": { 1490 | "is-plain-object": "^2.0.4", 1491 | "kind-of": "^6.0.2", 1492 | "shallow-clone": "^3.0.0" 1493 | }, 1494 | "engines": { 1495 | "node": ">=6" 1496 | } 1497 | }, 1498 | "node_modules/code-block-writer": { 1499 | "version": "13.0.3", 1500 | "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", 1501 | "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", 1502 | "license": "MIT" 1503 | }, 1504 | "node_modules/color-convert": { 1505 | "version": "2.0.1", 1506 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1507 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1508 | "dev": true, 1509 | "license": "MIT", 1510 | "dependencies": { 1511 | "color-name": "~1.1.4" 1512 | }, 1513 | "engines": { 1514 | "node": ">=7.0.0" 1515 | } 1516 | }, 1517 | "node_modules/color-name": { 1518 | "version": "1.1.4", 1519 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1520 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1521 | "dev": true, 1522 | "license": "MIT" 1523 | }, 1524 | "node_modules/colorette": { 1525 | "version": "2.0.20", 1526 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", 1527 | "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", 1528 | "dev": true, 1529 | "license": "MIT" 1530 | }, 1531 | "node_modules/commander": { 1532 | "version": "2.20.3", 1533 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1534 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1535 | "dev": true, 1536 | "license": "MIT" 1537 | }, 1538 | "node_modules/cross-spawn": { 1539 | "version": "7.0.6", 1540 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1541 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1542 | "dev": true, 1543 | "license": "MIT", 1544 | "dependencies": { 1545 | "path-key": "^3.1.0", 1546 | "shebang-command": "^2.0.0", 1547 | "which": "^2.0.1" 1548 | }, 1549 | "engines": { 1550 | "node": ">= 8" 1551 | } 1552 | }, 1553 | "node_modules/debug": { 1554 | "version": "4.4.1", 1555 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", 1556 | "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", 1557 | "dev": true, 1558 | "license": "MIT", 1559 | "dependencies": { 1560 | "ms": "^2.1.3" 1561 | }, 1562 | "engines": { 1563 | "node": ">=6.0" 1564 | }, 1565 | "peerDependenciesMeta": { 1566 | "supports-color": { 1567 | "optional": true 1568 | } 1569 | } 1570 | }, 1571 | "node_modules/deep-eql": { 1572 | "version": "5.0.2", 1573 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", 1574 | "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", 1575 | "dev": true, 1576 | "license": "MIT", 1577 | "engines": { 1578 | "node": ">=6" 1579 | } 1580 | }, 1581 | "node_modules/electron-to-chromium": { 1582 | "version": "1.5.73", 1583 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz", 1584 | "integrity": "sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==", 1585 | "dev": true, 1586 | "license": "ISC" 1587 | }, 1588 | "node_modules/enhanced-resolve": { 1589 | "version": "5.17.1", 1590 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", 1591 | "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", 1592 | "dev": true, 1593 | "license": "MIT", 1594 | "dependencies": { 1595 | "graceful-fs": "^4.2.4", 1596 | "tapable": "^2.2.0" 1597 | }, 1598 | "engines": { 1599 | "node": ">=10.13.0" 1600 | } 1601 | }, 1602 | "node_modules/envinfo": { 1603 | "version": "7.14.0", 1604 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", 1605 | "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", 1606 | "dev": true, 1607 | "license": "MIT", 1608 | "bin": { 1609 | "envinfo": "dist/cli.js" 1610 | }, 1611 | "engines": { 1612 | "node": ">=4" 1613 | } 1614 | }, 1615 | "node_modules/es-module-lexer": { 1616 | "version": "1.7.0", 1617 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", 1618 | "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", 1619 | "dev": true, 1620 | "license": "MIT" 1621 | }, 1622 | "node_modules/esbuild": { 1623 | "version": "0.25.2", 1624 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", 1625 | "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", 1626 | "dev": true, 1627 | "hasInstallScript": true, 1628 | "license": "MIT", 1629 | "bin": { 1630 | "esbuild": "bin/esbuild" 1631 | }, 1632 | "engines": { 1633 | "node": ">=18" 1634 | }, 1635 | "optionalDependencies": { 1636 | "@esbuild/aix-ppc64": "0.25.2", 1637 | "@esbuild/android-arm": "0.25.2", 1638 | "@esbuild/android-arm64": "0.25.2", 1639 | "@esbuild/android-x64": "0.25.2", 1640 | "@esbuild/darwin-arm64": "0.25.2", 1641 | "@esbuild/darwin-x64": "0.25.2", 1642 | "@esbuild/freebsd-arm64": "0.25.2", 1643 | "@esbuild/freebsd-x64": "0.25.2", 1644 | "@esbuild/linux-arm": "0.25.2", 1645 | "@esbuild/linux-arm64": "0.25.2", 1646 | "@esbuild/linux-ia32": "0.25.2", 1647 | "@esbuild/linux-loong64": "0.25.2", 1648 | "@esbuild/linux-mips64el": "0.25.2", 1649 | "@esbuild/linux-ppc64": "0.25.2", 1650 | "@esbuild/linux-riscv64": "0.25.2", 1651 | "@esbuild/linux-s390x": "0.25.2", 1652 | "@esbuild/linux-x64": "0.25.2", 1653 | "@esbuild/netbsd-arm64": "0.25.2", 1654 | "@esbuild/netbsd-x64": "0.25.2", 1655 | "@esbuild/openbsd-arm64": "0.25.2", 1656 | "@esbuild/openbsd-x64": "0.25.2", 1657 | "@esbuild/sunos-x64": "0.25.2", 1658 | "@esbuild/win32-arm64": "0.25.2", 1659 | "@esbuild/win32-ia32": "0.25.2", 1660 | "@esbuild/win32-x64": "0.25.2" 1661 | } 1662 | }, 1663 | "node_modules/escalade": { 1664 | "version": "3.2.0", 1665 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1666 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1667 | "dev": true, 1668 | "license": "MIT", 1669 | "engines": { 1670 | "node": ">=6" 1671 | } 1672 | }, 1673 | "node_modules/eslint-scope": { 1674 | "version": "5.1.1", 1675 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 1676 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 1677 | "dev": true, 1678 | "license": "BSD-2-Clause", 1679 | "dependencies": { 1680 | "esrecurse": "^4.3.0", 1681 | "estraverse": "^4.1.1" 1682 | }, 1683 | "engines": { 1684 | "node": ">=8.0.0" 1685 | } 1686 | }, 1687 | "node_modules/esrecurse": { 1688 | "version": "4.3.0", 1689 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1690 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1691 | "dev": true, 1692 | "license": "BSD-2-Clause", 1693 | "dependencies": { 1694 | "estraverse": "^5.2.0" 1695 | }, 1696 | "engines": { 1697 | "node": ">=4.0" 1698 | } 1699 | }, 1700 | "node_modules/esrecurse/node_modules/estraverse": { 1701 | "version": "5.3.0", 1702 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1703 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1704 | "dev": true, 1705 | "license": "BSD-2-Clause", 1706 | "engines": { 1707 | "node": ">=4.0" 1708 | } 1709 | }, 1710 | "node_modules/estraverse": { 1711 | "version": "4.3.0", 1712 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1713 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1714 | "dev": true, 1715 | "license": "BSD-2-Clause", 1716 | "engines": { 1717 | "node": ">=4.0" 1718 | } 1719 | }, 1720 | "node_modules/estree-walker": { 1721 | "version": "3.0.3", 1722 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 1723 | "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 1724 | "dev": true, 1725 | "license": "MIT", 1726 | "dependencies": { 1727 | "@types/estree": "^1.0.0" 1728 | } 1729 | }, 1730 | "node_modules/events": { 1731 | "version": "3.3.0", 1732 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1733 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 1734 | "dev": true, 1735 | "license": "MIT", 1736 | "engines": { 1737 | "node": ">=0.8.x" 1738 | } 1739 | }, 1740 | "node_modules/expect-type": { 1741 | "version": "1.2.1", 1742 | "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", 1743 | "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", 1744 | "dev": true, 1745 | "license": "Apache-2.0", 1746 | "engines": { 1747 | "node": ">=12.0.0" 1748 | } 1749 | }, 1750 | "node_modules/fast-deep-equal": { 1751 | "version": "3.1.3", 1752 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1753 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1754 | "dev": true, 1755 | "license": "MIT" 1756 | }, 1757 | "node_modules/fast-glob": { 1758 | "version": "3.3.3", 1759 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", 1760 | "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", 1761 | "license": "MIT", 1762 | "dependencies": { 1763 | "@nodelib/fs.stat": "^2.0.2", 1764 | "@nodelib/fs.walk": "^1.2.3", 1765 | "glob-parent": "^5.1.2", 1766 | "merge2": "^1.3.0", 1767 | "micromatch": "^4.0.8" 1768 | }, 1769 | "engines": { 1770 | "node": ">=8.6.0" 1771 | } 1772 | }, 1773 | "node_modules/fast-uri": { 1774 | "version": "3.0.3", 1775 | "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", 1776 | "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", 1777 | "dev": true, 1778 | "license": "BSD-3-Clause" 1779 | }, 1780 | "node_modules/fastest-levenshtein": { 1781 | "version": "1.0.16", 1782 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", 1783 | "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", 1784 | "dev": true, 1785 | "license": "MIT", 1786 | "engines": { 1787 | "node": ">= 4.9.1" 1788 | } 1789 | }, 1790 | "node_modules/fastq": { 1791 | "version": "1.19.1", 1792 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", 1793 | "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", 1794 | "license": "ISC", 1795 | "dependencies": { 1796 | "reusify": "^1.0.4" 1797 | } 1798 | }, 1799 | "node_modules/fdir": { 1800 | "version": "6.4.4", 1801 | "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", 1802 | "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", 1803 | "dev": true, 1804 | "license": "MIT", 1805 | "peerDependencies": { 1806 | "picomatch": "^3 || ^4" 1807 | }, 1808 | "peerDependenciesMeta": { 1809 | "picomatch": { 1810 | "optional": true 1811 | } 1812 | } 1813 | }, 1814 | "node_modules/fill-range": { 1815 | "version": "7.1.1", 1816 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1817 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1818 | "license": "MIT", 1819 | "dependencies": { 1820 | "to-regex-range": "^5.0.1" 1821 | }, 1822 | "engines": { 1823 | "node": ">=8" 1824 | } 1825 | }, 1826 | "node_modules/find-up": { 1827 | "version": "4.1.0", 1828 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1829 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1830 | "dev": true, 1831 | "license": "MIT", 1832 | "dependencies": { 1833 | "locate-path": "^5.0.0", 1834 | "path-exists": "^4.0.0" 1835 | }, 1836 | "engines": { 1837 | "node": ">=8" 1838 | } 1839 | }, 1840 | "node_modules/flat": { 1841 | "version": "5.0.2", 1842 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1843 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1844 | "dev": true, 1845 | "bin": { 1846 | "flat": "cli.js" 1847 | } 1848 | }, 1849 | "node_modules/fsevents": { 1850 | "version": "2.3.3", 1851 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1852 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1853 | "dev": true, 1854 | "hasInstallScript": true, 1855 | "license": "MIT", 1856 | "optional": true, 1857 | "os": [ 1858 | "darwin" 1859 | ], 1860 | "engines": { 1861 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1862 | } 1863 | }, 1864 | "node_modules/function-bind": { 1865 | "version": "1.1.2", 1866 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1867 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1868 | "dev": true, 1869 | "license": "MIT", 1870 | "funding": { 1871 | "url": "https://github.com/sponsors/ljharb" 1872 | } 1873 | }, 1874 | "node_modules/glob-parent": { 1875 | "version": "5.1.2", 1876 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1877 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1878 | "license": "ISC", 1879 | "dependencies": { 1880 | "is-glob": "^4.0.1" 1881 | }, 1882 | "engines": { 1883 | "node": ">= 6" 1884 | } 1885 | }, 1886 | "node_modules/glob-to-regexp": { 1887 | "version": "0.4.1", 1888 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 1889 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 1890 | "dev": true, 1891 | "license": "BSD-2-Clause" 1892 | }, 1893 | "node_modules/graceful-fs": { 1894 | "version": "4.2.11", 1895 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1896 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1897 | "dev": true, 1898 | "license": "ISC" 1899 | }, 1900 | "node_modules/has-flag": { 1901 | "version": "4.0.0", 1902 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1903 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1904 | "dev": true, 1905 | "license": "MIT", 1906 | "engines": { 1907 | "node": ">=8" 1908 | } 1909 | }, 1910 | "node_modules/hasown": { 1911 | "version": "2.0.2", 1912 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 1913 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 1914 | "dev": true, 1915 | "license": "MIT", 1916 | "dependencies": { 1917 | "function-bind": "^1.1.2" 1918 | }, 1919 | "engines": { 1920 | "node": ">= 0.4" 1921 | } 1922 | }, 1923 | "node_modules/import-local": { 1924 | "version": "3.2.0", 1925 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", 1926 | "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", 1927 | "dev": true, 1928 | "license": "MIT", 1929 | "dependencies": { 1930 | "pkg-dir": "^4.2.0", 1931 | "resolve-cwd": "^3.0.0" 1932 | }, 1933 | "bin": { 1934 | "import-local-fixture": "fixtures/cli.js" 1935 | }, 1936 | "engines": { 1937 | "node": ">=8" 1938 | }, 1939 | "funding": { 1940 | "url": "https://github.com/sponsors/sindresorhus" 1941 | } 1942 | }, 1943 | "node_modules/interpret": { 1944 | "version": "3.1.1", 1945 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", 1946 | "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", 1947 | "dev": true, 1948 | "license": "MIT", 1949 | "engines": { 1950 | "node": ">=10.13.0" 1951 | } 1952 | }, 1953 | "node_modules/is-core-module": { 1954 | "version": "2.16.0", 1955 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.0.tgz", 1956 | "integrity": "sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==", 1957 | "dev": true, 1958 | "license": "MIT", 1959 | "dependencies": { 1960 | "hasown": "^2.0.2" 1961 | }, 1962 | "engines": { 1963 | "node": ">= 0.4" 1964 | }, 1965 | "funding": { 1966 | "url": "https://github.com/sponsors/ljharb" 1967 | } 1968 | }, 1969 | "node_modules/is-extglob": { 1970 | "version": "2.1.1", 1971 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1972 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1973 | "license": "MIT", 1974 | "engines": { 1975 | "node": ">=0.10.0" 1976 | } 1977 | }, 1978 | "node_modules/is-glob": { 1979 | "version": "4.0.3", 1980 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1981 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1982 | "license": "MIT", 1983 | "dependencies": { 1984 | "is-extglob": "^2.1.1" 1985 | }, 1986 | "engines": { 1987 | "node": ">=0.10.0" 1988 | } 1989 | }, 1990 | "node_modules/is-number": { 1991 | "version": "7.0.0", 1992 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1993 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1994 | "license": "MIT", 1995 | "engines": { 1996 | "node": ">=0.12.0" 1997 | } 1998 | }, 1999 | "node_modules/is-plain-object": { 2000 | "version": "2.0.4", 2001 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 2002 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 2003 | "dev": true, 2004 | "dependencies": { 2005 | "isobject": "^3.0.1" 2006 | }, 2007 | "engines": { 2008 | "node": ">=0.10.0" 2009 | } 2010 | }, 2011 | "node_modules/isexe": { 2012 | "version": "2.0.0", 2013 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2014 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2015 | "dev": true, 2016 | "license": "ISC" 2017 | }, 2018 | "node_modules/isobject": { 2019 | "version": "3.0.1", 2020 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2021 | "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", 2022 | "dev": true, 2023 | "engines": { 2024 | "node": ">=0.10.0" 2025 | } 2026 | }, 2027 | "node_modules/jest-worker": { 2028 | "version": "27.5.1", 2029 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", 2030 | "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", 2031 | "dev": true, 2032 | "license": "MIT", 2033 | "dependencies": { 2034 | "@types/node": "*", 2035 | "merge-stream": "^2.0.0", 2036 | "supports-color": "^8.0.0" 2037 | }, 2038 | "engines": { 2039 | "node": ">= 10.13.0" 2040 | } 2041 | }, 2042 | "node_modules/jest-worker/node_modules/supports-color": { 2043 | "version": "8.1.1", 2044 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2045 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2046 | "dev": true, 2047 | "license": "MIT", 2048 | "dependencies": { 2049 | "has-flag": "^4.0.0" 2050 | }, 2051 | "engines": { 2052 | "node": ">=10" 2053 | }, 2054 | "funding": { 2055 | "url": "https://github.com/chalk/supports-color?sponsor=1" 2056 | } 2057 | }, 2058 | "node_modules/js-tokens": { 2059 | "version": "9.0.1", 2060 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", 2061 | "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", 2062 | "dev": true, 2063 | "license": "MIT" 2064 | }, 2065 | "node_modules/json-parse-even-better-errors": { 2066 | "version": "2.3.1", 2067 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 2068 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 2069 | "dev": true, 2070 | "license": "MIT" 2071 | }, 2072 | "node_modules/json-schema-traverse": { 2073 | "version": "1.0.0", 2074 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 2075 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 2076 | "dev": true, 2077 | "license": "MIT" 2078 | }, 2079 | "node_modules/kind-of": { 2080 | "version": "6.0.3", 2081 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 2082 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 2083 | "dev": true, 2084 | "engines": { 2085 | "node": ">=0.10.0" 2086 | } 2087 | }, 2088 | "node_modules/loader-runner": { 2089 | "version": "4.3.0", 2090 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", 2091 | "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", 2092 | "dev": true, 2093 | "license": "MIT", 2094 | "engines": { 2095 | "node": ">=6.11.5" 2096 | } 2097 | }, 2098 | "node_modules/locate-path": { 2099 | "version": "5.0.0", 2100 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 2101 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 2102 | "dev": true, 2103 | "license": "MIT", 2104 | "dependencies": { 2105 | "p-locate": "^4.1.0" 2106 | }, 2107 | "engines": { 2108 | "node": ">=8" 2109 | } 2110 | }, 2111 | "node_modules/loupe": { 2112 | "version": "3.1.3", 2113 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", 2114 | "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", 2115 | "dev": true, 2116 | "license": "MIT" 2117 | }, 2118 | "node_modules/magic-string": { 2119 | "version": "0.30.17", 2120 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 2121 | "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 2122 | "dev": true, 2123 | "license": "MIT", 2124 | "dependencies": { 2125 | "@jridgewell/sourcemap-codec": "^1.5.0" 2126 | } 2127 | }, 2128 | "node_modules/merge-stream": { 2129 | "version": "2.0.0", 2130 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 2131 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 2132 | "dev": true, 2133 | "license": "MIT" 2134 | }, 2135 | "node_modules/merge2": { 2136 | "version": "1.4.1", 2137 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2138 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2139 | "license": "MIT", 2140 | "engines": { 2141 | "node": ">= 8" 2142 | } 2143 | }, 2144 | "node_modules/micromatch": { 2145 | "version": "4.0.8", 2146 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 2147 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 2148 | "license": "MIT", 2149 | "dependencies": { 2150 | "braces": "^3.0.3", 2151 | "picomatch": "^2.3.1" 2152 | }, 2153 | "engines": { 2154 | "node": ">=8.6" 2155 | } 2156 | }, 2157 | "node_modules/micromatch/node_modules/picomatch": { 2158 | "version": "2.3.1", 2159 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2160 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2161 | "license": "MIT", 2162 | "engines": { 2163 | "node": ">=8.6" 2164 | }, 2165 | "funding": { 2166 | "url": "https://github.com/sponsors/jonschlinkert" 2167 | } 2168 | }, 2169 | "node_modules/mime-db": { 2170 | "version": "1.52.0", 2171 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2172 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 2173 | "dev": true, 2174 | "license": "MIT", 2175 | "engines": { 2176 | "node": ">= 0.6" 2177 | } 2178 | }, 2179 | "node_modules/mime-types": { 2180 | "version": "2.1.35", 2181 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2182 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2183 | "dev": true, 2184 | "license": "MIT", 2185 | "dependencies": { 2186 | "mime-db": "1.52.0" 2187 | }, 2188 | "engines": { 2189 | "node": ">= 0.6" 2190 | } 2191 | }, 2192 | "node_modules/minimatch": { 2193 | "version": "10.0.1", 2194 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", 2195 | "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", 2196 | "license": "ISC", 2197 | "dependencies": { 2198 | "brace-expansion": "^2.0.1" 2199 | }, 2200 | "engines": { 2201 | "node": "20 || >=22" 2202 | }, 2203 | "funding": { 2204 | "url": "https://github.com/sponsors/isaacs" 2205 | } 2206 | }, 2207 | "node_modules/ms": { 2208 | "version": "2.1.3", 2209 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2210 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2211 | "dev": true, 2212 | "license": "MIT" 2213 | }, 2214 | "node_modules/nanoid": { 2215 | "version": "3.3.11", 2216 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 2217 | "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 2218 | "dev": true, 2219 | "funding": [ 2220 | { 2221 | "type": "github", 2222 | "url": "https://github.com/sponsors/ai" 2223 | } 2224 | ], 2225 | "license": "MIT", 2226 | "bin": { 2227 | "nanoid": "bin/nanoid.cjs" 2228 | }, 2229 | "engines": { 2230 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2231 | } 2232 | }, 2233 | "node_modules/neo-async": { 2234 | "version": "2.6.2", 2235 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 2236 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 2237 | "dev": true, 2238 | "license": "MIT" 2239 | }, 2240 | "node_modules/node-releases": { 2241 | "version": "2.0.19", 2242 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", 2243 | "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", 2244 | "dev": true, 2245 | "license": "MIT" 2246 | }, 2247 | "node_modules/p-limit": { 2248 | "version": "2.3.0", 2249 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2250 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2251 | "dev": true, 2252 | "license": "MIT", 2253 | "dependencies": { 2254 | "p-try": "^2.0.0" 2255 | }, 2256 | "engines": { 2257 | "node": ">=6" 2258 | }, 2259 | "funding": { 2260 | "url": "https://github.com/sponsors/sindresorhus" 2261 | } 2262 | }, 2263 | "node_modules/p-locate": { 2264 | "version": "4.1.0", 2265 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 2266 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 2267 | "dev": true, 2268 | "license": "MIT", 2269 | "dependencies": { 2270 | "p-limit": "^2.2.0" 2271 | }, 2272 | "engines": { 2273 | "node": ">=8" 2274 | } 2275 | }, 2276 | "node_modules/p-try": { 2277 | "version": "2.2.0", 2278 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2279 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 2280 | "dev": true, 2281 | "license": "MIT", 2282 | "engines": { 2283 | "node": ">=6" 2284 | } 2285 | }, 2286 | "node_modules/path-browserify": { 2287 | "version": "1.0.1", 2288 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", 2289 | "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", 2290 | "license": "MIT" 2291 | }, 2292 | "node_modules/path-exists": { 2293 | "version": "4.0.0", 2294 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2295 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2296 | "dev": true, 2297 | "license": "MIT", 2298 | "engines": { 2299 | "node": ">=8" 2300 | } 2301 | }, 2302 | "node_modules/path-key": { 2303 | "version": "3.1.1", 2304 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2305 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2306 | "dev": true, 2307 | "license": "MIT", 2308 | "engines": { 2309 | "node": ">=8" 2310 | } 2311 | }, 2312 | "node_modules/path-parse": { 2313 | "version": "1.0.7", 2314 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2315 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2316 | "dev": true, 2317 | "license": "MIT" 2318 | }, 2319 | "node_modules/pathe": { 2320 | "version": "2.0.3", 2321 | "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", 2322 | "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", 2323 | "dev": true, 2324 | "license": "MIT" 2325 | }, 2326 | "node_modules/pathval": { 2327 | "version": "2.0.0", 2328 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", 2329 | "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", 2330 | "dev": true, 2331 | "license": "MIT", 2332 | "engines": { 2333 | "node": ">= 14.16" 2334 | } 2335 | }, 2336 | "node_modules/picocolors": { 2337 | "version": "1.1.1", 2338 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 2339 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 2340 | "dev": true, 2341 | "license": "ISC" 2342 | }, 2343 | "node_modules/picomatch": { 2344 | "version": "4.0.2", 2345 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 2346 | "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 2347 | "dev": true, 2348 | "license": "MIT", 2349 | "engines": { 2350 | "node": ">=12" 2351 | }, 2352 | "funding": { 2353 | "url": "https://github.com/sponsors/jonschlinkert" 2354 | } 2355 | }, 2356 | "node_modules/pkg-dir": { 2357 | "version": "4.2.0", 2358 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 2359 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 2360 | "dev": true, 2361 | "license": "MIT", 2362 | "dependencies": { 2363 | "find-up": "^4.0.0" 2364 | }, 2365 | "engines": { 2366 | "node": ">=8" 2367 | } 2368 | }, 2369 | "node_modules/postcss": { 2370 | "version": "8.5.3", 2371 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", 2372 | "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", 2373 | "dev": true, 2374 | "funding": [ 2375 | { 2376 | "type": "opencollective", 2377 | "url": "https://opencollective.com/postcss/" 2378 | }, 2379 | { 2380 | "type": "tidelift", 2381 | "url": "https://tidelift.com/funding/github/npm/postcss" 2382 | }, 2383 | { 2384 | "type": "github", 2385 | "url": "https://github.com/sponsors/ai" 2386 | } 2387 | ], 2388 | "license": "MIT", 2389 | "dependencies": { 2390 | "nanoid": "^3.3.8", 2391 | "picocolors": "^1.1.1", 2392 | "source-map-js": "^1.2.1" 2393 | }, 2394 | "engines": { 2395 | "node": "^10 || ^12 || >=14" 2396 | } 2397 | }, 2398 | "node_modules/queue-microtask": { 2399 | "version": "1.2.3", 2400 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2401 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2402 | "funding": [ 2403 | { 2404 | "type": "github", 2405 | "url": "https://github.com/sponsors/feross" 2406 | }, 2407 | { 2408 | "type": "patreon", 2409 | "url": "https://www.patreon.com/feross" 2410 | }, 2411 | { 2412 | "type": "consulting", 2413 | "url": "https://feross.org/support" 2414 | } 2415 | ], 2416 | "license": "MIT" 2417 | }, 2418 | "node_modules/randombytes": { 2419 | "version": "2.1.0", 2420 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2421 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2422 | "dev": true, 2423 | "license": "MIT", 2424 | "dependencies": { 2425 | "safe-buffer": "^5.1.0" 2426 | } 2427 | }, 2428 | "node_modules/rechoir": { 2429 | "version": "0.8.0", 2430 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", 2431 | "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", 2432 | "dev": true, 2433 | "license": "MIT", 2434 | "dependencies": { 2435 | "resolve": "^1.20.0" 2436 | }, 2437 | "engines": { 2438 | "node": ">= 10.13.0" 2439 | } 2440 | }, 2441 | "node_modules/require-from-string": { 2442 | "version": "2.0.2", 2443 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 2444 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 2445 | "dev": true, 2446 | "license": "MIT", 2447 | "engines": { 2448 | "node": ">=0.10.0" 2449 | } 2450 | }, 2451 | "node_modules/resolve": { 2452 | "version": "1.22.9", 2453 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.9.tgz", 2454 | "integrity": "sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==", 2455 | "dev": true, 2456 | "license": "MIT", 2457 | "dependencies": { 2458 | "is-core-module": "^2.16.0", 2459 | "path-parse": "^1.0.7", 2460 | "supports-preserve-symlinks-flag": "^1.0.0" 2461 | }, 2462 | "bin": { 2463 | "resolve": "bin/resolve" 2464 | }, 2465 | "funding": { 2466 | "url": "https://github.com/sponsors/ljharb" 2467 | } 2468 | }, 2469 | "node_modules/resolve-cwd": { 2470 | "version": "3.0.0", 2471 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 2472 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 2473 | "dev": true, 2474 | "license": "MIT", 2475 | "dependencies": { 2476 | "resolve-from": "^5.0.0" 2477 | }, 2478 | "engines": { 2479 | "node": ">=8" 2480 | } 2481 | }, 2482 | "node_modules/resolve-from": { 2483 | "version": "5.0.0", 2484 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 2485 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 2486 | "dev": true, 2487 | "license": "MIT", 2488 | "engines": { 2489 | "node": ">=8" 2490 | } 2491 | }, 2492 | "node_modules/reusify": { 2493 | "version": "1.1.0", 2494 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", 2495 | "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", 2496 | "license": "MIT", 2497 | "engines": { 2498 | "iojs": ">=1.0.0", 2499 | "node": ">=0.10.0" 2500 | } 2501 | }, 2502 | "node_modules/rollup": { 2503 | "version": "4.40.1", 2504 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.1.tgz", 2505 | "integrity": "sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==", 2506 | "dev": true, 2507 | "license": "MIT", 2508 | "dependencies": { 2509 | "@types/estree": "1.0.7" 2510 | }, 2511 | "bin": { 2512 | "rollup": "dist/bin/rollup" 2513 | }, 2514 | "engines": { 2515 | "node": ">=18.0.0", 2516 | "npm": ">=8.0.0" 2517 | }, 2518 | "optionalDependencies": { 2519 | "@rollup/rollup-android-arm-eabi": "4.40.1", 2520 | "@rollup/rollup-android-arm64": "4.40.1", 2521 | "@rollup/rollup-darwin-arm64": "4.40.1", 2522 | "@rollup/rollup-darwin-x64": "4.40.1", 2523 | "@rollup/rollup-freebsd-arm64": "4.40.1", 2524 | "@rollup/rollup-freebsd-x64": "4.40.1", 2525 | "@rollup/rollup-linux-arm-gnueabihf": "4.40.1", 2526 | "@rollup/rollup-linux-arm-musleabihf": "4.40.1", 2527 | "@rollup/rollup-linux-arm64-gnu": "4.40.1", 2528 | "@rollup/rollup-linux-arm64-musl": "4.40.1", 2529 | "@rollup/rollup-linux-loongarch64-gnu": "4.40.1", 2530 | "@rollup/rollup-linux-powerpc64le-gnu": "4.40.1", 2531 | "@rollup/rollup-linux-riscv64-gnu": "4.40.1", 2532 | "@rollup/rollup-linux-riscv64-musl": "4.40.1", 2533 | "@rollup/rollup-linux-s390x-gnu": "4.40.1", 2534 | "@rollup/rollup-linux-x64-gnu": "4.40.1", 2535 | "@rollup/rollup-linux-x64-musl": "4.40.1", 2536 | "@rollup/rollup-win32-arm64-msvc": "4.40.1", 2537 | "@rollup/rollup-win32-ia32-msvc": "4.40.1", 2538 | "@rollup/rollup-win32-x64-msvc": "4.40.1", 2539 | "fsevents": "~2.3.2" 2540 | } 2541 | }, 2542 | "node_modules/run-parallel": { 2543 | "version": "1.2.0", 2544 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2545 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2546 | "funding": [ 2547 | { 2548 | "type": "github", 2549 | "url": "https://github.com/sponsors/feross" 2550 | }, 2551 | { 2552 | "type": "patreon", 2553 | "url": "https://www.patreon.com/feross" 2554 | }, 2555 | { 2556 | "type": "consulting", 2557 | "url": "https://feross.org/support" 2558 | } 2559 | ], 2560 | "license": "MIT", 2561 | "dependencies": { 2562 | "queue-microtask": "^1.2.2" 2563 | } 2564 | }, 2565 | "node_modules/safe-buffer": { 2566 | "version": "5.2.1", 2567 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2568 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2569 | "dev": true, 2570 | "funding": [ 2571 | { 2572 | "type": "github", 2573 | "url": "https://github.com/sponsors/feross" 2574 | }, 2575 | { 2576 | "type": "patreon", 2577 | "url": "https://www.patreon.com/feross" 2578 | }, 2579 | { 2580 | "type": "consulting", 2581 | "url": "https://feross.org/support" 2582 | } 2583 | ], 2584 | "license": "MIT" 2585 | }, 2586 | "node_modules/schema-utils": { 2587 | "version": "4.3.2", 2588 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", 2589 | "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", 2590 | "dev": true, 2591 | "license": "MIT", 2592 | "dependencies": { 2593 | "@types/json-schema": "^7.0.9", 2594 | "ajv": "^8.9.0", 2595 | "ajv-formats": "^2.1.1", 2596 | "ajv-keywords": "^5.1.0" 2597 | }, 2598 | "engines": { 2599 | "node": ">= 10.13.0" 2600 | }, 2601 | "funding": { 2602 | "type": "opencollective", 2603 | "url": "https://opencollective.com/webpack" 2604 | } 2605 | }, 2606 | "node_modules/semver": { 2607 | "version": "7.6.3", 2608 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", 2609 | "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", 2610 | "dev": true, 2611 | "license": "ISC", 2612 | "bin": { 2613 | "semver": "bin/semver.js" 2614 | }, 2615 | "engines": { 2616 | "node": ">=10" 2617 | } 2618 | }, 2619 | "node_modules/serialize-javascript": { 2620 | "version": "6.0.2", 2621 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 2622 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 2623 | "dev": true, 2624 | "license": "BSD-3-Clause", 2625 | "dependencies": { 2626 | "randombytes": "^2.1.0" 2627 | } 2628 | }, 2629 | "node_modules/shallow-clone": { 2630 | "version": "3.0.1", 2631 | "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", 2632 | "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", 2633 | "dev": true, 2634 | "dependencies": { 2635 | "kind-of": "^6.0.2" 2636 | }, 2637 | "engines": { 2638 | "node": ">=8" 2639 | } 2640 | }, 2641 | "node_modules/shebang-command": { 2642 | "version": "2.0.0", 2643 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2644 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2645 | "dev": true, 2646 | "license": "MIT", 2647 | "dependencies": { 2648 | "shebang-regex": "^3.0.0" 2649 | }, 2650 | "engines": { 2651 | "node": ">=8" 2652 | } 2653 | }, 2654 | "node_modules/shebang-regex": { 2655 | "version": "3.0.0", 2656 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2657 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2658 | "dev": true, 2659 | "license": "MIT", 2660 | "engines": { 2661 | "node": ">=8" 2662 | } 2663 | }, 2664 | "node_modules/siginfo": { 2665 | "version": "2.0.0", 2666 | "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", 2667 | "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", 2668 | "dev": true, 2669 | "license": "ISC" 2670 | }, 2671 | "node_modules/source-map": { 2672 | "version": "0.7.4", 2673 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", 2674 | "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", 2675 | "dev": true, 2676 | "license": "BSD-3-Clause", 2677 | "engines": { 2678 | "node": ">= 8" 2679 | } 2680 | }, 2681 | "node_modules/source-map-js": { 2682 | "version": "1.2.1", 2683 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2684 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2685 | "dev": true, 2686 | "license": "BSD-3-Clause", 2687 | "engines": { 2688 | "node": ">=0.10.0" 2689 | } 2690 | }, 2691 | "node_modules/source-map-support": { 2692 | "version": "0.5.21", 2693 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 2694 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 2695 | "dev": true, 2696 | "license": "MIT", 2697 | "dependencies": { 2698 | "buffer-from": "^1.0.0", 2699 | "source-map": "^0.6.0" 2700 | } 2701 | }, 2702 | "node_modules/source-map-support/node_modules/source-map": { 2703 | "version": "0.6.1", 2704 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2705 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2706 | "dev": true, 2707 | "license": "BSD-3-Clause", 2708 | "engines": { 2709 | "node": ">=0.10.0" 2710 | } 2711 | }, 2712 | "node_modules/stackback": { 2713 | "version": "0.0.2", 2714 | "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", 2715 | "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", 2716 | "dev": true, 2717 | "license": "MIT" 2718 | }, 2719 | "node_modules/std-env": { 2720 | "version": "3.9.0", 2721 | "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", 2722 | "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", 2723 | "dev": true, 2724 | "license": "MIT" 2725 | }, 2726 | "node_modules/strip-literal": { 2727 | "version": "3.0.0", 2728 | "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", 2729 | "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", 2730 | "dev": true, 2731 | "license": "MIT", 2732 | "dependencies": { 2733 | "js-tokens": "^9.0.1" 2734 | }, 2735 | "funding": { 2736 | "url": "https://github.com/sponsors/antfu" 2737 | } 2738 | }, 2739 | "node_modules/supports-color": { 2740 | "version": "7.2.0", 2741 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2742 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2743 | "dev": true, 2744 | "license": "MIT", 2745 | "dependencies": { 2746 | "has-flag": "^4.0.0" 2747 | }, 2748 | "engines": { 2749 | "node": ">=8" 2750 | } 2751 | }, 2752 | "node_modules/supports-preserve-symlinks-flag": { 2753 | "version": "1.0.0", 2754 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2755 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2756 | "dev": true, 2757 | "license": "MIT", 2758 | "engines": { 2759 | "node": ">= 0.4" 2760 | }, 2761 | "funding": { 2762 | "url": "https://github.com/sponsors/ljharb" 2763 | } 2764 | }, 2765 | "node_modules/tapable": { 2766 | "version": "2.2.1", 2767 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 2768 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 2769 | "dev": true, 2770 | "license": "MIT", 2771 | "engines": { 2772 | "node": ">=6" 2773 | } 2774 | }, 2775 | "node_modules/terser": { 2776 | "version": "5.37.0", 2777 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", 2778 | "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", 2779 | "dev": true, 2780 | "license": "BSD-2-Clause", 2781 | "dependencies": { 2782 | "@jridgewell/source-map": "^0.3.3", 2783 | "acorn": "^8.8.2", 2784 | "commander": "^2.20.0", 2785 | "source-map-support": "~0.5.20" 2786 | }, 2787 | "bin": { 2788 | "terser": "bin/terser" 2789 | }, 2790 | "engines": { 2791 | "node": ">=10" 2792 | } 2793 | }, 2794 | "node_modules/terser-webpack-plugin": { 2795 | "version": "5.3.11", 2796 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", 2797 | "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", 2798 | "dev": true, 2799 | "license": "MIT", 2800 | "dependencies": { 2801 | "@jridgewell/trace-mapping": "^0.3.25", 2802 | "jest-worker": "^27.4.5", 2803 | "schema-utils": "^4.3.0", 2804 | "serialize-javascript": "^6.0.2", 2805 | "terser": "^5.31.1" 2806 | }, 2807 | "engines": { 2808 | "node": ">= 10.13.0" 2809 | }, 2810 | "funding": { 2811 | "type": "opencollective", 2812 | "url": "https://opencollective.com/webpack" 2813 | }, 2814 | "peerDependencies": { 2815 | "webpack": "^5.1.0" 2816 | }, 2817 | "peerDependenciesMeta": { 2818 | "@swc/core": { 2819 | "optional": true 2820 | }, 2821 | "esbuild": { 2822 | "optional": true 2823 | }, 2824 | "uglify-js": { 2825 | "optional": true 2826 | } 2827 | } 2828 | }, 2829 | "node_modules/tinybench": { 2830 | "version": "2.9.0", 2831 | "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", 2832 | "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", 2833 | "dev": true, 2834 | "license": "MIT" 2835 | }, 2836 | "node_modules/tinyexec": { 2837 | "version": "0.3.2", 2838 | "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", 2839 | "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", 2840 | "dev": true, 2841 | "license": "MIT" 2842 | }, 2843 | "node_modules/tinyglobby": { 2844 | "version": "0.2.14", 2845 | "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", 2846 | "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", 2847 | "dev": true, 2848 | "license": "MIT", 2849 | "dependencies": { 2850 | "fdir": "^6.4.4", 2851 | "picomatch": "^4.0.2" 2852 | }, 2853 | "engines": { 2854 | "node": ">=12.0.0" 2855 | }, 2856 | "funding": { 2857 | "url": "https://github.com/sponsors/SuperchupuDev" 2858 | } 2859 | }, 2860 | "node_modules/tinypool": { 2861 | "version": "1.1.0", 2862 | "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.0.tgz", 2863 | "integrity": "sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==", 2864 | "dev": true, 2865 | "license": "MIT", 2866 | "engines": { 2867 | "node": "^18.0.0 || >=20.0.0" 2868 | } 2869 | }, 2870 | "node_modules/tinyrainbow": { 2871 | "version": "2.0.0", 2872 | "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", 2873 | "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", 2874 | "dev": true, 2875 | "license": "MIT", 2876 | "engines": { 2877 | "node": ">=14.0.0" 2878 | } 2879 | }, 2880 | "node_modules/tinyspy": { 2881 | "version": "4.0.3", 2882 | "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", 2883 | "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", 2884 | "dev": true, 2885 | "license": "MIT", 2886 | "engines": { 2887 | "node": ">=14.0.0" 2888 | } 2889 | }, 2890 | "node_modules/to-regex-range": { 2891 | "version": "5.0.1", 2892 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2893 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2894 | "license": "MIT", 2895 | "dependencies": { 2896 | "is-number": "^7.0.0" 2897 | }, 2898 | "engines": { 2899 | "node": ">=8.0" 2900 | } 2901 | }, 2902 | "node_modules/ts-loader": { 2903 | "version": "9.5.2", 2904 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", 2905 | "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", 2906 | "dev": true, 2907 | "dependencies": { 2908 | "chalk": "^4.1.0", 2909 | "enhanced-resolve": "^5.0.0", 2910 | "micromatch": "^4.0.0", 2911 | "semver": "^7.3.4", 2912 | "source-map": "^0.7.4" 2913 | }, 2914 | "engines": { 2915 | "node": ">=12.0.0" 2916 | }, 2917 | "peerDependencies": { 2918 | "typescript": "*", 2919 | "webpack": "^5.0.0" 2920 | } 2921 | }, 2922 | "node_modules/ts-morph": { 2923 | "version": "26.0.0", 2924 | "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-26.0.0.tgz", 2925 | "integrity": "sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==", 2926 | "license": "MIT", 2927 | "dependencies": { 2928 | "@ts-morph/common": "~0.27.0", 2929 | "code-block-writer": "^13.0.3" 2930 | } 2931 | }, 2932 | "node_modules/typescript": { 2933 | "version": "5.8.3", 2934 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", 2935 | "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", 2936 | "dev": true, 2937 | "license": "Apache-2.0", 2938 | "bin": { 2939 | "tsc": "bin/tsc", 2940 | "tsserver": "bin/tsserver" 2941 | }, 2942 | "engines": { 2943 | "node": ">=14.17" 2944 | } 2945 | }, 2946 | "node_modules/undici-types": { 2947 | "version": "6.21.0", 2948 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", 2949 | "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", 2950 | "dev": true, 2951 | "license": "MIT" 2952 | }, 2953 | "node_modules/update-browserslist-db": { 2954 | "version": "1.1.1", 2955 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", 2956 | "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", 2957 | "dev": true, 2958 | "funding": [ 2959 | { 2960 | "type": "opencollective", 2961 | "url": "https://opencollective.com/browserslist" 2962 | }, 2963 | { 2964 | "type": "tidelift", 2965 | "url": "https://tidelift.com/funding/github/npm/browserslist" 2966 | }, 2967 | { 2968 | "type": "github", 2969 | "url": "https://github.com/sponsors/ai" 2970 | } 2971 | ], 2972 | "license": "MIT", 2973 | "dependencies": { 2974 | "escalade": "^3.2.0", 2975 | "picocolors": "^1.1.0" 2976 | }, 2977 | "bin": { 2978 | "update-browserslist-db": "cli.js" 2979 | }, 2980 | "peerDependencies": { 2981 | "browserslist": ">= 4.21.0" 2982 | } 2983 | }, 2984 | "node_modules/vite": { 2985 | "version": "6.3.5", 2986 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", 2987 | "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", 2988 | "dev": true, 2989 | "license": "MIT", 2990 | "dependencies": { 2991 | "esbuild": "^0.25.0", 2992 | "fdir": "^6.4.4", 2993 | "picomatch": "^4.0.2", 2994 | "postcss": "^8.5.3", 2995 | "rollup": "^4.34.9", 2996 | "tinyglobby": "^0.2.13" 2997 | }, 2998 | "bin": { 2999 | "vite": "bin/vite.js" 3000 | }, 3001 | "engines": { 3002 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 3003 | }, 3004 | "funding": { 3005 | "url": "https://github.com/vitejs/vite?sponsor=1" 3006 | }, 3007 | "optionalDependencies": { 3008 | "fsevents": "~2.3.3" 3009 | }, 3010 | "peerDependencies": { 3011 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 3012 | "jiti": ">=1.21.0", 3013 | "less": "*", 3014 | "lightningcss": "^1.21.0", 3015 | "sass": "*", 3016 | "sass-embedded": "*", 3017 | "stylus": "*", 3018 | "sugarss": "*", 3019 | "terser": "^5.16.0", 3020 | "tsx": "^4.8.1", 3021 | "yaml": "^2.4.2" 3022 | }, 3023 | "peerDependenciesMeta": { 3024 | "@types/node": { 3025 | "optional": true 3026 | }, 3027 | "jiti": { 3028 | "optional": true 3029 | }, 3030 | "less": { 3031 | "optional": true 3032 | }, 3033 | "lightningcss": { 3034 | "optional": true 3035 | }, 3036 | "sass": { 3037 | "optional": true 3038 | }, 3039 | "sass-embedded": { 3040 | "optional": true 3041 | }, 3042 | "stylus": { 3043 | "optional": true 3044 | }, 3045 | "sugarss": { 3046 | "optional": true 3047 | }, 3048 | "terser": { 3049 | "optional": true 3050 | }, 3051 | "tsx": { 3052 | "optional": true 3053 | }, 3054 | "yaml": { 3055 | "optional": true 3056 | } 3057 | } 3058 | }, 3059 | "node_modules/vite-node": { 3060 | "version": "3.2.3", 3061 | "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.3.tgz", 3062 | "integrity": "sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==", 3063 | "dev": true, 3064 | "license": "MIT", 3065 | "dependencies": { 3066 | "cac": "^6.7.14", 3067 | "debug": "^4.4.1", 3068 | "es-module-lexer": "^1.7.0", 3069 | "pathe": "^2.0.3", 3070 | "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" 3071 | }, 3072 | "bin": { 3073 | "vite-node": "vite-node.mjs" 3074 | }, 3075 | "engines": { 3076 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 3077 | }, 3078 | "funding": { 3079 | "url": "https://opencollective.com/vitest" 3080 | } 3081 | }, 3082 | "node_modules/vitest": { 3083 | "version": "3.2.3", 3084 | "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.3.tgz", 3085 | "integrity": "sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==", 3086 | "dev": true, 3087 | "license": "MIT", 3088 | "dependencies": { 3089 | "@types/chai": "^5.2.2", 3090 | "@vitest/expect": "3.2.3", 3091 | "@vitest/mocker": "3.2.3", 3092 | "@vitest/pretty-format": "^3.2.3", 3093 | "@vitest/runner": "3.2.3", 3094 | "@vitest/snapshot": "3.2.3", 3095 | "@vitest/spy": "3.2.3", 3096 | "@vitest/utils": "3.2.3", 3097 | "chai": "^5.2.0", 3098 | "debug": "^4.4.1", 3099 | "expect-type": "^1.2.1", 3100 | "magic-string": "^0.30.17", 3101 | "pathe": "^2.0.3", 3102 | "picomatch": "^4.0.2", 3103 | "std-env": "^3.9.0", 3104 | "tinybench": "^2.9.0", 3105 | "tinyexec": "^0.3.2", 3106 | "tinyglobby": "^0.2.14", 3107 | "tinypool": "^1.1.0", 3108 | "tinyrainbow": "^2.0.0", 3109 | "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", 3110 | "vite-node": "3.2.3", 3111 | "why-is-node-running": "^2.3.0" 3112 | }, 3113 | "bin": { 3114 | "vitest": "vitest.mjs" 3115 | }, 3116 | "engines": { 3117 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 3118 | }, 3119 | "funding": { 3120 | "url": "https://opencollective.com/vitest" 3121 | }, 3122 | "peerDependencies": { 3123 | "@edge-runtime/vm": "*", 3124 | "@types/debug": "^4.1.12", 3125 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 3126 | "@vitest/browser": "3.2.3", 3127 | "@vitest/ui": "3.2.3", 3128 | "happy-dom": "*", 3129 | "jsdom": "*" 3130 | }, 3131 | "peerDependenciesMeta": { 3132 | "@edge-runtime/vm": { 3133 | "optional": true 3134 | }, 3135 | "@types/debug": { 3136 | "optional": true 3137 | }, 3138 | "@types/node": { 3139 | "optional": true 3140 | }, 3141 | "@vitest/browser": { 3142 | "optional": true 3143 | }, 3144 | "@vitest/ui": { 3145 | "optional": true 3146 | }, 3147 | "happy-dom": { 3148 | "optional": true 3149 | }, 3150 | "jsdom": { 3151 | "optional": true 3152 | } 3153 | } 3154 | }, 3155 | "node_modules/watchpack": { 3156 | "version": "2.4.2", 3157 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", 3158 | "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", 3159 | "dev": true, 3160 | "license": "MIT", 3161 | "dependencies": { 3162 | "glob-to-regexp": "^0.4.1", 3163 | "graceful-fs": "^4.1.2" 3164 | }, 3165 | "engines": { 3166 | "node": ">=10.13.0" 3167 | } 3168 | }, 3169 | "node_modules/webpack": { 3170 | "version": "5.99.9", 3171 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz", 3172 | "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==", 3173 | "dev": true, 3174 | "license": "MIT", 3175 | "dependencies": { 3176 | "@types/eslint-scope": "^3.7.7", 3177 | "@types/estree": "^1.0.6", 3178 | "@types/json-schema": "^7.0.15", 3179 | "@webassemblyjs/ast": "^1.14.1", 3180 | "@webassemblyjs/wasm-edit": "^1.14.1", 3181 | "@webassemblyjs/wasm-parser": "^1.14.1", 3182 | "acorn": "^8.14.0", 3183 | "browserslist": "^4.24.0", 3184 | "chrome-trace-event": "^1.0.2", 3185 | "enhanced-resolve": "^5.17.1", 3186 | "es-module-lexer": "^1.2.1", 3187 | "eslint-scope": "5.1.1", 3188 | "events": "^3.2.0", 3189 | "glob-to-regexp": "^0.4.1", 3190 | "graceful-fs": "^4.2.11", 3191 | "json-parse-even-better-errors": "^2.3.1", 3192 | "loader-runner": "^4.2.0", 3193 | "mime-types": "^2.1.27", 3194 | "neo-async": "^2.6.2", 3195 | "schema-utils": "^4.3.2", 3196 | "tapable": "^2.1.1", 3197 | "terser-webpack-plugin": "^5.3.11", 3198 | "watchpack": "^2.4.1", 3199 | "webpack-sources": "^3.2.3" 3200 | }, 3201 | "bin": { 3202 | "webpack": "bin/webpack.js" 3203 | }, 3204 | "engines": { 3205 | "node": ">=10.13.0" 3206 | }, 3207 | "funding": { 3208 | "type": "opencollective", 3209 | "url": "https://opencollective.com/webpack" 3210 | }, 3211 | "peerDependenciesMeta": { 3212 | "webpack-cli": { 3213 | "optional": true 3214 | } 3215 | } 3216 | }, 3217 | "node_modules/webpack-cli": { 3218 | "version": "6.0.1", 3219 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", 3220 | "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", 3221 | "dev": true, 3222 | "dependencies": { 3223 | "@discoveryjs/json-ext": "^0.6.1", 3224 | "@webpack-cli/configtest": "^3.0.1", 3225 | "@webpack-cli/info": "^3.0.1", 3226 | "@webpack-cli/serve": "^3.0.1", 3227 | "colorette": "^2.0.14", 3228 | "commander": "^12.1.0", 3229 | "cross-spawn": "^7.0.3", 3230 | "envinfo": "^7.14.0", 3231 | "fastest-levenshtein": "^1.0.12", 3232 | "import-local": "^3.0.2", 3233 | "interpret": "^3.1.1", 3234 | "rechoir": "^0.8.0", 3235 | "webpack-merge": "^6.0.1" 3236 | }, 3237 | "bin": { 3238 | "webpack-cli": "bin/cli.js" 3239 | }, 3240 | "engines": { 3241 | "node": ">=18.12.0" 3242 | }, 3243 | "funding": { 3244 | "type": "opencollective", 3245 | "url": "https://opencollective.com/webpack" 3246 | }, 3247 | "peerDependencies": { 3248 | "webpack": "^5.82.0" 3249 | }, 3250 | "peerDependenciesMeta": { 3251 | "webpack-bundle-analyzer": { 3252 | "optional": true 3253 | }, 3254 | "webpack-dev-server": { 3255 | "optional": true 3256 | } 3257 | } 3258 | }, 3259 | "node_modules/webpack-cli/node_modules/commander": { 3260 | "version": "12.1.0", 3261 | "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", 3262 | "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", 3263 | "dev": true, 3264 | "engines": { 3265 | "node": ">=18" 3266 | } 3267 | }, 3268 | "node_modules/webpack-merge": { 3269 | "version": "6.0.1", 3270 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", 3271 | "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", 3272 | "dev": true, 3273 | "dependencies": { 3274 | "clone-deep": "^4.0.1", 3275 | "flat": "^5.0.2", 3276 | "wildcard": "^2.0.1" 3277 | }, 3278 | "engines": { 3279 | "node": ">=18.0.0" 3280 | } 3281 | }, 3282 | "node_modules/webpack-sources": { 3283 | "version": "3.2.3", 3284 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", 3285 | "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", 3286 | "dev": true, 3287 | "license": "MIT", 3288 | "engines": { 3289 | "node": ">=10.13.0" 3290 | } 3291 | }, 3292 | "node_modules/which": { 3293 | "version": "2.0.2", 3294 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3295 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3296 | "dev": true, 3297 | "license": "ISC", 3298 | "dependencies": { 3299 | "isexe": "^2.0.0" 3300 | }, 3301 | "bin": { 3302 | "node-which": "bin/node-which" 3303 | }, 3304 | "engines": { 3305 | "node": ">= 8" 3306 | } 3307 | }, 3308 | "node_modules/why-is-node-running": { 3309 | "version": "2.3.0", 3310 | "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", 3311 | "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", 3312 | "dev": true, 3313 | "license": "MIT", 3314 | "dependencies": { 3315 | "siginfo": "^2.0.0", 3316 | "stackback": "0.0.2" 3317 | }, 3318 | "bin": { 3319 | "why-is-node-running": "cli.js" 3320 | }, 3321 | "engines": { 3322 | "node": ">=8" 3323 | } 3324 | }, 3325 | "node_modules/wildcard": { 3326 | "version": "2.0.1", 3327 | "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", 3328 | "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", 3329 | "dev": true 3330 | } 3331 | } 3332 | } 3333 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ts-runtime-picker", 3 | "version": "2.1.2", 4 | "main": "dist/index.js", 5 | "exports": { 6 | ".": { 7 | "types": "./dist/index.d.ts", 8 | "import": "./dist/index.mjs", 9 | "require": "./dist/index.js" 10 | }, 11 | "./webpack-loader": { 12 | "types": "./dist/webpack-loader.d.ts", 13 | "import": "./dist/webpack-loader.mjs", 14 | "require": "./dist/webpack-loader.js" 15 | }, 16 | "./vite-plugin": { 17 | "types": "./dist/vite-plugin.d.ts", 18 | "import": "./dist/vite-plugin.mjs", 19 | "require": "./dist/vite-plugin.js" 20 | } 21 | }, 22 | "scripts": { 23 | "build": "vite build && node add-banner.js", 24 | "test": "vitest run", 25 | "test:watch": "vitest" 26 | }, 27 | "keywords": [ 28 | "typescript", 29 | "runtime", 30 | "picker", 31 | "babel", 32 | "vite" 33 | ], 34 | "author": "HichemTab-tech", 35 | "license": "MIT", 36 | "description": "A package to dynamically create pickers based on TypeScript interfaces.", 37 | "dependencies": { 38 | "ts-morph": "^26.0.0" 39 | }, 40 | "devDependencies": { 41 | "@types/node": "^22.10.2", 42 | "ts-loader": "^9.5.1", 43 | "typescript": "^5.0.0", 44 | "vite": "^6.0.3", 45 | "vitest": "^3.1.4", 46 | "webpack": "^5.97.1", 47 | "webpack-cli": "^6.0.1" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Creates a function that picks and returns a subset of properties from an object of type `T`. 3 | * The returned partial object includes only the specified fields defined in `T`. 4 | * 5 | * The `createPicker` function is designed to be used alongside the `ts-runtime-picker` plugin, 6 | * which transforms this placeholder function during the build process. 7 | * It acts as a utility for 8 | * narrowing down object properties at runtime based on static typing. 9 | * 10 | * @return A function that takes an object and returns a partial object containing selected properties. 11 | */ 12 | export function createPicker(): (obj: Record) => Partial { 13 | throw new Error( 14 | "createPicker is a placeholder. Use the ts-runtime-picker plugin to transform it during build." 15 | ); 16 | } 17 | 18 | /** 19 | * Creates a function that picks and returns all properties from an object of type `T`. 20 | * This function is similar to `createPicker`, but it does not filter out any properties, 21 | * returning the full object as is. 22 | * 23 | * The `createFullPicker` function is designed to be used alongside the `ts-runtime-picker` plugin, 24 | * which transforms this placeholder function during the build process. 25 | * It acts as a utility for 26 | * retrieving the complete object properties at runtime based on static typing. 27 | * 28 | * @return A function that takes an object and returns the full object of type `T`. 29 | */ 30 | export function createFullPicker(): (obj: Record) => T { 31 | throw new Error( 32 | "createFullPicker is a placeholder. Use the ts-runtime-picker plugin to transform it during build." 33 | ); 34 | } -------------------------------------------------------------------------------- /src/ts-transformer.ts: -------------------------------------------------------------------------------- 1 | import { Project, SyntaxKind } from "ts-morph"; 2 | 3 | export function transform(code: string, filePath: string): string { 4 | const project = new Project({ 5 | // make sure you’ve configured TS so it can see your other files (tsconfig.json, etc.) 6 | // otherwise type‐resolution won’t work across files 7 | tsConfigFilePath: "tsconfig.json", 8 | }); 9 | 10 | // Load the file if it exists, otherwise create a new one 11 | const sourceFile = project.addSourceFileAtPathIfExists(filePath) 12 | || project.createSourceFile(filePath, code, { overwrite: true }); 13 | 14 | // Figure out what the “createPicker” import is called (alias or direct) 15 | let createPickerAlias: string | null = null; 16 | for (const importDecl of sourceFile.getImportDeclarations()) { 17 | if (importDecl.getModuleSpecifierValue() === "ts-runtime-picker") { 18 | for (const namedImport of importDecl.getNamedImports()) { 19 | const name = namedImport.getName(); 20 | const alias = namedImport.getAliasNode()?.getText() || name; 21 | if (name === "createPicker" || name === "createFullPicker") { 22 | createPickerAlias = alias; 23 | } 24 | } 25 | } 26 | } 27 | if (!createPickerAlias) { 28 | return sourceFile.getFullText(); 29 | } 30 | 31 | project.getTypeChecker(); 32 | // Walk all call expressions 33 | for (const call of sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression)) { 34 | const exprText = call.getExpression().getText(); 35 | if (exprText === createPickerAlias && call.getTypeArguments().length > 0) { 36 | const typeArg = call.getTypeArguments()[0]; 37 | 38 | // Instead of sourceFile.getInterface(typeName), ask the checker: 39 | // getTypeFromTypeNode knows how to follow imports/aliases 40 | const pickedType = typeArg.getType(); 41 | 42 | if (!pickedType) { 43 | throw new Error(`Couldn’t resolve type for ${typeArg.getText()}`); 44 | } 45 | 46 | // Now grab every property (including inherited ones) from that type 47 | const props = pickedType.getProperties().map(p => `"${p.getName()}"`); 48 | 49 | // Replace the call with a runtime picker that uses those keys 50 | call.replaceWithText(`(_obj: any) => { 51 | const _keys: string[] = [${props.join(",")}]; 52 | return _keys.reduce((_acc: {[k: string]: any}, _key: string) => { 53 | if (_key in _obj) _acc[_key] = _obj[_key]; 54 | return _acc; 55 | }, {}); 56 | }`); 57 | } 58 | } 59 | 60 | return sourceFile.getFullText(); 61 | } -------------------------------------------------------------------------------- /src/vite-plugin.ts: -------------------------------------------------------------------------------- 1 | import { PluginOption } from "vite"; 2 | import { transform } from "./ts-transformer.js"; 3 | 4 | // noinspection JSUnusedGlobalSymbols 5 | /** 6 | * A function that provides a Vite plugin for transforming TypeScript files at runtime. 7 | * The plugin is named "vite-plugin-ts-runtime-picker" and it is enforced to run at the 'pre' stage. 8 | * The transform process specifically handles files with `.ts` and `.tsx` extensions. 9 | * The transformation process logs the file being transformed and applies a custom transformation 10 | * function to the code. 11 | * Source maps are excluded in the output for simplicity. 12 | * 13 | * @returns {PluginOption} A Vite plugin configuration object for handling TypeScript runtime transformations. 14 | */ 15 | export default function TsRuntimePickerVitePlugin(): PluginOption { 16 | return { 17 | name: "vite-plugin-ts-runtime-picker", 18 | enforce: "pre", 19 | transform(code, id) { 20 | if (id.endsWith(".ts") || id.endsWith(".tsx")) { 21 | console.log(`Transforming ${id}`); 22 | return { 23 | code: transform(code, id), 24 | map: null, // Skip source maps for simplicity 25 | }; 26 | } 27 | 28 | return null; 29 | }, 30 | } as PluginOption; 31 | } 32 | 33 | export { TsRuntimePickerVitePlugin }; 34 | -------------------------------------------------------------------------------- /src/webpack-loader.ts: -------------------------------------------------------------------------------- 1 | import { LoaderContext } from 'webpack'; 2 | import { transform } from './ts-transformer'; 3 | 4 | /** 5 | * A Webpack loader function that transforms TypeScript files at runtime. 6 | * 7 | * @param {string} source - The original source code of the file being loaded. 8 | * @param {any} map - The source map associated with the input source, if any. 9 | */ 10 | const TsRuntimePickerWebpackLoader = function (this: LoaderContext, source: string, map: any){ 11 | const filePath = this.resourcePath; // The file being processed 12 | const callback = this.async(); // Asynchronous processing 13 | if (filePath.endsWith(".ts") || filePath.endsWith(".tsx")) { 14 | try { 15 | const transformedCode = transform(source, filePath); 16 | 17 | callback(null, transformedCode, map); 18 | } catch (err: any) { 19 | callback(err); 20 | } 21 | } 22 | } 23 | 24 | export default TsRuntimePickerWebpackLoader; -------------------------------------------------------------------------------- /test/index.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | import { createPicker, createFullPicker } from '../src'; 3 | 4 | describe('index', () => { 5 | describe('createPicker', () => { 6 | it('should throw an error when called directly', () => { 7 | expect(() => { 8 | createPicker<{ name: string }>()({}); 9 | }).toThrow('createPicker is a placeholder. Use the ts-runtime-picker plugin to transform it during build.'); 10 | }); 11 | }); 12 | 13 | describe('createFullPicker', () => { 14 | it('should throw an error when called directly', () => { 15 | expect(() => { 16 | createFullPicker<{ name: string }>()({}); 17 | }).toThrow('createFullPicker is a placeholder. Use the ts-runtime-picker plugin to transform it during build.'); 18 | }); 19 | }); 20 | }); -------------------------------------------------------------------------------- /test/integration.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | import { transform } from '../src/ts-transformer'; 3 | 4 | describe('Integration', () => { 5 | it('should transform createPicker to pick only specified properties', () => { 6 | // noinspection NpmUsedModulesInstalled,JSUnresolvedReference,UnnecessaryLabelJS,BadExpressionStatementJS,JSValidateTypes,JSUnusedLocalSymbols 7 | const code = ` 8 | // noinspection JSAnnotator 9 | 10 | import { createPicker } from "ts-runtime-picker"; 11 | 12 | interface User { 13 | firstName: string; 14 | lastName: string; 15 | email: string; 16 | password: string; 17 | } 18 | 19 | const picker = createPicker(); 20 | 21 | const user = { 22 | firstName: "John", 23 | lastName: "Doe", 24 | email: "john.doe@example.com", 25 | password: "secret", 26 | extraData: "will be removed" 27 | }; 28 | 29 | const result = picker(user); 30 | `; 31 | 32 | const filePath = 'test-file.ts'; 33 | const transformedCode = transform(code, filePath); 34 | 35 | // Verify the transformation 36 | expect(transformedCode).toContain('const _keys: string[] = ["firstName","lastName","email","password"]'); 37 | expect(transformedCode).not.toContain('createPicker()'); 38 | 39 | // Instead of executing the code (which would fail due to import statements), 40 | // we'll verify the structure of the transformed code 41 | 42 | // Check that the picker function is correctly transformed 43 | expect(transformedCode).toContain('const picker = (_obj: any) => {'); 44 | expect(transformedCode).toContain('const _keys: string[] = ["firstName","lastName","email","password"]'); 45 | expect(transformedCode).toContain('return _keys.reduce((_acc: {[k: string]: any}, _key: string) => {'); 46 | expect(transformedCode).toContain('if (_key in _obj) _acc[_key] = _obj[_key];'); 47 | expect(transformedCode).toContain('return _acc;'); 48 | expect(transformedCode).toContain('}, {});'); 49 | }); 50 | 51 | it('should transform createFullPicker to pick all properties', () => { 52 | // noinspection NpmUsedModulesInstalled,JSUnresolvedReference,UnnecessaryLabelJS,BadExpressionStatementJS,JSValidateTypes,JSUnusedLocalSymbols 53 | const code = ` 54 | // noinspection JSAnnotator 55 | 56 | import { createFullPicker } from "ts-runtime-picker"; 57 | 58 | interface User { 59 | firstName: string; 60 | lastName: string; 61 | } 62 | 63 | const picker = createFullPicker(); 64 | 65 | const user = { 66 | firstName: "John", 67 | lastName: "Doe", 68 | extraData: "will be removed" 69 | }; 70 | 71 | const result = picker(user); 72 | `; 73 | 74 | const filePath = 'test-file.ts'; 75 | const transformedCode = transform(code, filePath); 76 | 77 | // Verify the transformation 78 | expect(transformedCode).toContain('const _keys: string[] = ["firstName","lastName"]'); 79 | expect(transformedCode).not.toContain('createFullPicker()'); 80 | 81 | // Instead of executing the code (which would fail due to import statements), 82 | // we'll verify the structure of the transformed code 83 | 84 | // Check that the picker function is correctly transformed 85 | expect(transformedCode).toContain('const picker = (_obj: any) => {'); 86 | expect(transformedCode).toContain('const _keys: string[] = ["firstName","lastName"]'); 87 | expect(transformedCode).toContain('return _keys.reduce((_acc: {[k: string]: any}, _key: string) => {'); 88 | expect(transformedCode).toContain('if (_key in _obj) _acc[_key] = _obj[_key];'); 89 | expect(transformedCode).toContain('return _acc;'); 90 | expect(transformedCode).toContain('}, {});'); 91 | }); 92 | }); 93 | -------------------------------------------------------------------------------- /test/ts-transformer.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | import { transform } from '../src/ts-transformer'; 3 | 4 | describe('ts-transformer', () => { 5 | it('should transform createPicker calls', () => { 6 | const code = ` 7 | import { createPicker } from "ts-runtime-picker"; 8 | 9 | interface User { 10 | firstName: string; 11 | lastName: string; 12 | email: string; 13 | } 14 | 15 | const picker = createPicker(); 16 | `; 17 | 18 | const filePath = 'test-file.ts'; 19 | const result = transform(code, filePath); 20 | 21 | // The transformed code should contain the runtime implementation 22 | expect(result).toContain('const picker = (_obj: any) => {'); 23 | expect(result).toContain('const _keys: string[] = ["firstName","lastName","email"]'); 24 | expect(result).toContain('if (_key in _obj) _acc[_key] = _obj[_key];'); 25 | }); 26 | 27 | it('should handle aliased imports', () => { 28 | const code = ` 29 | import { createPicker as cp } from "ts-runtime-picker"; 30 | 31 | interface User { 32 | firstName: string; 33 | lastName: string; 34 | } 35 | 36 | const picker = cp(); 37 | `; 38 | 39 | const filePath = 'test-file.ts'; 40 | const result = transform(code, filePath); 41 | 42 | // The transformed code should contain the runtime implementation 43 | expect(result).toContain('const picker = (_obj: any) => {'); 44 | expect(result).toContain('const _keys: string[] = ["firstName","lastName"]'); 45 | }); 46 | 47 | it('should not transform code without createPicker imports', () => { 48 | const code = ` 49 | interface User { 50 | firstName: string; 51 | lastName: string; 52 | } 53 | 54 | const picker = someOtherFunction(); 55 | `; 56 | 57 | const filePath = 'test-file.ts'; 58 | const result = transform(code, filePath); 59 | 60 | // The code should remain unchanged 61 | expect(result).toBe(code); 62 | }); 63 | 64 | it('should transform createFullPicker calls', () => { 65 | const code = ` 66 | import { createFullPicker } from "ts-runtime-picker"; 67 | 68 | interface User { 69 | firstName: string; 70 | lastName: string; 71 | email: string; 72 | } 73 | 74 | const picker = createFullPicker(); 75 | `; 76 | 77 | const filePath = 'test-file.ts'; 78 | const result = transform(code, filePath); 79 | 80 | // The transformed code should contain the runtime implementation 81 | expect(result).toContain('const picker = (_obj: any) => {'); 82 | expect(result).toContain('const _keys: string[] = ["firstName","lastName","email"]'); 83 | expect(result).toContain('if (_key in _obj) _acc[_key] = _obj[_key];'); 84 | }); 85 | }); 86 | -------------------------------------------------------------------------------- /test/vite-plugin.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect, vi, beforeEach } from 'vitest'; 2 | import { TsRuntimePickerVitePlugin } from '../src/vite-plugin'; 3 | import * as transformer from '../src/ts-transformer'; 4 | 5 | // Mock the transform function 6 | vi.mock('../src/ts-transformer', () => ({ 7 | transform: vi.fn((code) => `transformed: ${code}`) 8 | })); 9 | 10 | beforeEach(() => { 11 | vi.clearAllMocks(); 12 | }); 13 | 14 | describe('TsRuntimePickerVitePlugin', () => { 15 | it('should create a Vite plugin with the correct configuration', () => { 16 | const plugin = TsRuntimePickerVitePlugin(); 17 | 18 | // @ts-ignore 19 | expect(plugin.name).toBe('vite-plugin-ts-runtime-picker'); 20 | // @ts-ignore 21 | expect(plugin.enforce).toBe('pre'); 22 | // @ts-ignore 23 | expect(typeof plugin.transform).toBe('function'); 24 | }); 25 | 26 | it('should transform TypeScript files', () => { 27 | const plugin = TsRuntimePickerVitePlugin(); 28 | const code = 'const x = 1;'; 29 | const id = 'file.ts'; 30 | 31 | // @ts-ignore 32 | const result = plugin.transform(code, id); 33 | 34 | expect(transformer.transform).toHaveBeenCalledWith(code, id); 35 | expect(result).toEqual({ 36 | code: `transformed: ${code}`, 37 | map: null 38 | }); 39 | }); 40 | 41 | it('should transform TypeScript JSX files', () => { 42 | const plugin = TsRuntimePickerVitePlugin(); 43 | const code = 'const x =
;'; 44 | const id = 'file.tsx'; 45 | 46 | // @ts-ignore 47 | const result = plugin.transform(code, id); 48 | 49 | expect(transformer.transform).toHaveBeenCalledWith(code, id); 50 | expect(result).toEqual({ 51 | code: `transformed: ${code}`, 52 | map: null 53 | }); 54 | }); 55 | 56 | it('should not transform non-TypeScript files', () => { 57 | const plugin = TsRuntimePickerVitePlugin(); 58 | const code = 'const x = 1;'; 59 | const id = 'file.js'; 60 | 61 | // @ts-ignore 62 | const result = plugin.transform(code, id); 63 | 64 | expect(transformer.transform).not.toHaveBeenCalled(); 65 | expect(result).toBeNull(); 66 | }); 67 | }); 68 | -------------------------------------------------------------------------------- /test/webpack-loader.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect, vi, beforeEach } from 'vitest'; 2 | import TsRuntimePickerWebpackLoader from '../src/webpack-loader'; 3 | import * as transformer from '../src/ts-transformer'; 4 | 5 | // Mock the transform function 6 | vi.mock('../src/ts-transformer', () => ({ 7 | transform: vi.fn((code) => `transformed: ${code}`) 8 | })); 9 | 10 | describe('TsRuntimePickerWebpackLoader', () => { 11 | let loaderContext: any; 12 | let callback: any; 13 | 14 | beforeEach(() => { 15 | // Reset mocks 16 | vi.clearAllMocks(); 17 | 18 | // Create a mock loader context 19 | callback = vi.fn(); 20 | // noinspection JSUnusedGlobalSymbols 21 | loaderContext = { 22 | resourcePath: 'file.ts', 23 | async: () => callback 24 | }; 25 | }); 26 | 27 | it('should transform TypeScript files', () => { 28 | const source = 'const x = 1;'; 29 | const map = { version: 3, sources: [], mappings: '' }; 30 | 31 | TsRuntimePickerWebpackLoader.call(loaderContext, source, map); 32 | 33 | expect(transformer.transform).toHaveBeenCalledWith(source, 'file.ts'); 34 | expect(callback).toHaveBeenCalledWith(null, `transformed: ${source}`, map); 35 | }); 36 | 37 | it('should transform TypeScript JSX files', () => { 38 | loaderContext.resourcePath = 'file.tsx'; 39 | const source = 'const x =
;'; 40 | const map = { version: 3, sources: [], mappings: '' }; 41 | 42 | TsRuntimePickerWebpackLoader.call(loaderContext, source, map); 43 | 44 | expect(transformer.transform).toHaveBeenCalledWith(source, 'file.tsx'); 45 | expect(callback).toHaveBeenCalledWith(null, `transformed: ${source}`, map); 46 | }); 47 | 48 | it('should handle errors during transformation', () => { 49 | const error = new Error('Transformation error'); 50 | (transformer.transform as any).mockImplementationOnce(() => { 51 | throw error; 52 | }); 53 | 54 | const source = 'const x = 1;'; 55 | const map = { version: 3, sources: [], mappings: '' }; 56 | 57 | TsRuntimePickerWebpackLoader.call(loaderContext, source, map); 58 | 59 | expect(transformer.transform).toHaveBeenCalledWith(source, 'file.ts'); 60 | expect(callback).toHaveBeenCalledWith(error); 61 | }); 62 | 63 | it('should not transform non-TypeScript files', () => { 64 | loaderContext.resourcePath = 'file.js'; 65 | const source = 'const x = 1;'; 66 | const map = { version: 3, sources: [], mappings: '' }; 67 | 68 | TsRuntimePickerWebpackLoader.call(loaderContext, source, map); 69 | 70 | expect(transformer.transform).not.toHaveBeenCalled(); 71 | // The callback should not be called for non-TypeScript files 72 | expect(callback).not.toHaveBeenCalled(); 73 | }); 74 | }); -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", // Use the latest JavaScript features 4 | "module": "ESNext", // Use ESNext modules 5 | "moduleResolution": "Node", // Resolve modules using Node.js rules 6 | "lib": ["ESNext", "DOM"], // Include necessary libraries 7 | "outDir": "./dist", // Output directory 8 | "strict": true, // Enable strict type checking 9 | "esModuleInterop": true, // Allow interop with CommonJS modules 10 | "declaration": true, // Generate type definitions 11 | "skipLibCheck": true // Skip checking type definitions of node_modules 12 | }, 13 | "include": ["src/**/*"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import { resolve } from 'path'; 3 | import { configDefaults } from 'vitest/config'; 4 | 5 | // noinspection JSUnusedGlobalSymbols 6 | export default defineConfig({ 7 | test: { 8 | globals: true, 9 | environment: 'node', 10 | include: ['**/*.{test,spec}.{js,ts}'], 11 | exclude: [...configDefaults.exclude, 'dist/**'] 12 | }, 13 | build: { 14 | lib: { 15 | // Define multiple entry points 16 | entry: { 17 | 'index': resolve(__dirname, 'src/index.ts'), 18 | 'vite-plugin': resolve(__dirname, 'src/vite-plugin.ts'), 19 | 'webpack-loader': resolve(__dirname, 'src/webpack-loader.ts') 20 | }, 21 | formats: ['cjs', 'es'], 22 | fileName: (format, entryName) => `${entryName}.${format === 'es' ? 'mjs' : 'js'}` 23 | }, 24 | outDir: 'dist', 25 | emptyOutDir: true, 26 | sourcemap: false, 27 | // Ensure CommonJS compatibility 28 | rollupOptions: { 29 | external: ['ts-morph', 'webpack', 'vite'], 30 | output: { 31 | exports: 'named', 32 | preserveModules: false, 33 | } 34 | }, 35 | }, 36 | // Ensure TypeScript type declarations are generated 37 | plugins: [ 38 | { 39 | name: 'generate-dts', 40 | closeBundle() { 41 | // We'll still use tsc to generate type declarations 42 | const { execSync } = require('child_process'); 43 | execSync('tsc --emitDeclarationOnly --declaration --outDir dist'); 44 | } 45 | } 46 | ] 47 | }); 48 | --------------------------------------------------------------------------------