From 88aeab8f29b83a7a49cfcaef627549340a5a51e9 Mon Sep 17 00:00:00 2001 From: JonasPfalzgraf <20913954+JosunLP@users.noreply.github.com> Date: Fri, 11 Jul 2025 17:47:22 +0200 Subject: [PATCH] feat: Enhance UserScript structure and functionality - Updated package.json to include new scripts for development, production builds, linting, formatting, and cleaning. - Added ESLint and Prettier for code quality and formatting. - Refactored main application class to extend EventEmitter and manage modules. - Introduced ExampleModule to demonstrate module structure and functionality. - Created utility classes for DOM manipulation, event handling, and persistent storage. - Added TypeScript definitions for UserScript environment. - Improved TypeScript configuration with stricter checks and path aliases. - Updated Vite configuration to handle development and production builds more effectively. - Enhanced user script header generation to support environment-specific configurations. --- .eslintrc.js | 39 + .gitignore | 22 +- .prettierrc.json | 11 + README.md | 207 ++- assets/icon.png | Bin 4812 -> 112212 bytes header.config.json | 51 +- package-lock.json | 3457 +++++++++++++++++++++++++++++++------ package.json | 20 +- src/index.ts | 156 +- src/modules/example.ts | 251 +++ src/types/userscript.d.ts | 99 ++ src/utils/dom.ts | 126 ++ src/utils/events.ts | 78 + src/utils/storage.ts | 61 + tools/userScriptHeader.ts | 19 +- tsconfig.json | 22 +- vite.config.ts | 40 +- 17 files changed, 4064 insertions(+), 595 deletions(-) create mode 100644 .eslintrc.js create mode 100644 .prettierrc.json create mode 100644 src/modules/example.ts create mode 100644 src/types/userscript.d.ts create mode 100644 src/utils/dom.ts create mode 100644 src/utils/events.ts create mode 100644 src/utils/storage.ts diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..c536bf9 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,39 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + extends: ['eslint:recommended'], + parserOptions: { + ecmaVersion: 2020, + sourceType: 'module', + }, + env: { + browser: true, + es6: true, + node: true, + }, + globals: { + // Greasemonkey/Tampermonkey globals + GM_setValue: 'readonly', + GM_getValue: 'readonly', + GM_deleteValue: 'readonly', + GM_listValues: 'readonly', + GM_log: 'readonly', + GM_notification: 'readonly', + GM_openInTab: 'readonly', + GM_registerMenuCommand: 'readonly', + GM_unregisterMenuCommand: 'readonly', + GM_xmlhttpRequest: 'readonly', + GM_info: 'readonly', + unsafeWindow: 'readonly', + }, + rules: { + 'no-console': 'off', + 'no-debugger': 'warn', + 'prefer-const': 'error', + 'no-var': 'error', + 'no-unused-vars': 'off', + 'no-undef': 'off', + }, + ignorePatterns: ['dist/', 'node_modules/', 'tools/**/*.js'], +}; diff --git a/.gitignore b/.gitignore index 663664c..6ef5c16 100644 --- a/.gitignore +++ b/.gitignore @@ -643,5 +643,23 @@ FodyWeavers.xsd # End of https://www.toptal.com/developers/gitignore/api/visualstudio,visualstudiocode,webstorm,intellij,sublimetext -dist -tools/userScriptHeader.js \ No newline at end of file +# Project specific +dist/ +build/ +tools/userScriptHeader.js + +# Dependencies +node_modules/ + +# Environment files +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# TypeScript +*.tsbuildinfo + +# Logs +*.log diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..a7f1a35 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,11 @@ +{ + "semi": true, + "trailingComma": "es5", + "singleQuote": true, + "printWidth": 100, + "tabWidth": 2, + "useTabs": false, + "bracketSpacing": true, + "arrowParens": "avoid", + "endOfLine": "lf" +} diff --git a/README.md b/README.md index f4aae9a..e4dcd8a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,206 @@ -# UserScriptProjectTemplate +# UserScript Project Template -A user script project template to create large and structured TypeScript projects for Tampermonkey or Greasemonkey. It is intended to form a scalable base and is primarily aimed at the Ingress community. +A modern, scalable UserScript project template for building large and structured TypeScript projects for Tampermonkey or Greasemonkey. Originally designed for the Ingress community, but adaptable for any web-based project. + +## โœจ Features + +- ๐Ÿ”ง **Modern TypeScript** with strict type checking +- ๐Ÿš€ **Vite** for fast builds and development +- ๐Ÿ“ฆ **Modular Architecture** with utilities and event system +- ๐ŸŽฏ **Environment-specific** configurations (dev/prod) +- ๐Ÿงน **ESLint + Prettier** for code quality +- ๐Ÿ’พ **Storage utilities** for persistent data +- ๐ŸŽจ **DOM utilities** for easier manipulation +- ๐Ÿ“ก **Event system** for modular communication +- ๐Ÿ”’ **TypeScript definitions** for UserScript APIs + +## ๐Ÿš€ Quick Start + +1. **Clone or use this template:** + + ```bash + git clone https://github.com/JosunLP/UserScriptProjectTemplate.git my-userscript + cd my-userscript + ``` + +2. **Install dependencies:** + + ```bash + npm install + ``` + +3. **Configure your script:** + - Edit `header.config.json` to set your target domains + - Update `package.json` with your script details + +4. **Start development:** + + ```bash + npm run dev + ``` + +5. **Build for production:** + + ```bash + npm run build:prod + ``` + +## ๐Ÿ“ Project Structure + +```bash +src/ +โ”œโ”€โ”€ index.ts # Main application entry point +โ”œโ”€โ”€ types/ # TypeScript definitions +โ”‚ โ””โ”€โ”€ userscript.d.ts +โ”œโ”€โ”€ utils/ # Utility functions +โ”‚ โ”œโ”€โ”€ storage.ts # Persistent storage helpers +โ”‚ โ”œโ”€โ”€ dom.ts # DOM manipulation utilities +โ”‚ โ””โ”€โ”€ events.ts # Event system +โ”œโ”€โ”€ core/ # Core application logic +โ””โ”€โ”€ modules/ # Feature modules +``` + +## ๐Ÿ› ๏ธ Available Scripts + +- `npm run dev` - Build with watch mode for development +- `npm run build` - Build for production +- `npm run build:prod` - Build for production (explicit) +- `npm run lint` - Run ESLint +- `npm run lint:fix` - Fix ESLint issues +- `npm run format` - Format code with Prettier +- `npm run type-check` - Run TypeScript type checking +- `npm run clean` - Clean dist folder + +## โš™๏ธ Configuration + +### Header Configuration + +Edit `header.config.json` to configure your UserScript metadata: + +```json +{ + "environments": { + "development": { + "includes": ["http://localhost:*/*"], + "grants": ["GM_setValue", "GM_getValue", "GM_log"] + }, + "production": { + "includes": ["https://your-domain.com/*"], + "grants": ["GM_setValue", "GM_getValue"] + } + } +} +``` + +### Environment Variables + +The build system automatically detects the environment: + +- `NODE_ENV=development` for development builds +- `NODE_ENV=production` for production builds + +## ๐Ÿงฐ Utilities + +### Storage + +```typescript +import { Storage } from '@/utils/storage'; + +// Store data +Storage.set('key', { some: 'data' }); + +// Retrieve data +const data = Storage.get('key', defaultValue); + +// Check existence +if (Storage.has('key')) { + // Key exists +} +``` + +### DOM Utilities + +```typescript +import { DOMUtils } from '@/utils/dom'; + +// Wait for element +const element = await DOMUtils.waitForElement('.my-selector'); + +// Add styles +DOMUtils.addStyles(` + .my-class { color: red; } +`); + +// Create element +const button = DOMUtils.createElement('button', { + textContent: 'Click me', + onclick: () => console.log('Clicked!') +}); +``` + +### Events + +```typescript +import { EventEmitter } from '@/utils/events'; + +interface MyEvents { + userAction: { userId: string }; + dataLoaded: { count: number }; +} + +const emitter = new EventEmitter(); + +// Listen for events +emitter.on('userAction', ({ userId }) => { + console.log(`User ${userId} performed an action`); +}); + +// Emit events +emitter.emit('userAction', { userId: '123' }); +``` + +## ๐ŸŽฏ Extending the Template + +1. **Add new modules** in `src/modules/` +2. **Register modules** in your main App class +3. **Use the event system** for module communication +4. **Add utilities** in `src/utils/` for reusable functionality + +Example module: + +```typescript +// src/modules/example.ts +import { EventEmitter } from '@/utils/events'; +import { Storage } from '@/utils/storage'; + +export class ExampleModule extends EventEmitter { + initialize() { + console.log('Example module initialized'); + // Your module logic here + } +} +``` + +## ๐Ÿ”ง Development Tips + +- Use `console.log()` freely - it's enabled in UserScripts +- Test in development mode with localhost includes +- Use TypeScript strict mode for better code quality +- Leverage the storage utilities for persistent data +- Use the event system for loose coupling between modules + +## ๐Ÿ“ License + +MIT License - see [LICENSE](LICENSE) file for details. + +## ๐Ÿค Contributing + +1. Fork the repository +2. Create a feature branch +3. Make your changes +4. Run tests and linting +5. Submit a pull request + +## ๐Ÿ’ก Originally for Ingress + +This template was originally designed for the Ingress community but is versatile enough for any web-based UserScript project. The modular architecture makes it easy to build complex scripts while maintaining code quality and organization. diff --git a/assets/icon.png b/assets/icon.png index 4a1fae41866af8b15e0a31fa588cf7af5658a577..751c5ce76a1bef63a87344b45031bccf30dd536a 100644 GIT binary patch literal 112212 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 delta 3560 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 diff --git a/header.config.json b/header.config.json index fdae880..c7dca08 100644 --- a/header.config.json +++ b/header.config.json @@ -3,25 +3,48 @@ "downloadUrl": "", "supportUrl": "", "iconUrl": "./assets/icon.png", - "includes": [ - "https://*.josunlp.de/*", - "https://josunlp.de/*" - ], - "excludes": [], + "environments": { + "development": { + "includes": [ + "http://localhost:*/*", + "https://localhost:*/*", + "https://*.josunlp.de/*", + "https://josunlp.de/*" + ], + "excludes": [], + "grants": [ + "GM_setValue", + "GM_getValue", + "GM_deleteValue", + "GM_listValues", + "GM_log", + "GM_notification", + "GM_registerMenuCommand", + "GM_unregisterMenuCommand" + ] + }, + "production": { + "includes": [ + "https://*.josunlp.de/*", + "https://josunlp.de/*" + ], + "excludes": [], + "grants": [ + "GM_setValue", + "GM_getValue", + "GM_deleteValue", + "GM_listValues", + "GM_registerMenuCommand" + ] + } + }, "requires": [], "resources": [], "connecters": [], - "matches": [ - "https://*.josunlp.de/*", - "https://josunlp.de/*" - ], + "matches": [], "matchAllFrames": false, "runAt": "document-start", - "grants": [ - "GM_setValue", - "GM_getValue" - ], "antifeatures": [], "noframes": false, "unwrap": false -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index 5cd3f58..a8ec9f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,18 @@ "version": "0.0.1", "license": "MIT", "devDependencies": { + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", + "eslint": "^8.57.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.5.1", + "prettier": "^3.6.2", + "rimraf": "^5.0.10", "ts-loader": "^9.3.1", "ts-node": "^10.9.1", - "typescript": "^4.7.4", + "typescript": "^5.4.0", "undici-types": "^6.18.2", - "vite": "^5.2.12", + "vite": "^7.0.4", "vite-tsconfig-paths": "^4.3.2", "webpack": "^5.74.0", "webpack-cli": "^4.10.0" @@ -24,6 +31,7 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -36,397 +44,690 @@ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz", + "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz", + "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz", + "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz", + "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz", + "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz", + "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz", + "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz", + "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz", + "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz", + "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz", + "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz", + "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz", + "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz", + "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz", + "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz", + "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz", + "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", + "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==", "cpu": [ - "x64" + "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz", + "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz", + "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz", + "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", + "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz", + "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz", + "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz", + "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", + "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, "engines": { "node": ">=12" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -437,258 +738,388 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", + "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/source-map/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", + "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", - "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.2.tgz", + "integrity": "sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", - "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.2.tgz", + "integrity": "sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", - "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.2.tgz", + "integrity": "sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", - "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.2.tgz", + "integrity": "sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.2.tgz", + "integrity": "sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.2.tgz", + "integrity": "sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", - "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.2.tgz", + "integrity": "sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", - "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.2.tgz", + "integrity": "sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", - "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.2.tgz", + "integrity": "sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", - "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.2.tgz", + "integrity": "sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.2.tgz", + "integrity": "sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", - "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.2.tgz", + "integrity": "sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", - "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.2.tgz", + "integrity": "sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.2.tgz", + "integrity": "sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", - "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.2.tgz", + "integrity": "sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", - "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.2.tgz", + "integrity": "sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", - "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.2.tgz", + "integrity": "sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", - "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.2.tgz", + "integrity": "sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", - "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.2.tgz", + "integrity": "sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", - "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.2.tgz", + "integrity": "sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -698,31 +1129,36 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -733,181 +1169,401 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "20.13.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.13.0.tgz", - "integrity": "sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==", + "version": "24.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.13.tgz", + "integrity": "sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.8.0" } }, "node_modules/@types/node/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -916,6 +1572,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, + "license": "MIT", "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" @@ -926,6 +1583,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, + "license": "MIT", "dependencies": { "envinfo": "^7.7.3" }, @@ -938,6 +1596,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, + "license": "MIT", "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -951,19 +1610,22 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -971,47 +1633,98 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-phases": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.3.tgz", + "integrity": "sha512-jtKLnfoOzm28PazuQ4dVBcE9Jeo6ha1GAJvq3N0LlNOszmTfx+wSycBehn+FN0RnyeR77IBxN/qVYMw0Rlj0Xw==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, "peerDependencies": { - "acorn": "^8" + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, "peerDependencies": { - "ajv": "^6.9.1" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -1019,6 +1732,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1033,13 +1747,49 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -1048,9 +1798,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "dev": true, "funding": [ { @@ -1066,11 +1816,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -1083,12 +1834,23 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, "node_modules/caniuse-lite": { - "version": "1.0.30001626", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001626.tgz", - "integrity": "sha512-JRW7kAH8PFJzoPCJhLSHgDgKg5348hsQ68aqb+slnzuB5QFERv846oA/mRChmlLAOdEDeOkRn3ynb1gSFnjt3w==", + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", "dev": true, "funding": [ { @@ -1103,13 +1865,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1126,6 +1890,7 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } @@ -1135,6 +1900,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -1149,6 +1915,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1160,31 +1927,43 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1195,12 +1974,13 @@ } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1211,26 +1991,76 @@ } } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { - "version": "1.4.788", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz", - "integrity": "sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==", - "dev": true + "version": "1.5.182", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.182.tgz", + "integrity": "sha512-Lv65Btwv9W4J9pyODI6EWpdnhfvrve/us5h1WspW8B2Fb0366REPtY3hX7ounk1CkV/TBjWCEvCBBbYbmV0qCA==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" }, "node_modules/enhanced-resolve": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", - "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", + "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1240,10 +2070,11 @@ } }, "node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, + "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -1252,63 +2083,184 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", - "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", - "dev": true + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" }, "node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz", + "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" + "@esbuild/aix-ppc64": "0.25.6", + "@esbuild/android-arm": "0.25.6", + "@esbuild/android-arm64": "0.25.6", + "@esbuild/android-x64": "0.25.6", + "@esbuild/darwin-arm64": "0.25.6", + "@esbuild/darwin-x64": "0.25.6", + "@esbuild/freebsd-arm64": "0.25.6", + "@esbuild/freebsd-x64": "0.25.6", + "@esbuild/linux-arm": "0.25.6", + "@esbuild/linux-arm64": "0.25.6", + "@esbuild/linux-ia32": "0.25.6", + "@esbuild/linux-loong64": "0.25.6", + "@esbuild/linux-mips64el": "0.25.6", + "@esbuild/linux-ppc64": "0.25.6", + "@esbuild/linux-riscv64": "0.25.6", + "@esbuild/linux-s390x": "0.25.6", + "@esbuild/linux-x64": "0.25.6", + "@esbuild/netbsd-arm64": "0.25.6", + "@esbuild/netbsd-x64": "0.25.6", + "@esbuild/openbsd-arm64": "0.25.6", + "@esbuild/openbsd-x64": "0.25.6", + "@esbuild/openharmony-arm64": "0.25.6", + "@esbuild/sunos-x64": "0.25.6", + "@esbuild/win32-arm64": "0.25.6", + "@esbuild/win32-ia32": "0.25.6", + "@esbuild/win32-x64": "0.25.6" } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz", + "integrity": "sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1317,11 +2269,206 @@ "node": ">=8.0.0" } }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1334,6 +2481,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1343,15 +2491,27 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -1360,28 +2520,116 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.9.1" } }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1394,6 +2642,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -1407,16 +2656,127 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1430,33 +2790,116 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1466,6 +2909,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -1473,11 +2917,49 @@ "node": ">= 0.4" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -1492,41 +2974,120 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, "node_modules/interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -1538,22 +3099,41 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -1568,6 +3148,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1578,32 +3159,87 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" } @@ -1613,6 +3249,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -1620,23 +3257,50 @@ "node": ">=8" } }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -1650,6 +3314,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1659,6 +3324,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -1666,16 +3332,43 @@ "node": ">= 0.6" } }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -1683,6 +3376,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1690,23 +3384,61 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -1722,6 +3454,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -1734,6 +3467,27 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, "engines": { "node": ">=6" } @@ -1743,15 +3497,27 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1760,19 +3526,49 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1785,6 +3581,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -1793,9 +3590,9 @@ } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -1811,29 +3608,92 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -1843,6 +3703,7 @@ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.9.0" }, @@ -1850,19 +3711,33 @@ "node": ">= 0.10" } }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1872,6 +3747,7 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -1884,17 +3760,46 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/rollup": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", - "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dev": true, + "license": "ISC", "dependencies": { - "@types/estree": "1.0.5" + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.2.tgz", + "integrity": "sha512-PVoapzTwSEcelaWGth3uR66u7ZRo6qhPHc0f2uRO9fX6XDVNrIiGYS0Pj9+R8yIIYSD/mCx2b16Ws9itljKSPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -1904,25 +3809,53 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.0", - "@rollup/rollup-android-arm64": "4.18.0", - "@rollup/rollup-darwin-arm64": "4.18.0", - "@rollup/rollup-darwin-x64": "4.18.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", - "@rollup/rollup-linux-arm-musleabihf": "4.18.0", - "@rollup/rollup-linux-arm64-gnu": "4.18.0", - "@rollup/rollup-linux-arm64-musl": "4.18.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", - "@rollup/rollup-linux-riscv64-gnu": "4.18.0", - "@rollup/rollup-linux-s390x-gnu": "4.18.0", - "@rollup/rollup-linux-x64-gnu": "4.18.0", - "@rollup/rollup-linux-x64-musl": "4.18.0", - "@rollup/rollup-win32-arm64-msvc": "4.18.0", - "@rollup/rollup-win32-ia32-msvc": "4.18.0", - "@rollup/rollup-win32-x64-msvc": "4.18.0", + "@rollup/rollup-android-arm-eabi": "4.44.2", + "@rollup/rollup-android-arm64": "4.44.2", + "@rollup/rollup-darwin-arm64": "4.44.2", + "@rollup/rollup-darwin-x64": "4.44.2", + "@rollup/rollup-freebsd-arm64": "4.44.2", + "@rollup/rollup-freebsd-x64": "4.44.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.44.2", + "@rollup/rollup-linux-arm-musleabihf": "4.44.2", + "@rollup/rollup-linux-arm64-gnu": "4.44.2", + "@rollup/rollup-linux-arm64-musl": "4.44.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.44.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.44.2", + "@rollup/rollup-linux-riscv64-gnu": "4.44.2", + "@rollup/rollup-linux-riscv64-musl": "4.44.2", + "@rollup/rollup-linux-s390x-gnu": "4.44.2", + "@rollup/rollup-linux-x64-gnu": "4.44.2", + "@rollup/rollup-linux-x64-musl": "4.44.2", + "@rollup/rollup-win32-arm64-msvc": "4.44.2", + "@rollup/rollup-win32-ia32-msvc": "4.44.2", + "@rollup/rollup-win32-x64-msvc": "4.44.2", "fsevents": "~2.3.2" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1941,17 +3874,20 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 10.13.0" @@ -1962,10 +3898,11 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1978,6 +3915,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -1987,6 +3925,7 @@ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -1999,6 +3938,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2011,6 +3951,30 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2020,15 +3984,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -2038,6 +4004,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -2048,15 +4015,127 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2069,6 +4148,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2076,23 +4156,41 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "node_modules/synckit": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", + "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/terser": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", - "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", + "acorn": "^8.14.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -2104,16 +4202,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -2138,20 +4237,74 @@ } }, "node_modules/terser-webpack-plugin/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -2159,11 +4312,25 @@ "node": ">=8.0" } }, - "node_modules/ts-loader": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", - "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-loader": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", + "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", + "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", @@ -2184,6 +4351,7 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, + "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -2222,29 +4390,57 @@ } } }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/undici-types": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.18.2.tgz", - "integrity": "sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ==", - "dev": true + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -2260,9 +4456,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -2276,6 +4473,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -2284,23 +4482,28 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vite": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.12.tgz", - "integrity": "sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.4.tgz", + "integrity": "sha512-SkaSguuS7nnmV7mfJ8l81JGBFV7Gvzp8IzgE8A8t23+AxuNX61Q5H1Tpz5efduSN7NHC8nQXD3sKQKZAu5mNEA==", "dev": true, + "license": "MIT", "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.38", - "rollup": "^4.13.0" + "esbuild": "^0.25.0", + "fdir": "^6.4.6", + "picomatch": "^4.0.2", + "postcss": "^8.5.6", + "rollup": "^4.40.0", + "tinyglobby": "^0.2.14" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -2309,18 +4512,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -2330,6 +4540,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -2338,6 +4551,12 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, @@ -2346,6 +4565,7 @@ "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "globrex": "^0.1.2", @@ -2361,10 +4581,11 @@ } }, "node_modules/vite-tsconfig-paths/node_modules/tsconfck": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.0.tgz", - "integrity": "sha512-CMjc5zMnyAjcS9sPLytrbFmj89st2g+JYtY/c02ug4Q+CZaAtCgbyviI0n1YvjZE/pzoc6FbNsINS13DOL1B9w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", + "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", "dev": true, + "license": "MIT", "bin": { "tsconfck": "bin/tsconfck.js" }, @@ -2380,26 +4601,40 @@ } } }, - "node_modules/vite-tsconfig-paths/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "node_modules/vite/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "dev": true, - "optional": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14.17" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -2409,21 +4644,23 @@ } }, "node_modules/webpack": { - "version": "5.91.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", - "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "version": "5.100.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.100.1.tgz", + "integrity": "sha512-YJB/ESPUe2Locd0NKXmw72Dx8fZQk1gTzI6rc9TAT4+Sypbnhl8jd8RywB1bDsDF9Dy1RUR7gn3q/ZJTd0OZZg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.21.10", + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.16.0", + "enhanced-resolve": "^5.17.2", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -2433,11 +4670,11 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^4.3.2", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" + "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" @@ -2460,6 +4697,7 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, + "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", @@ -2507,6 +4745,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -2516,6 +4755,7 @@ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -2526,10 +4766,11 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -2539,6 +4780,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2553,16 +4795,149 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 862a248..f91f9d6 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,16 @@ "main": "index.ts", "module": "node", "scripts": { + "dev": "vite build --watch --mode development", "build": "vite build && npm run build-userScriptHeader", + "build:prod": "vite build --mode production && npm run build-userScriptHeader", "build-tooling": "tsc ./tools/userScriptHeader.ts --resolveJsonModule --esModuleInterop", - "build-userScriptHeader": "npm run build-tooling && node ./tools/userScriptHeader.js" + "build-userScriptHeader": "npm run build-tooling && node ./tools/userScriptHeader.js", + "lint": "eslint src/ --ext .ts,.tsx", + "lint:fix": "eslint src/ --ext .ts,.tsx --fix", + "format": "prettier --write \"src/**/*.{ts,tsx,json}\"", + "type-check": "tsc --noEmit", + "clean": "rimraf dist" }, "repository": { "type": "git", @@ -27,11 +34,18 @@ }, "homepage": "https://github.com/JosunLP/UserScriptProjectTemplate#readme", "devDependencies": { + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", + "eslint": "^8.57.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.5.1", + "prettier": "^3.6.2", + "rimraf": "^5.0.10", "ts-loader": "^9.3.1", "ts-node": "^10.9.1", - "typescript": "^4.7.4", + "typescript": "^5.4.0", "undici-types": "^6.18.2", - "vite": "^5.2.12", + "vite": "^7.0.4", "vite-tsconfig-paths": "^4.3.2", "webpack": "^5.74.0", "webpack-cli": "^4.10.0" diff --git a/src/index.ts b/src/index.ts index 23e4bf9..2c54228 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,15 +1,147 @@ -/** - * App - */ -class App { +import { ExampleModule } from '@/modules/example'; +import { DOMUtils } from '@/utils/dom'; +import { EventEmitter } from '@/utils/events'; +import { Storage } from '@/utils/storage'; - constructor() { - this.main(); - } - - private main() { - console.log('Hello World!'); - } +/** + * Application events interface + */ +interface AppEvents { + ready: void; + error: Error; + moduleLoaded: { name: string }; } -new App(); \ No newline at end of file +/** + * Main Application Class + * + * This is the entry point for your UserScript. + * Extend this class to build your specific functionality. + */ +class App extends EventEmitter { + private isInitialized = false; + private modules: Map = new Map(); + + constructor() { + super(); + this.initialize(); + } + + /** + * Initialize the application + */ + private async initialize(): Promise { + try { + console.log('๐Ÿš€ UserScript starting...'); + + // Wait for DOM to be ready + if (document.readyState === 'loading') { + await new Promise(resolve => { + document.addEventListener('DOMContentLoaded', resolve, { once: true }); + }); + } + + await this.main(); + + this.isInitialized = true; + this.emit('ready', undefined); + + console.log('โœ… UserScript initialized successfully'); + } catch (error) { + console.error('โŒ UserScript initialization failed:', error); + this.emit('error', error as Error); + } + } + + /** + * Main application logic + * Override this method in your implementation + */ + protected async main(): Promise { + console.log('๐Ÿ‘‹ Hello from UserScript Template!'); + + // Example: Add some basic functionality + this.addExampleFeatures(); + + // Initialize modules + await this.initializeModules(); + } + + /** + * Initialize application modules + */ + private async initializeModules(): Promise { + try { + // Initialize example module + const exampleModule = new ExampleModule(); + await exampleModule.initialize(); + + // Register the module + this.registerModule('example', exampleModule); + + // Listen to module events + exampleModule.on('actionPerformed', ({ action, timestamp }) => { + console.log( + `๐Ÿ“ก Module action received: ${action} at ${new Date(timestamp).toLocaleString()}` + ); + }); + } catch (error) { + console.error('โŒ Failed to initialize modules:', error); + } + } + + /** + * Example features to demonstrate the template + */ + private addExampleFeatures(): void { + // Example: Add custom styles + DOMUtils.addStyles( + ` + .userscript-highlight { + background-color: yellow !important; + border: 2px solid red !important; + } + `, + 'userscript-styles' + ); + + // Example: Storage usage + const visitCount = (Storage.get('visitCount', 0) || 0) + 1; + Storage.set('visitCount', visitCount); + console.log(`๐Ÿ“Š This is visit #${visitCount}`); + + // Example: Add menu command + if (typeof GM_registerMenuCommand !== 'undefined') { + GM_registerMenuCommand('Show Visit Count', () => { + const count = Storage.get('visitCount', 0); + alert(`You have visited this page ${count} times!`); + }); + } + } + + /** + * Register a module + */ + protected registerModule(name: string, module: any): void { + this.modules.set(name, module); + this.emit('moduleLoaded', { name }); + console.log(`๐Ÿ“ฆ Module "${name}" loaded`); + } + + /** + * Get a registered module + */ + protected getModule(name: string): T | undefined { + return this.modules.get(name); + } + + /** + * Check if app is initialized + */ + public get ready(): boolean { + return this.isInitialized; + } +} + +// Start the application +new App(); diff --git a/src/modules/example.ts b/src/modules/example.ts new file mode 100644 index 0000000..e6254d4 --- /dev/null +++ b/src/modules/example.ts @@ -0,0 +1,251 @@ +import { DOMUtils } from '@/utils/dom'; +import { EventEmitter } from '@/utils/events'; +import { Storage } from '@/utils/storage'; + +/** + * Example module events + */ +interface ExampleModuleEvents { + initialized: void; + actionPerformed: { action: string; timestamp: number }; +} + +/** + * Example module to demonstrate the template structure + * + * This module shows how to: + * - Extend the EventEmitter for module communication + * - Use storage for persistent data + * - Manipulate DOM elements + * - Register menu commands + */ +export class ExampleModule extends EventEmitter { + private isInitialized = false; + private actionCount = 0; + + constructor() { + super(); + } + + /** + * Initialize the module + */ + async initialize(): Promise { + try { + console.log('๐Ÿ“ฆ Initializing ExampleModule...'); + + // Load persistent data + this.actionCount = Storage.get('exampleModule.actionCount', 0) || 0; + + // Wait for required DOM elements (example) + await this.waitForPageElements(); + + // Add custom styles + this.addModuleStyles(); + + // Register menu commands + this.registerMenuCommands(); + + // Set up event listeners + this.setupEventListeners(); + + this.isInitialized = true; + this.emit('initialized', undefined); + + console.log('โœ… ExampleModule initialized successfully'); + } catch (error) { + console.error('โŒ ExampleModule initialization failed:', error); + throw error; + } + } + + /** + * Wait for required page elements + */ + private async waitForPageElements(): Promise { + // Example: Wait for body to be available + await DOMUtils.waitForElement('body', 5000); + console.log('๐Ÿ“„ Page body is ready'); + } + + /** + * Add module-specific styles + */ + private addModuleStyles(): void { + DOMUtils.addStyles( + ` + .example-module-button { + position: fixed; + top: 20px; + right: 20px; + z-index: 9999; + padding: 10px 15px; + background: #007cba; + color: white; + border: none; + border-radius: 5px; + cursor: pointer; + font-size: 14px; + box-shadow: 0 2px 5px rgba(0,0,0,0.2); + transition: background 0.2s; + } + + .example-module-button:hover { + background: #005a87; + } + + .example-module-notification { + position: fixed; + top: 70px; + right: 20px; + z-index: 9998; + padding: 10px; + background: #28a745; + color: white; + border-radius: 5px; + box-shadow: 0 2px 5px rgba(0,0,0,0.2); + opacity: 0; + transition: opacity 0.3s; + } + + .example-module-notification.show { + opacity: 1; + } + `, + 'example-module-styles' + ); + } + + /** + * Register UserScript menu commands + */ + private registerMenuCommands(): void { + if (typeof GM_registerMenuCommand !== 'undefined') { + GM_registerMenuCommand('๐ŸŽฏ Perform Example Action', () => { + this.performAction('menu-command'); + }); + + GM_registerMenuCommand('๐Ÿ“Š Show Module Stats', () => { + this.showStats(); + }); + + GM_registerMenuCommand('๐Ÿงน Reset Module Data', () => { + this.resetData(); + }); + } + } + + /** + * Set up event listeners + */ + private setupEventListeners(): void { + // Add a floating button for demonstration + const button = DOMUtils.createElement('button', { + className: 'example-module-button', + textContent: '๐ŸŽฏ Example Action', + onclick: () => this.performAction('button-click'), + }); + + document.body.appendChild(button); + + // Listen to keyboard shortcuts + document.addEventListener('keydown', event => { + // Ctrl+Shift+E to perform action + if (event.ctrlKey && event.shiftKey && event.key === 'E') { + event.preventDefault(); + this.performAction('keyboard-shortcut'); + } + }); + } + + /** + * Perform an example action + */ + public performAction(trigger: string): void { + this.actionCount++; + const timestamp = Date.now(); + + // Store the updated count + Storage.set('exampleModule.actionCount', this.actionCount); + + // Emit event + this.emit('actionPerformed', { action: trigger, timestamp }); + + // Show notification + this.showNotification(`Action performed via ${trigger}! (Total: ${this.actionCount})`); + + console.log(`๐ŸŽฏ Example action performed via ${trigger} (count: ${this.actionCount})`); + } + + /** + * Show a temporary notification + */ + private showNotification(message: string, duration = 3000): void { + const notification = DOMUtils.createElement('div', { + className: 'example-module-notification', + textContent: message, + }); + + document.body.appendChild(notification); + + // Trigger animation + setTimeout(() => notification.classList.add('show'), 10); + + // Remove after duration + setTimeout(() => { + notification.classList.remove('show'); + setTimeout(() => DOMUtils.removeElement(notification), 300); + }, duration); + } + + /** + * Show module statistics + */ + private showStats(): void { + const stats = { + initialized: this.isInitialized, + actionCount: this.actionCount, + lastAction: Storage.get('exampleModule.lastActionTime', 0), + }; + + const message = [ + 'Example Module Statistics:', + `โ€ข Initialized: ${stats.initialized ? 'Yes' : 'No'}`, + `โ€ข Actions performed: ${stats.actionCount}`, + `โ€ข Last action: ${stats.lastAction ? new Date(stats.lastAction).toLocaleString() : 'Never'}`, + ].join('\n'); + + if (typeof GM_notification !== 'undefined') { + GM_notification(message, 'Module Stats'); + } else { + alert(message); + } + } + + /** + * Reset module data + */ + private resetData(): void { + if (confirm('Are you sure you want to reset all module data?')) { + Storage.remove('exampleModule.actionCount'); + Storage.remove('exampleModule.lastActionTime'); + this.actionCount = 0; + console.log('๐Ÿงน Example module data reset'); + this.showNotification('Module data reset!'); + } + } + + /** + * Get module status + */ + public get initialized(): boolean { + return this.isInitialized; + } + + /** + * Get action count + */ + public get totalActions(): number { + return this.actionCount; + } +} diff --git a/src/types/userscript.d.ts b/src/types/userscript.d.ts new file mode 100644 index 0000000..d97c422 --- /dev/null +++ b/src/types/userscript.d.ts @@ -0,0 +1,99 @@ +/** + * TypeScript definitions for UserScript environment + */ + +declare global { + /** + * Greasemonkey/Tampermonkey API + */ + function GM_setValue(key: string, value: any): void; + function GM_getValue(key: string, defaultValue?: any): any; + function GM_deleteValue(key: string): void; + function GM_listValues(): string[]; + + function GM_log(message: string): void; + function GM_notification( + text: string, + title?: string, + image?: string, + onclick?: () => void + ): void; + + function GM_openInTab( + url: string, + options?: { active?: boolean; insert?: boolean; setParent?: boolean } + ): void; + function GM_registerMenuCommand(name: string, fn: () => void, accessKey?: string): number; + function GM_unregisterMenuCommand(menuCmdId: number): void; + + function GM_xmlhttpRequest(details: GM_XHRDetails): GM_XHRResponse; + + interface GM_XHRDetails { + method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'; + url: string; + headers?: Record; + data?: string | FormData | Blob; + binary?: boolean; + timeout?: number; + context?: any; + responseType?: 'text' | 'json' | 'blob' | 'arraybuffer' | 'document'; + overrideMimeType?: string; + anonymous?: boolean; + fetch?: boolean; + username?: string; + password?: string; + onload?: (response: GM_XHRResponse) => void; + onerror?: (response: GM_XHRResponse) => void; + onabort?: () => void; + ontimeout?: () => void; + onprogress?: (response: GM_XHRProgressResponse) => void; + onreadystatechange?: (response: GM_XHRResponse) => void; + onloadstart?: (response: GM_XHRResponse) => void; + onloadend?: (response: GM_XHRResponse) => void; + } + + interface GM_XHRResponse { + readyState: number; + responseHeaders: string; + responseText: string; + response: any; + status: number; + statusText: string; + finalUrl: string; + } + + interface GM_XHRProgressResponse extends GM_XHRResponse { + lengthComputable: boolean; + loaded: number; + total: number; + } + + /** + * UserScript Info + */ + interface GM_Info { + script: { + description: string; + excludes: string[]; + includes: string[]; + matches: string[]; + name: string; + namespace: string; + resources: Record; + runAt: string; + version: string; + }; + scriptMetaStr: string; + scriptWillUpdate: boolean; + version: string; + } + + const GM_info: GM_Info; + + /** + * UnsafeWindow for accessing page's global scope + */ + const unsafeWindow: Window & typeof globalThis; +} + +export {}; diff --git a/src/utils/dom.ts b/src/utils/dom.ts new file mode 100644 index 0000000..b3d02e0 --- /dev/null +++ b/src/utils/dom.ts @@ -0,0 +1,126 @@ +/** + * DOM utility functions for UserScript development + */ +export class DOMUtils { + /** + * Wait for element to appear in DOM + */ + static waitForElement( + selector: string, + timeout = 10000, + root: Document | Element = document + ): Promise { + return new Promise((resolve, reject) => { + const element = root.querySelector(selector); + if (element) { + resolve(element); + return; + } + + const observer = new MutationObserver(mutations => { + for (const mutation of mutations) { + const nodes = Array.from(mutation.addedNodes); + for (const node of nodes) { + if (node.nodeType === Node.ELEMENT_NODE) { + const element = + (node as Element).querySelector?.(selector) || (node as Element).matches?.(selector) + ? (node as Element) + : null; + if (element) { + observer.disconnect(); + resolve(element); + return; + } + } + } + } + }); + + observer.observe(root, { + childList: true, + subtree: true, + }); + + setTimeout(() => { + observer.disconnect(); + reject(new Error(`Element "${selector}" not found within ${timeout}ms`)); + }, timeout); + }); + } + + /** + * Wait for multiple elements + */ + static waitForElements( + selectors: string[], + timeout = 10000, + root: Document | Element = document + ): Promise { + return Promise.all(selectors.map(selector => this.waitForElement(selector, timeout, root))); + } + + /** + * Create element with attributes and content + */ + static createElement( + tagName: K, + attributes: Partial = {}, + content?: string | Node + ): HTMLElementTagNameMap[K] { + const element = document.createElement(tagName); + + Object.assign(element, attributes); + + if (content !== undefined) { + if (typeof content === 'string') { + element.textContent = content; + } else { + element.appendChild(content); + } + } + + return element; + } + + /** + * Add CSS styles to page + */ + static addStyles(css: string, id?: string): HTMLStyleElement { + const style = document.createElement('style'); + style.textContent = css; + if (id) { + style.id = id; + } + + (document.head || document.documentElement).appendChild(style); + return style; + } + + /** + * Remove element safely + */ + static removeElement(element: Element | string): boolean { + const el = typeof element === 'string' ? document.querySelector(element) : element; + if (el && el.parentNode) { + el.parentNode.removeChild(el); + return true; + } + return false; + } + + /** + * Check if element is visible + */ + static isVisible(element: Element): boolean { + const rect = element.getBoundingClientRect(); + const style = window.getComputedStyle(element); + + return ( + rect.width > 0 && + rect.height > 0 && + style.visibility !== 'hidden' && + style.display !== 'none' && + style.opacity !== '0' + ); + } +} diff --git a/src/utils/events.ts b/src/utils/events.ts new file mode 100644 index 0000000..6e819a1 --- /dev/null +++ b/src/utils/events.ts @@ -0,0 +1,78 @@ +/** + * Type-safe event emitter for UserScript modules + */ +export interface EventMap { + [event: string]: any; +} + +export class EventEmitter { + private listeners: { [K in keyof T]?: Array<(data: T[K]) => void> } = {}; + + /** + * Add event listener + */ + on(event: K, listener: (data: T[K]) => void): void { + if (!this.listeners[event]) { + this.listeners[event] = []; + } + this.listeners[event]!.push(listener); + } + + /** + * Add one-time event listener + */ + once(event: K, listener: (data: T[K]) => void): void { + const onceListener = (data: T[K]) => { + listener(data); + this.off(event, onceListener); + }; + this.on(event, onceListener); + } + + /** + * Remove event listener + */ + off(event: K, listener: (data: T[K]) => void): void { + const eventListeners = this.listeners[event]; + if (eventListeners) { + const index = eventListeners.indexOf(listener); + if (index > -1) { + eventListeners.splice(index, 1); + } + } + } + + /** + * Emit event + */ + emit(event: K, data: T[K]): void { + const eventListeners = this.listeners[event]; + if (eventListeners) { + eventListeners.forEach(listener => { + try { + listener(data); + } catch (error) { + console.error(`Error in event listener for "${String(event)}":`, error); + } + }); + } + } + + /** + * Remove all listeners for an event + */ + removeAllListeners(event?: K): void { + if (event) { + delete this.listeners[event]; + } else { + this.listeners = {}; + } + } + + /** + * Get listener count for an event + */ + listenerCount(event: K): number { + return this.listeners[event]?.length || 0; + } +} diff --git a/src/utils/storage.ts b/src/utils/storage.ts new file mode 100644 index 0000000..4151b4b --- /dev/null +++ b/src/utils/storage.ts @@ -0,0 +1,61 @@ +/** + * Storage utility for UserScript persistent data + */ +export class Storage { + /** + * Set a value in persistent storage + */ + static set(key: string, value: T): void { + try { + const serialized = JSON.stringify(value); + GM_setValue(key, serialized); + } catch (error) { + console.error(`Failed to store value for key "${key}":`, error); + } + } + + /** + * Get a value from persistent storage + */ + static get(key: string, defaultValue?: T): T | undefined { + try { + const stored = GM_getValue(key); + if (stored === undefined) { + return defaultValue; + } + return JSON.parse(stored) as T; + } catch (error) { + console.error(`Failed to retrieve value for key "${key}":`, error); + return defaultValue; + } + } + + /** + * Remove a value from persistent storage + */ + static remove(key: string): void { + GM_deleteValue(key); + } + + /** + * Check if a key exists in storage + */ + static has(key: string): boolean { + return GM_getValue(key) !== undefined; + } + + /** + * Get all keys from storage + */ + static getAllKeys(): string[] { + return GM_listValues(); + } + + /** + * Clear all storage (use with caution!) + */ + static clear(): void { + const keys = GM_listValues(); + keys.forEach(key => GM_deleteValue(key)); + } +} diff --git a/tools/userScriptHeader.ts b/tools/userScriptHeader.ts index b87884b..fe6e22d 100644 --- a/tools/userScriptHeader.ts +++ b/tools/userScriptHeader.ts @@ -1,6 +1,6 @@ import * as fs from "fs"; -import pkg from "../package.json"; import config from "../header.config.json"; +import pkg from "../package.json"; const targetFile = "./dist/" + pkg.name + ".user.js"; @@ -60,13 +60,24 @@ function removeEmptyLinesFromString(string: string): string { * Generates user script header */ async function generateUserScriptHeader() { - const excludes = generateMultipleEntries("@exclude", config.excludes); + // Determine environment from NODE_ENV or default to production + const environment = process.env.NODE_ENV === 'development' ? 'development' : 'production'; + console.log(`๐Ÿ”ง Building UserScript header for environment: ${environment}`); + + // Get environment-specific config or fallback to empty arrays + const envConfig = config.environments?.[environment] || { + includes: [], + excludes: [], + grants: [] + }; + + const excludes = generateMultipleEntries("@exclude", envConfig.excludes); const requires = generateMultipleEntries("@require", config.requires); const resources = generateMultipleEntries("@resource", config.resources); const connecters = generateMultipleEntries("@connect", config.connecters); - const grants = generateMultipleEntries("@grant", config.grants); + const grants = generateMultipleEntries("@grant", envConfig.grants); const matches = generateMultipleEntries("@match", config.matches); - const includes = generateMultipleEntries("@match", config.includes); + const includes = generateMultipleEntries("@match", envConfig.includes); const antifeatures = generateMultipleEntries("@antifeature", config.antifeatures); const base64url = await buildBase64UrlFromFile(config.iconUrl); diff --git a/tsconfig.json b/tsconfig.json index 6f9d13b..072465e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,16 +1,32 @@ { "compilerOptions": { + "strict": true, "noImplicitAny": true, + "noImplicitReturns": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "exactOptionalPropertyTypes": true, + "noFallthroughCasesInSwitch": true, "module": "ESNext", - "target": "ES6", + "target": "ES2020", + "lib": ["ES2020", "DOM"], "allowJs": false, "moduleResolution": "node", "sourceMap": true, "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": "./src", "paths": { - "undici-types": ["./node_modules/undici/types/index.d.ts"] + "@/*": ["*"], + "@/types/*": ["types/*"], + "@/utils/*": ["utils/*"], + "@/core/*": ["core/*"], + "undici-types": ["../node_modules/undici/types/index.d.ts"] } - } + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "tools/**/*.js"] } diff --git a/vite.config.ts b/vite.config.ts index 5550a93..697ba68 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,21 +1,33 @@ -import { defineConfig } from "vite"; import { resolve } from "path"; +import { defineConfig } from "vite"; import tsconfigPaths from "vite-tsconfig-paths"; import pkgjsn from "./package.json"; -export default defineConfig({ - build: { - rollupOptions: { - input: resolve(__dirname, "src/index.ts"), - output: { - entryFileNames: `${pkgjsn.name}.user.js`, - dir: resolve(__dirname, "dist"), +export default defineConfig(({ mode }) => { + const isDev = mode === 'development'; + + return { + build: { + rollupOptions: { + input: resolve(__dirname, "src/index.ts"), + output: { + entryFileNames: `${pkgjsn.name}${isDev ? '.dev' : ''}.user.js`, + dir: resolve(__dirname, "dist"), + }, + }, + sourcemap: isDev ? "inline" : false, + minify: isDev ? false : 'terser', + }, + plugins: [tsconfigPaths()], + resolve: { + extensions: [".tsx", ".ts", ".js"], + alias: { + '@': resolve(__dirname, 'src'), }, }, - sourcemap: "inline", // Equivalent to 'inline-source-map' - }, - plugins: [tsconfigPaths()], - resolve: { - extensions: [".tsx", ".ts", ".js"], - }, + define: { + __DEV__: isDev, + __VERSION__: JSON.stringify(pkgjsn.version), + }, + }; });