From 28d4ad8d50c7e5b877bcdd59423aa810dfb941f5 Mon Sep 17 00:00:00 2001 From: Sosthene Date: Thu, 11 Jul 2024 12:32:48 +0200 Subject: [PATCH] Move all the web part out --- .gitignore | 3 - Cargo.toml | 31 +- README.md | 93 - crates/sp_client/Cargo.toml | 26 - package-lock.json | 5198 ---------------------- package.json | 25 - {crates/sp_client/src => src}/api.rs | 0 src/assets/4nk_image.png | Bin 62845 -> 0 bytes src/assets/4nk_revoke.jpg | Bin 68608 -> 0 bytes src/database.ts | 178 - {crates/sp_client/src => src}/images.rs | 0 src/index.html | 17 - src/index.ts | 20 - {crates/sp_client/src => src}/lib.rs | 0 {crates/sp_client/src => src}/peers.rs | 0 {crates/sp_client/src => src}/process.rs | 0 src/services.ts | 909 ---- src/style/4nk.css | 170 - {crates/sp_client/src => src}/user.rs | 0 src/websockets.ts | 117 - tsconfig.json | 110 - webpack.config.js | 46 - 22 files changed, 26 insertions(+), 6917 deletions(-) delete mode 100644 README.md delete mode 100644 crates/sp_client/Cargo.toml delete mode 100644 package-lock.json delete mode 100644 package.json rename {crates/sp_client/src => src}/api.rs (100%) delete mode 100644 src/assets/4nk_image.png delete mode 100644 src/assets/4nk_revoke.jpg delete mode 100644 src/database.ts rename {crates/sp_client/src => src}/images.rs (100%) delete mode 100644 src/index.html delete mode 100644 src/index.ts rename {crates/sp_client/src => src}/lib.rs (100%) rename {crates/sp_client/src => src}/peers.rs (100%) rename {crates/sp_client/src => src}/process.rs (100%) delete mode 100644 src/services.ts delete mode 100644 src/style/4nk.css rename {crates/sp_client/src => src}/user.rs (100%) delete mode 100644 src/websockets.ts delete mode 100644 tsconfig.json delete mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore index ded76cb..8fddb05 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,3 @@ target/ -pkg/ Cargo.lock -node_modules/ -dist/ .vscode \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index fc09209..463dd17 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,26 @@ -[workspace] -resolver = "2" -members = [ - "crates/sp_client" -] +[package] +name = "sdk_client" +version = "0.1.0" +edition = "2021" + +[lib] +name = "sdk_client" +crate-type = ["cdylib"] + +[dependencies] +anyhow = "1.0" +serde = { version = "1.0.188", features = ["derive"] } +serde_json = "1.0" +wasm-bindgen = "0.2.91" +getrandom = { version="0.2.12", features = ["js"] } +wasm-logger = "0.2.0" +rand = "0.8.5" +log = "0.4.6" +tsify = { git = "https://github.com/Sosthene00/tsify", branch = "next" } +#sdk_common = { path = "../../../sdk_common" } +sdk_common = { git = "https://git.4nkweb.com/4nk/sdk_common.git", branch = "dev" } +shamir = { git = "https://github.com/Sosthene00/shamir", branch = "master" } +img-parts = "0.3.0" + +[dev-dependencies] +wasm-bindgen-test = "0.3" diff --git a/README.md b/README.md deleted file mode 100644 index 52593f7..0000000 --- a/README.md +++ /dev/null @@ -1,93 +0,0 @@ -# sdk_client - - - -## Getting started - -To make it easy for you to get started with GitLab, here's a list of recommended next steps. - -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! - -## Add your files - -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: - -``` -cd existing_repo -git remote add origin https://git.4nkweb.com/4nk/sdk_client.git -git branch -M main -git push -uf origin main -``` - -## Integrate with your tools - -- [ ] [Set up project integrations](https://git.4nkweb.com/4nk/sdk_client/-/settings/integrations) - -## Collaborate with your team - -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) - -## Test and Deploy - -Use the built-in continuous integration in GitLab. - -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) - -*** - -# Editing this README - -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template. - -## Suggestions for a good README - -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. - -## Name -Choose a self-explaining name for your project. - -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. - -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. - -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. - -## Contributing -State if you are open to contributions and what your requirements are for accepting them. - -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. - -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. - -## License -For open source projects, say how it is licensed. - -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. diff --git a/crates/sp_client/Cargo.toml b/crates/sp_client/Cargo.toml deleted file mode 100644 index 463dd17..0000000 --- a/crates/sp_client/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "sdk_client" -version = "0.1.0" -edition = "2021" - -[lib] -name = "sdk_client" -crate-type = ["cdylib"] - -[dependencies] -anyhow = "1.0" -serde = { version = "1.0.188", features = ["derive"] } -serde_json = "1.0" -wasm-bindgen = "0.2.91" -getrandom = { version="0.2.12", features = ["js"] } -wasm-logger = "0.2.0" -rand = "0.8.5" -log = "0.4.6" -tsify = { git = "https://github.com/Sosthene00/tsify", branch = "next" } -#sdk_common = { path = "../../../sdk_common" } -sdk_common = { git = "https://git.4nkweb.com/4nk/sdk_common.git", branch = "dev" } -shamir = { git = "https://github.com/Sosthene00/shamir", branch = "master" } -img-parts = "0.3.0" - -[dev-dependencies] -wasm-bindgen-test = "0.3" diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 41468cb..0000000 --- a/package-lock.json +++ /dev/null @@ -1,5198 +0,0 @@ -{ - "name": "sdk_client", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "sdk_client", - "version": "1.0.0", - "license": "ISC", - "devDependencies": { - "copy-webpack-plugin": "^12.0.2", - "html-webpack-plugin": "^5.6.0", - "ts-loader": "^9.5.1", - "typescript": "^5.3.3", - "webpack": "^5.90.3", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^5.0.2" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "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/@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/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "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": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "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, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", - "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/base64": "^1.1.1", - "@jsonjoy.com/util": "^1.1.2", - "hyperdyperid": "^1.2.0", - "thingies": "^1.20.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/util": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.1.3.tgz", - "integrity": "sha512-g//kkF4kOwUjemValCtOc/xiYzmwMRmWq3Bn+YnzOzuZLHq2PpMOxxIayN3cKbo7Ko2Np65t6D9H81IvXbXhqg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true, - "license": "MIT" - }, - "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/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "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, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.2.tgz", - "integrity": "sha512-dPSEQElyVJ97BuGduAqQjpBocZWAs0GR94z+ptL7JXQJeJdHw2WBG3EWdFrK36b8Q6j8P4cXOMhgUoi0IIfIsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "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, - "license": "MIT" - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.12.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.13.tgz", - "integrity": "sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "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, - "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, - "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, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@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, - "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==", - "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" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "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==", - "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, - "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==", - "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" - } - }, - "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==", - "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" - } - }, - "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==", - "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" - } - }, - "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==", - "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" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "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, - "license": "Apache-2.0" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "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==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/ajv": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz", - "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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": "^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-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "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": { - "version": "4.3.0", - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, - "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/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "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" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "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, - "license": "MIT" - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001625", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001625.tgz", - "integrity": "sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/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/chrome-trace-event": { - "version": "1.0.4", - "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" - } - }, - "node_modules/clean-css": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", - "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "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", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "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, - "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, - "license": "MIT" - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-webpack-plugin": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", - "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.1", - "globby": "^14.0.0", - "normalize-path": "^3.0.0", - "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true, - "license": "MIT" - }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "license": "MIT", - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "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/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.786", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.786.tgz", - "integrity": "sha512-i/A2UB0sxYViMN0M2zIotQFRIOt1jLuVXudACHBDiJ5gGuAUzf/crZxwlBTdA0O52Hy4CNtTzS7AKRAacs/08Q==", - "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/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", - "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "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==", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "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, - "license": "MIT" - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, - "license": "MIT" - }, - "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" - }, - "engines": { - "node": ">=8.0.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" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/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/estraverse": { - "version": "4.3.0", - "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/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true, - "license": "MIT" - }, - "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" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "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, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "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.4" - }, - "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, - "license": "MIT" - }, - "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.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "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/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/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/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "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" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "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/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "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, - "license": "BSD-2-Clause" - }, - "node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "license": "ISC" - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "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" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "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" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.20.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.18" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 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==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "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.1.2", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", - "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "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", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "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, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "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/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/launch-editor": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", - "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" - } - }, - "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" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.2.tgz", - "integrity": "sha512-f16coDZlTG1jskq3mxarwB+fGRrd0uXWt+o1WIhRfOwbXQZqUDsTVxQBFK9JjRQHblg8eAG2JSbprDXKjc7ijQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/json-pack": "^1.0.3", - "@jsonjoy.com/util": "^1.1.2", - "sonic-forest": "^1.0.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">= 4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true, - "license": "MIT" - }, - "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, - "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/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "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" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "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" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, - "license": "ISC" - }, - "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "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.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "license": "MIT", - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "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, - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "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, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true, - "license": "MIT" - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", - "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "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/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "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-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" - } - }, - "node_modules/path-parse": { - "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, - "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-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "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" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "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/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "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/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "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/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", - "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true, - "license": "MIT" - }, - "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "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/serialize-javascript": { - "version": "6.0.2", - "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" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "license": "ISC" - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "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/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/sonic-forest": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sonic-forest/-/sonic-forest-1.0.3.tgz", - "integrity": "sha512-dtwajos6IWMEWXdEbW1IkEkyL2gztCAgDplRIX+OT5aRKnEd5e7r7YCxRgXZdhRP1FBdOBf8axeTPhzDv8T4wQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tree-dump": "^1.0.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "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/source-map-support": { - "version": "0.5.21", - "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" - } - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy-transport/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, - "license": "MIT" - }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy/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, - "license": "MIT" - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.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.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "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-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "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" - }, - "funding": { - "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==", - "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==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/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==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/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, - "license": "MIT" - }, - "node_modules/thingies": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", - "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", - "dev": true, - "license": "Unlicense", - "engines": { - "node": ">=10.18" - }, - "peerDependencies": { - "tslib": "^2" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true, - "license": "MIT" - }, - "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" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tree-dump": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.1.tgz", - "integrity": "sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA==", - "dev": true, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-loader/node_modules/source-map": { - "version": "0.7.4", - "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/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true, - "license": "0BSD" - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "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, - "license": "MIT" - }, - "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "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" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webpack": { - "version": "5.91.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", - "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", - "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", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.16.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", - "colorette": "^2.0.14", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz", - "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^4.6.0", - "mime-types": "^2.1.31", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", - "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/bonjour": "^3.5.13", - "@types/connect-history-api-fallback": "^1.5.4", - "@types/express": "^4.17.21", - "@types/serve-index": "^1.9.4", - "@types/serve-static": "^1.15.5", - "@types/sockjs": "^0.3.36", - "@types/ws": "^8.5.10", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.2.1", - "chokidar": "^3.6.0", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.4.0", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.1.0", - "launch-editor": "^2.6.1", - "open": "^10.0.3", - "p-retry": "^6.2.0", - "rimraf": "^5.0.5", - "schema-utils": "^4.2.0", - "selfsigned": "^2.4.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^7.1.0", - "ws": "^8.16.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.10.0", - "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", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/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/webpack/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==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/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/webpack/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "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" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true, - "license": "MIT" - }, - "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.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "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/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 2f6c391..0000000 --- a/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "sdk_client", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build_wasm": "wasm-pack build --out-dir ../../dist/pkg ./crates/sp_client --target bundler --dev", - "start": "webpack serve", - "build": "webpack", - "deploy": "sudo cp -r dist/* /var/www/html/" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "copy-webpack-plugin": "^12.0.2", - "html-webpack-plugin": "^5.6.0", - "ts-loader": "^9.5.1", - "typescript": "^5.3.3", - "webpack": "^5.90.3", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^5.0.2" - } -} diff --git a/crates/sp_client/src/api.rs b/src/api.rs similarity index 100% rename from crates/sp_client/src/api.rs rename to src/api.rs diff --git a/src/assets/4nk_image.png b/src/assets/4nk_image.png deleted file mode 100644 index d58693f1a03d4e31009b72cd8a21769440200b07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62845 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 U;dRa>rjT_Gmj3|bujfDi+2{c=761SM diff --git a/src/database.ts b/src/database.ts deleted file mode 100644 index 81bb802..0000000 --- a/src/database.ts +++ /dev/null @@ -1,178 +0,0 @@ -class Database { - private static instance: Database; - private db: IDBDatabase | null = null; - private dbName: string = '4nk'; - private dbVersion: number = 1; - private storeDefinitions = { - AnkUser: { - name: "user", - options: {'keyPath': 'pre_id'}, - indices: [] - }, - AnkSession: { - name: "session", - options: {}, - indices: [] - }, - AnkProcess: { - name: "process", - options: {'keyPath': 'id'}, - indices: [{ - name: 'by_name', - keyPath: 'name', - options: { - 'unique': true - } - }] - }, - AnkMessages: { - name: "messages", - options: {'keyPath': 'id'}, - indices: [] - } - } - - // Private constructor to prevent direct instantiation from outside - private constructor() {} - - // Method to access the singleton instance of Database - public static async getInstance(): Promise { - if (!Database.instance) { - Database.instance = new Database(); - await Database.instance.init(); - } - return Database.instance; - } - - // Initialize the database - private async init(): Promise { - return new Promise((resolve, reject) => { - const request = indexedDB.open(this.dbName, this.dbVersion); - - request.onupgradeneeded = () => { - const db = request.result; - - Object.values(this.storeDefinitions).forEach(({name, options, indices}) => { - if (!db.objectStoreNames.contains(name)) { - let store = db.createObjectStore(name, options); - - indices.forEach(({name, keyPath, options}) => { - store.createIndex(name, keyPath, options); - }) - } - }); - }; - - request.onsuccess = () => { - this.db = request.result; - resolve(); - }; - - request.onerror = () => { - console.error("Database error:", request.error); - reject(request.error); - }; - }); - } - - public async getDb(): Promise { - if (!this.db) { - await this.init(); - } - return this.db!; - } - - public getStoreList(): {[key: string]: string} { - const objectList: {[key: string]: string} = {}; - Object.keys(this.storeDefinitions).forEach(key => { - objectList[key] = this.storeDefinitions[key as keyof typeof this.storeDefinitions].name; - }); - return objectList; - } - - public writeObject(db: IDBDatabase, storeName: string, obj: any, key: IDBValidKey | null): Promise { - return new Promise((resolve, reject) => { - const transaction = db.transaction(storeName, 'readwrite'); - const store = transaction.objectStore(storeName); - let request: IDBRequest; - if (key) { - request = store.add(obj, key); - } else { - request = store.add(obj); - } - - request.onerror = () => reject(request.error); - request.onsuccess = () => resolve(request.result); - }); - } - - public getObject(db: IDBDatabase, storeName: string, key: IDBValidKey): Promise { - return new Promise((resolve, reject) => { - const transaction = db.transaction(storeName, 'readonly'); - const store = transaction.objectStore(storeName); - const request = store.get(key); - - request.onerror = () => reject(request.error); - request.onsuccess = () => resolve(request.result); - }); - } - - public rmObject(db: IDBDatabase, storeName: string, key: IDBValidKey): Promise { - return new Promise((resolve, reject) => { - const transaction = db.transaction(storeName, 'readwrite'); - const store = transaction.objectStore(storeName); - const request = store.delete(key); - - request.onerror = () => reject(request.error); - request.onsuccess = () => resolve(request.result); - }); - } - - public getFirstMatchWithIndex(db: IDBDatabase, storeName: string, indexName: string, lookup: string): Promise { - return new Promise((resolve, reject) => { - const transaction = db.transaction(storeName, 'readonly'); - const store = transaction.objectStore(storeName); - const index = store.index(indexName); - const request = index.openCursor(IDBKeyRange.only(lookup)); - - request.onerror = () => reject(request.error); - request.onsuccess = () => { - const cursor = request.result; - if (cursor) { - resolve(cursor.value); - } else { - resolve(null) - } - } - }); - } - - public setObject(db: IDBDatabase, storeName: string, obj: any, key: string | null): Promise { - return new Promise((resolve, reject) => { - const transaction = db.transaction(storeName, 'readwrite'); - const store = transaction.objectStore(storeName); - let request: IDBRequest; - if (key) { - request = store.put(obj, key); - } else { - request = store.put(obj); - } - - request.onerror = () => reject(request.error); - request.onsuccess = () => resolve(request.result); - }); - } - - public getAll(db: IDBDatabase, storeName: string): Promise { - return new Promise((resolve, reject) => { - const transaction = db.transaction(storeName, 'readonly'); - const store = transaction.objectStore(storeName); - const request = store.getAll(); - - request.onerror = () => reject(request.error); - request.onsuccess = () => resolve(request.result); - }); - } -} - -export default Database; diff --git a/crates/sp_client/src/images.rs b/src/images.rs similarity index 100% rename from crates/sp_client/src/images.rs rename to src/images.rs diff --git a/src/index.html b/src/index.html deleted file mode 100644 index a338e3f..0000000 --- a/src/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - 4NK Application - - -
- -
- - \ No newline at end of file diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 834bd9d..0000000 --- a/src/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import Services from './services'; -import { WebSocketClient } from './websockets'; - -const wsurl = `wss://${window.location.hostname}/ws/`; -document.addEventListener('DOMContentLoaded', async () => { - try { - const services = await Services.getInstance(); - await services.addWebsocketConnection(wsurl); - - if ((await services.isNewUser())) { - await services.displayCreateId(); - } - else { - await services.displayRecover() - } - } catch (error) { - console.error(error); - } -}); - diff --git a/crates/sp_client/src/lib.rs b/src/lib.rs similarity index 100% rename from crates/sp_client/src/lib.rs rename to src/lib.rs diff --git a/crates/sp_client/src/peers.rs b/src/peers.rs similarity index 100% rename from crates/sp_client/src/peers.rs rename to src/peers.rs diff --git a/crates/sp_client/src/process.rs b/src/process.rs similarity index 100% rename from crates/sp_client/src/process.rs rename to src/process.rs diff --git a/src/services.ts b/src/services.ts deleted file mode 100644 index 81298d3..0000000 --- a/src/services.ts +++ /dev/null @@ -1,909 +0,0 @@ -import { createUserReturn, User, Process, createTransactionReturn, outputs_list, FaucetMessage, AnkFlag, NewTxMessage, CipherMessage, CachedMessage } from '../dist/pkg/sdk_client'; -import IndexedDB from './database' -import { WebSocketClient } from './websockets'; - -class Services { - private static instance: Services; - private sdkClient: any; - private current_process: string | null = null; - private websocketConnection: WebSocketClient[] = []; - private sp_address: string | null = null; - - // Private constructor to prevent direct instantiation from outside - private constructor() {} - - // Method to access the singleton instance of Services - public static async getInstance(): Promise { - if (!Services.instance) { - Services.instance = new Services(); - await Services.instance.init(); - } - return Services.instance; - } - - // The init method is now part of the instance, and should only be called once - private async init(): Promise { - this.sdkClient = await import("../dist/pkg/sdk_client"); - this.sdkClient.setup(); - await this.updateProcesses(); - } - - public async addWebsocketConnection(url: string): Promise { - const services = await Services.getInstance(); - const newClient = new WebSocketClient(url, services); - if (!services.websocketConnection.includes(newClient)) { - services.websocketConnection.push(newClient); - } - } - - public async isNewUser(): Promise { - let isNew = false; - try { - const indexedDB = await IndexedDB.getInstance(); - const db = await indexedDB.getDb(); - let userListObject = await indexedDB.getAll(db, indexedDB.getStoreList().AnkUser); - if (userListObject.length == 0) { - isNew = true; - } - } catch (error) { - console.error("Failed to retrieve isNewUser :", error); - } - return isNew; - } - - public async displayCreateId(): Promise { - const services = await Services.getInstance(); - await services.createIdInjectHtml(); - services.attachSubmitListener("form4nk", (event) => services.createId(event)); - services.attachClickListener("displayrecover", services.displayRecover); - await services.displayProcess(); - } - - public async displaySendMessage(): Promise { - const services = await Services.getInstance(); - await services.injectHtml('Messaging'); - services.attachSubmitListener("form4nk", (event) => services.sendMessage(event)); - // const ourAddress = document.getElementById('our_address'); - // if (ourAddress) { - // ourAddress.innerHTML = `Our Address: ${this.sp_address}` - // } - // services.attachClickListener("displaysendmessage", services.displaySendMessage); - // await services.displayProcess(); - } - - public async sendMessage(event: Event): Promise { - event.preventDefault(); - - const services = await Services.getInstance(); - let availableAmt: number = 0; - - // check available amount - try { - availableAmt = await services.sdkClient.get_available_amount_for_user(true); - } catch (error) { - console.error('Failed to get available amount'); - return; - } - - if (availableAmt < 2000) { - try { - await services.obtainTokenWithFaucet(); - } catch (error) { - console.error('Failed to obtain faucet token:', error); - return; - } - } - - const spAddressElement = document.getElementById("sp_address") as HTMLInputElement; - const messageElement = document.getElementById("message") as HTMLInputElement; - - if (!spAddressElement || !messageElement) { - console.error("One or more elements not found"); - return; - } - - const recipientSpAddress = spAddressElement.value; - const message = messageElement.value; - - const msg_payload: CipherMessage = {sender: this.sp_address!, message: message, error: null}; - - let notificationInfo = await services.notify_address_for_message(recipientSpAddress, msg_payload); - if (notificationInfo) { - let networkMsg = notificationInfo.new_network_msg; - console.debug(networkMsg); - - const connection = await services.pickWebsocketConnectionRandom(); - const flag: AnkFlag = 'Cipher'; - try { - // send message (transaction in envelope) - await services.updateMessages(networkMsg); - connection?.sendMessage(flag, networkMsg.ciphertext!); - } catch (error) { - throw error; - } - // add peers list - // add processes list - } - } - - public async createId(event: Event): Promise { - event.preventDefault(); - - // verify we don't already have an user - const services = await Services.getInstance(); - try { - let user = await services.getUserInfo(); - if (user) { - console.error("User already exists, please recover"); - return; - } - } catch (error) { - throw error; - } - - const passwordElement = document.getElementById("password") as HTMLInputElement; - const processElement = document.getElementById("selectProcess") as HTMLSelectElement; - - if (!passwordElement || !processElement) { - throw 'One or more elements not found'; - } - - const password = passwordElement.value; - this.current_process = processElement.value; - // console.log("JS password: " + password + " process: " + this.current_process); - // To comment if test - // if (!Services.instance.isPasswordValid(password)) return; - - const label = null; - const birthday_signet = 50000; - const birthday_main = 500000; - - let createUserReturn: createUserReturn; - try { - createUserReturn = services.sdkClient.create_user(password, label, birthday_main, birthday_signet, this.current_process); - } catch (error) { - throw error; - } - - let user = createUserReturn.user; - - // const shares = user.shares; - // send the shares on the network - const revokeData = user.revoke_data; - if (!revokeData) { - throw 'Failed to get revoke data from wasm'; - } - - // user.shares = []; - user.revoke_data = null; - - try { - const indexedDb = await IndexedDB.getInstance(); - const db = await indexedDb.getDb(); - await indexedDb.writeObject(db, indexedDb.getStoreList().AnkUser, user, null); - } catch (error) { - throw `Failed to write user object: ${error}`; - } - - try { - await services.obtainTokenWithFaucet(); - } catch (error) { - throw error; - } - - await services.displayRevokeImage(new Uint8Array(revokeData)); - } - - public async displayRecover(): Promise { - const services = await Services.getInstance(); - await services.recoverInjectHtml(); - services.attachSubmitListener("form4nk", (event) => services.recover(event)); - services.attachClickListener("displaycreateid", services.displayCreateId); - services.attachClickListener("displayrevoke", services.displayRevoke); - services.attachClickListener("submitButtonRevoke", services.revoke); - await services.displayProcess(); - } - - public async recover(event: Event) { - event.preventDefault(); - - const passwordElement = document.getElementById("password") as HTMLInputElement; - const processElement = document.getElementById("selectProcess") as HTMLSelectElement; - - if (!passwordElement || !processElement) { - console.error("One or more elements not found"); - return; - } - - const password = passwordElement.value; - const process = processElement.value; - // console.log("JS password: " + password + " process: " + process); - // To comment if test - // if (!Services.instance.isPasswordValid(password)) return; - - // Get user in db - const services = await Services.getInstance(); - try { - const user = await services.getUserInfo(); - if (user) { - services.sdkClient.login_user(password, user.pre_id, user.recover_data, user.shares, user.outputs); - this.sp_address = services.sdkClient.get_recover_address(); - if (this.sp_address) { - console.info('Using sp_address:', this.sp_address); - await services.obtainTokenWithFaucet(); - } - } - } catch (error) { - console.error(error); - } - - console.info(this.sp_address); - - // TODO: check blocks since last_scan and update outputs - - await services.displaySendMessage(); - } - - public async displayRevokeImage(revokeData: Uint8Array): Promise { - const services = await Services.getInstance(); - await services.revokeImageInjectHtml(); - services.attachClickListener("displayupdateanid", services.displayUpdateAnId); - - let imageBytes = await services.getRecoverImage('assets/4nk_revoke.jpg'); - if (imageBytes != null) { - var elem = document.getElementById("revoke") as HTMLAnchorElement; - if (elem != null) { - let imageWithData = services.sdkClient.add_data_to_image(imageBytes, revokeData, true); - const blob = new Blob([imageWithData], { type: 'image/jpeg' }); - const url = URL.createObjectURL(blob); - - // Set the href attribute for download - elem.href = url; - elem.download = 'revoke_4NK.jpg'; - } - } - } - - private async getRecoverImage(imageUrl:string): Promise { - let imageBytes = null; - try { - const response = await fetch(imageUrl); - if (!response.ok) { - throw new Error(`Failed to fetch image: ${response.status} ${response.statusText}`); - } - const arrayBuffer = await response.arrayBuffer(); - imageBytes = new Uint8Array(arrayBuffer); - } catch (error) { - console.error("Failed to get image : "+imageUrl, error); - } - return imageBytes; - } - - public async displayRevoke(): Promise { - const services = await Services.getInstance(); - await services.revokeInjectHtml(); - services.attachClickListener("displayrecover", Services.instance.displayRecover); - services.attachSubmitListener("form4nk", Services.instance.revoke); - } - - public async revoke(event: Event): Promise { - event.preventDefault(); - console.log("JS revoke click "); - // TODO - alert("revoke click to do ..."); - } - - public async displayUpdateAnId() { - const services = await Services.getInstance(); - - await services.updateIdInjectHtml(); - - services.attachSubmitListener("form4nk", services.updateAnId); - } - - public async parseNetworkMessage(raw: string, feeRate: number): Promise { - const services = await Services.getInstance(); - try { - const msg: CachedMessage = services.sdkClient.parse_network_msg(raw, feeRate); - return msg; - } catch (error) { - throw error; - } - } - - public async updateAnId(event: Event): Promise { - event.preventDefault(); - - // TODO get values - const firstNameElement = 'firstName'; - const lastNameElement = 'lastName'; - const firstName = document.getElementById(firstNameElement) as HTMLInputElement; - const lastName = document.getElementById(lastNameElement) as HTMLInputElement; - - console.log("JS updateAnId submit "); - // TODO - alert("updateAnId submit to do ... Name : "+firstName.value + " "+lastName.value); - - // TODO Mock add user member to process - } - - public async displayProcess(): Promise { - const services = await Services.getInstance(); - const processList = await services.getAllProcess(); - const selectProcess = document.getElementById("selectProcess"); - if (selectProcess) { - processList.forEach((process) => { - let child = new Option(process.name, process.name); - if (!selectProcess.contains(child)) { - selectProcess.appendChild(child); - } - }) - } - } - - public async addProcess(process: Process): Promise { - try { - const indexedDB = await IndexedDB.getInstance(); - const db = await indexedDB.getDb(); - await indexedDB.writeObject(db, indexedDB.getStoreList().AnkProcess, process, null); - } catch (error) { - console.log('addProcess failed: ',error); - } - } - - public async getAllProcess(): Promise { - try { - const indexedDB = await IndexedDB.getInstance(); - const db = await indexedDB.getDb(); - let processListObject = await indexedDB.getAll(db, indexedDB.getStoreList().AnkProcess); - return processListObject; - } catch (error) { - console.log('getAllProcess failed: ',error); - return []; - } - } - - public async updateOwnedOutputsForUser(): Promise { - const services = await Services.getInstance(); - let latest_outputs: outputs_list; - try { - latest_outputs = services.sdkClient.get_outpoints_for_user(); - } catch (error) { - console.error(error); - return; - } - - try { - let user = await services.getUserInfo(); - if (user) { - user.outputs = latest_outputs; - // console.warn(user); - await services.updateUser(user); - } - } catch (error) { - console.error(error); - } - } - - public async getAllProcessForUser(pre_id: string): Promise { - const services = await Services.getInstance(); - let user: User; - let userProcessList: Process[] = []; - try { - const indexedDB = await IndexedDB.getInstance(); - const db = await indexedDB.getDb(); - user = await indexedDB.getObject(db, indexedDB.getStoreList().AnkUser, pre_id); - } catch (error) { - console.error('getAllUserProcess failed: ',error); - return []; - } - - try { - const processListObject = await services.getAllProcess(); - processListObject.forEach(async (processObject) => { - if (processObject.members.includes(user.pre_id)) { - userProcessList.push(processObject); - } - }) - } catch (error) { - console.error('getAllUserProcess failed: ',error); - return []; - } - return userProcessList; - } - - public async getProcessByName(name: string): Promise { - console.log('getProcessByName name: '+name); - const indexedDB = await IndexedDB.getInstance(); - const db = await indexedDB.getDb(); - const process = await indexedDB.getFirstMatchWithIndex(db, indexedDB.getStoreList().AnkProcess, 'by_name', name); - console.log('getProcessByName process: '+process); - - return process; - } - - public async updateMessages(message: CachedMessage): Promise { - const indexedDb = await IndexedDB.getInstance(); - const db = await indexedDb.getDb(); - - try { - await indexedDb.setObject(db, indexedDb.getStoreList().AnkMessages, message, null); - } catch (error) { - throw error; - } - } - - public async removeMessage(id: number): Promise { - const indexedDb = await IndexedDB.getInstance(); - const db = await indexedDb.getDb(); - - try { - await indexedDb.rmObject(db, indexedDb.getStoreList().AnkMessages, id); - } catch (error) { - throw error; - } - } - - public async updateProcesses(): Promise { - const services = await Services.getInstance(); - const processList: Process[] = services.sdkClient.get_processes(); - - processList.forEach(async (process: Process) => { - const indexedDB = await IndexedDB.getInstance(); - const db = await indexedDB.getDb(); - try { - const processStore = await indexedDB.getObject(db, indexedDB.getStoreList().AnkProcess, process.id); - if (!processStore) { - await indexedDB.writeObject(db, indexedDB.getStoreList().AnkProcess, process, null); - } - } catch (error) { - console.error('Error while writing process', process.name, 'to indexedDB:', error); - } - }) - } - - public attachClickListener(elementId: string, callback: (event: Event) => void): void { - const element = document.getElementById(elementId); - element?.removeEventListener("click", callback); - element?.addEventListener("click", callback); - } - - public attachSubmitListener(elementId: string, callback: (event: Event) => void): void { - const element = document.getElementById(elementId); - element?.removeEventListener("submit", callback); - element?.addEventListener("submit", callback); - } - public async revokeInjectHtml() { - const container = document.getElementById('containerId'); - - if (!container) { - console.error("No html container"); - return; - } - - container.innerHTML = - `
- `; - } - public async revokeImageInjectHtml() { - const container = document.getElementById('containerId'); - - if (!container) { - console.error("No html container"); - return; - } - - container.innerHTML = - `
-
-

Revoke image

- -
-
-
- - - - - -
- -
-
`; - } - - public async recoverInjectHtml() { - const container = document.getElementById('containerId'); - - if (!container) { - console.error("No html container"); - return; - } - - const services = await Services.getInstance(); - await services.updateProcesses(); - - container.innerHTML = - `
-
-

Recover my Id

- -
-
- - - -
-
- - -

- Revoke -

-
-
`; - } - - public async createIdInjectHtml() { - const container = document.getElementById('containerId'); - - if (!container) { - console.error("No html container"); - return; - } - - container.innerHTML = - `
-
-

Create an Id

- -
-
- -
- -
-
- -
- Recover -
-
-

-
-
`; - } - - public async updateIdInjectHtml() { - const container = document.getElementById('containerId'); - - if (!container) { - console.error("No html container"); - return; - } - - container.innerHTML = - ` -
-
-

Update an Id

-
-
-
- - - - - - - - - - - - - -
-
- - -
-
-
- -
- -
-
- `; - } - - public async injectHtml(processName: string) { - const container = document.getElementById('containerId'); - - if (!container) { - console.error("No html container"); - return; - } - - const services = await Services.getInstance(); - - // do we have all processes in db? - const knownProcesses = await services.getAllProcess(); - const processesFromNetwork: Process[] = services.sdkClient.get_processes(); - - const processToAdd = processesFromNetwork.filter(processFromNetwork => !knownProcesses.some(knownProcess => knownProcess.id === processFromNetwork.id)); - - processToAdd.forEach(async p => { - await services.addProcess(p); - }) - - // get the process we need - const process = await services.getProcessByName(processName); - if (process) { - container.innerHTML = process.html; - } else { - console.error("No process ", processName); - } - } - - // public async getCurrentProcess(): Promise { - // let currentProcess = ""; - // try { - // const indexedDB = await IndexedDB.getInstance(); - // const db = indexedDB.getDb(); - // currentProcess = await indexedDB.getObject(db, indexedDB.getStoreList().AnkSession, Services.CURRENT_PROCESS); - // } catch (error) { - // console.error("Failed to retrieve currentprocess object :", error); - // } - // return currentProcess; - // } - - public isPasswordValid(password: string) { - var alertElem = document.getElementById("passwordalert"); - var success = true; - var strength = 0; - if (password.match(/[a-z]+/)) { - var strength = 0; - strength += 1; - } - if (password.match(/[A-Z]+/)) { - strength += 1; - } - if (password.match(/[0-9]+/)) { - strength += 1; - } - if (password.match(/[$@#&!]+/)) { - strength += 1; - } - if (alertElem !== null) { - // TODO Passer à 18 - if (password.length < 4) { - alertElem.innerHTML = "Password size is < 4"; - success = false; - } else { - if (password.length > 30) { - alertElem.innerHTML = "Password size is > 30"; - success = false; - } else { - if (strength < 4) { - alertElem.innerHTML = "Password need [a-z] [A-Z] [0-9]+ [$@#&!]+"; - success = false; - } - } - } - } - return success; - } - - private async pickWebsocketConnectionRandom(): Promise { - const services = await Services.getInstance(); - const websockets = services.websocketConnection; - if (websockets.length === 0) { - console.error("No websocket connection available at the moment"); - return null; - } else { - const random = Math.floor(Math.random() * websockets.length); - return websockets[random]; - } - } - - public async obtainTokenWithFaucet(): Promise { - const services = await Services.getInstance(); - const connection = await services.pickWebsocketConnectionRandom(); - if (!connection) { - throw 'no available relay connections'; - } - - let cachedMsg: CachedMessage; - try { - const flag: AnkFlag = 'Faucet'; - cachedMsg = services.sdkClient.create_faucet_msg(); - if (cachedMsg.commitment && cachedMsg.recipient) { - let faucetMsg: FaucetMessage = { - sp_address: cachedMsg.recipient, - commitment: cachedMsg.commitment, - error: null, - } - connection.sendMessage(flag, JSON.stringify(faucetMsg)); - } - } catch (error) { - throw `Failed to obtain tokens with relay ${connection.getUrl()}: ${error}`; - } - - try { - await services.updateMessages(cachedMsg); - } catch (error) { - throw error; - } - } - - public async updateUser(user: User): Promise { - try { - const indexedDB = await IndexedDB.getInstance(); - const db = await indexedDB.getDb(); - await indexedDB.setObject(db, indexedDB.getStoreList().AnkUser, user, null); - } catch (error) { - throw error; - } - } - - public async getUserInfo(): Promise { - try { - const indexedDB = await IndexedDB.getInstance(); - const db = await indexedDB.getDb(); - let user = await indexedDB.getAll(db, indexedDB.getStoreList().AnkUser); - // This should never happen - if (user.length > 1) { - throw "Multiple users in db"; - } else { - let res = user.pop(); - if (res === undefined) { - return null; - } else { - return res; - } - } - } catch (error) { - throw error; - } - } - - public async answer_confirmation_message(msg: CachedMessage): Promise { - const services = await Services.getInstance(); - const connection = await services.pickWebsocketConnectionRandom(); - if (!connection) { - throw new Error("No connection to relay"); - } - let user: User; - try { - let possibleUser = await services.getUserInfo(); - if (!possibleUser) { - throw new Error("No user loaded, please first create a new user or login"); - } else { - user = possibleUser; - } - } catch (error) { - throw error; - } - - let notificationInfo: createTransactionReturn; - try { - const feeRate = 1; - notificationInfo = services.sdkClient.answer_confirmation_transaction(msg.id, feeRate); - } catch (error) { - throw new Error(`Failed to create confirmation transaction: ${error}`); - } - const flag: AnkFlag = "NewTx"; - const newTxMsg: NewTxMessage = { - 'transaction': notificationInfo.transaction, - 'tweak_data': null, - 'error': null, - } - connection.sendMessage(flag, JSON.stringify(newTxMsg)); - await services.updateMessages(notificationInfo.new_network_msg); - return; - } - - public async confirm_sender_address(msg: CachedMessage): Promise { - const services = await Services.getInstance(); - const connection = await services.pickWebsocketConnectionRandom(); - if (!connection) { - throw new Error("No connection to relay"); - } - let user: User; - try { - let possibleUser = await services.getUserInfo(); - if (!possibleUser) { - throw new Error("No user loaded, please first create a new user or login"); - } else { - user = possibleUser; - } - } catch (error) { - throw error; - } - - let notificationInfo: createTransactionReturn; - try { - const feeRate = 1; - notificationInfo = services.sdkClient.create_confirmation_transaction(msg.id, feeRate); - } catch (error) { - throw new Error(`Failed to create confirmation transaction: ${error}`); - } - const flag: AnkFlag = "NewTx"; - const newTxMsg: NewTxMessage = { - 'transaction': notificationInfo.transaction, - 'tweak_data': null, - 'error': null, - } - connection.sendMessage(flag, JSON.stringify(newTxMsg)); - await services.updateMessages(notificationInfo.new_network_msg); - return; - } - - public async notify_address_for_message(sp_address: string, message: CipherMessage): Promise { - const services = await Services.getInstance(); - const connection = await services.pickWebsocketConnectionRandom(); - if (!connection) { - throw 'No available connection'; - } - - try { - const feeRate = 1; - let notificationInfo: createTransactionReturn = services.sdkClient.create_notification_transaction(sp_address, message, feeRate); - const flag: AnkFlag = "NewTx"; - const newTxMsg: NewTxMessage = { - 'transaction': notificationInfo.transaction, - 'tweak_data': null, - 'error': null, - } - connection.sendMessage(flag, JSON.stringify(newTxMsg)); - console.info('Successfully sent notification transaction'); - return notificationInfo; - } catch (error) { - throw 'Failed to create notification transaction:", error'; - } - } -} - -export default Services; diff --git a/src/style/4nk.css b/src/style/4nk.css deleted file mode 100644 index 09b1116..0000000 --- a/src/style/4nk.css +++ /dev/null @@ -1,170 +0,0 @@ -body { - margin: 0; - padding: 0; - display: flex; - align-items: center; - justify-content: center; - min-height: 100vh; - background-color: #f4f4f4; - font-family: 'Arial', sans-serif; -} -.container { - text-align: center; -} -.card { - max-width: 400px; - width: 100%; - padding: 20px; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); - background-color: #ffffff; - border-radius: 8px; - text-align: left; - overflow: hidden; -} -form { - display: flex; - flex-direction: column; - /* flex-wrap: wrap; */ -} -label { - font-weight: bold; - margin-bottom: 8px; -} -hr { - border: 0; - height: 1px; - background-color: #ddd; - margin: 10px 0; -} -input, select { - width: 100%; - padding: 10px; - margin: 8px 0; - box-sizing: border-box; -} -select { - padding: 10px; - background-color: #f9f9f9; - border: 1px solid #ddd; - border-radius: 4px; - cursor: pointer; -} -button { - display: inline-block; - background-color: #4caf50; - color: #fff; - border: none; - padding: 12px 17px; - border-radius: 4px; - cursor: pointer; -} -button:hover { - background-color: #45a049; -} -.side-by-side { - display: flex; - align-items: center; - justify-content: space-between; -} -.side-by-side>* { - display: inline-block; -} -button.recover { - display: inline-block; - text-align: center; - text-decoration: none; - display: inline-block; - background-color: #4caf50; - color: #fff; - border: none; - padding: 12px 17px; - border-radius: 4px; - cursor: pointer; -} -button.recover:hover { - background-color: #45a049; -} -a.btn { - display: inline-block; - text-align: center; - text-decoration: none; - display: inline-block; - background-color: #4caf50; - color: #fff; - border: none; - padding: 12px 17px; - border-radius: 4px; - cursor: pointer; - } - -a.btn:hover { - background-color: #45a049; -} - -a { - text-decoration: none; - color: #78a6de; -} -.bg-secondary { - background-color: #2b81ed; -} -.bg-primary { - background-color: #1A61ED; -} -.bg-primary:hover { - background-color: #457be8; -} -.card-revoke { - display: flex; - flex-direction: column; - max-width: 400px; - width: 100%; - padding: 20px; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); - background-color: #ffffff; - border-radius: 8px; - text-align: center; - align-items: center; - overflow: hidden; -} -.card-revoke a { - max-width: 50px; - width: 100%; - background: none; - border: none; - cursor: pointer; -} -.card-revoke button { - max-width: 200px; - width: 100%; - background: none; - border: none; - cursor: pointer; - color: #78a6de; -} -.card-revoke svg { - width: 100%; - height: auto; - fill: #333; -} -.image-label { - display: block; - color: #fff; - padding: 5px; - margin-top: 10px; -} -.image-container { - width: 400px; - height: 300px; - overflow: hidden; -} -.image-container img { - text-align: center; - width: 100%; - height: 100%; - object-fit: cover; - object-position: center center; -} -.passwordalert { - color: #FF0000; -} \ No newline at end of file diff --git a/crates/sp_client/src/user.rs b/src/user.rs similarity index 100% rename from crates/sp_client/src/user.rs rename to src/user.rs diff --git a/src/websockets.ts b/src/websockets.ts deleted file mode 100644 index e640afa..0000000 --- a/src/websockets.ts +++ /dev/null @@ -1,117 +0,0 @@ -import Services from "./services"; -import { AnkFlag, AnkNetworkMsg, CachedMessage } from "../dist/pkg/sdk_client"; - -class WebSocketClient { - private ws: WebSocket; - private messageQueue: string[] = []; - - constructor(url: string, private services: Services) { - this.ws = new WebSocket(url); - - this.ws.addEventListener('open', (event) => { - console.log('WebSocket connection established'); - // Once the connection is open, send all messages in the queue - while (this.messageQueue.length > 0) { - const message = this.messageQueue.shift(); - if (message) { - this.ws.send(message); - } - } - }); - - // Listen for messages - this.ws.addEventListener('message', (event) => { - const msgData = event.data; - - (async () => { - if (typeof(msgData) === 'string') { - console.log("Received text message: "+msgData); - try { - const feeRate = 1; - // By parsing the message, we can link it with existing cached message and return the updated version of the message - let res: CachedMessage = await services.parseNetworkMessage(msgData, feeRate); - console.debug(res); - if (res.status === 'FaucetComplete') { - // we received a faucet tx, there's nothing else to do - window.alert(`New faucet output\n${res.commited_in}`); - await services.updateMessages(res); - await services.updateOwnedOutputsForUser(); - } else if (res.status === 'TxWaitingCipher') { - // we received a tx but we don't have the cipher - console.debug(`received notification in output ${res.commited_in}, waiting for cipher message`); - await services.updateMessages(res); - await services.updateOwnedOutputsForUser(); - } else if (res.status === 'CipherWaitingTx') { - // we received a cipher but we don't have the key - console.debug(`received a cipher`); - await services.updateMessages(res); - } else if (res.status === 'SentWaitingConfirmation') { - // We are sender and we're waiting for the challenge that will confirm recipient got the transaction and the message - await services.updateMessages(res); - await services.updateOwnedOutputsForUser(); - } else if (res.status === 'MustSpendConfirmation') { - // we received a challenge for a notification we made - // that means we can stop rebroadcasting the tx and we must spend the challenge to confirm - window.alert(`Spending ${res.confirmed_by} to prove our identity`); - console.debug(`sending confirm message to ${res.recipient}`); - await services.updateMessages(res); - await services.answer_confirmation_message(res); - } else if (res.status === 'ReceivedMustConfirm') { - // we found a notification and decrypted the cipher - window.alert(`Received message from ${res.sender}\n${res.plaintext}`); - // we must spend the commited_in output to sender - await services.updateMessages(res); - await services.confirm_sender_address(res); - } else if (res.status === 'Complete') { - window.alert(`Received confirmation that ${res.sender} is the author of message ${res.plaintext}`) - await services.updateMessages(res); - await services.updateOwnedOutputsForUser(); - } else { - console.debug('Received an unimplemented valid message'); - } - } catch (error) { - console.error('Received an invalid message:', error); - } - } else { - console.error('Received a non-string message'); - } - })(); - }); - - // Listen for possible errors - this.ws.addEventListener('error', (event) => { - console.error('WebSocket error:', event); - }); - - // Listen for when the connection is closed - this.ws.addEventListener('close', (event) => { - console.log('WebSocket is closed now.'); - }); - } - - // Method to send messages - public sendMessage(flag: AnkFlag, message: string): void { - const networkMessage: string = JSON.stringify({ - 'flag': flag, - 'content': message - }); - if (this.ws.readyState === WebSocket.OPEN) { - console.debug("Sending message:", networkMessage); - this.ws.send(networkMessage); - } else { - console.warn('WebSocket is not open. ReadyState:', this.ws.readyState); - this.messageQueue.push(networkMessage); - } - } - - public getUrl(): string { - return this.ws.url; - } - - // Method to close the WebSocket connection - public close(): void { - this.ws.close(); - } -} - -export { WebSocketClient }; diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index cb1723c..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "ES2017", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "ESNext", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - }, - "include": ["./src/**/*"] -} diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index e40143f..0000000 --- a/webpack.config.js +++ /dev/null @@ -1,46 +0,0 @@ -const path = require('path'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const CopyWebpackPlugin = require('copy-webpack-plugin'); - -module.exports = { - mode: 'development', - entry: './src/index.ts', - devtool: 'inline-source-map', - experiments: { - asyncWebAssembly: true, - }, - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - { - test: /\.wasm$/, - type: 'webassembly/async', - } - ], - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - }, - output: { - filename: 'index.js', - path: path.resolve(__dirname, 'dist'), - }, - plugins: [ - new HtmlWebpackPlugin({ - template: 'src/index.html' - }), - new CopyWebpackPlugin({ - patterns: [ - { from: 'src/assets', to: './assets' }, - { from: 'src/style', to: './style' } - ], - }), - ], - devServer: { - static: './dist', - }, -};
- -
- - -
-
- - -
-
- -
-