commit 61ee0b6e89de4af4c4b17691ab0f140e6319b3b6 Author: Murat Özkorkmaz Date: Thu Oct 9 10:42:03 2025 +0200 Initial commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..0792692 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4934ebf --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings +.vscode + +# System files +.DS_Store +Thumbs.db diff --git a/.postcssrc.json b/.postcssrc.json new file mode 100644 index 0000000..7e0d3f3 --- /dev/null +++ b/.postcssrc.json @@ -0,0 +1,5 @@ +{ + "plugins": { + "@tailwindcss/postcss": {} + } +} \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..2161e03 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,14 @@ +# Ignore artifacts: +build +coverage +dist +out +public +styles +node_modules +.vscode +.angular +*.md +*.yml +/tsconfig.json +*.json diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..f6970ca --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,29 @@ +{ + "useTabs": false, + "tabWidth": 4, + "trailingComma": "none", + "semi": true, + "singleQuote": true, + "printWidth": 250, + "bracketSameLine": false, + "overrides": [ + { + "files": ["*.ts", "*.mts", "*.d.ts"], + "options": { + "parser": "typescript" + } + }, + { + "files": ["*.html"], + "options": { + "parser": "html" + } + }, + { + "files": ["*.component.html"], + "options": { + "parser": "angular" + } + } + ] +} diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..e58be7f --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-2022 PrimeTek + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..cc4588f --- /dev/null +++ b/README.md @@ -0,0 +1,59 @@ +# Sakai19 + +This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.0.5. + +## Development server + +To start a local development server, run: + +```bash +ng serve +``` + +Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files. + +## Code scaffolding + +Angular CLI includes powerful code scaffolding tools. To generate a new component, run: + +```bash +ng generate component component-name +``` + +For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run: + +```bash +ng generate --help +``` + +## Building + +To build the project run: + +```bash +ng build +``` + +This will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed. + +## Running unit tests + +To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command: + +```bash +ng test +``` + +## Running end-to-end tests + +For end-to-end (e2e) testing, run: + +```bash +ng e2e +``` + +Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs. + +## Additional Resources + +For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page. diff --git a/angular.json b/angular.json new file mode 100644 index 0000000..2cf381b --- /dev/null +++ b/angular.json @@ -0,0 +1,131 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "sakai-ng": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:application", + "options": { + "outputPath": "dist/sakai-ng", + "index": "src/index.html", + "browser": "src/main.ts", + "polyfills": [ + "zone.js", + "@angular/localize/init" + ], + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + { + "glob": "**/*", + "input": "public" + } + ], + "styles": [ + "src/assets/styles.scss" + ], + "scripts": [], + "localize": true + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environments.ts", + "with": "src/environments/environments.prod.ts" + } + ], + "outputHashing": "all" + }, + "staging": { + "fileReplacements": [ + { + "replace": "src/environments/environments.ts", + "with": "src/environments/environments.staging.ts" + } + ], + "outputHashing": "all" + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true + }, + "dev-de": { + "localize": ["de"] + }, + "en": { + "localize": ["en"] + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "buildTarget": "sakai-ng:build:production" + }, + "development": { + "buildTarget": "sakai-ng:build:development" + }, + "dev-de": { + "buildTarget": "sakai-ng:build:dev-de,development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n" + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": [ + "zone.js", + "zone.js/testing", + "@angular/localize/init" + ], + "tsConfig": "tsconfig.spec.json", + "inlineStyleLanguage": "scss", + "assets": [ + { + "glob": "**/*", + "input": "public" + } + ], + "styles": [ + "src/assets/styles.scss" + ], + "scripts": [] + } + } + }, + "i18n": { + "sourceLocale": "de-DE", + "locales": { + "de": { + "translation": "src/locale/messages.de.xlf" + }, + "en": { + "translation": "src/locale/messages.en.xlf" + } + } + } + } + }, + "cli": { + "analytics": false + } +} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..7750497 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,89 @@ +export default { + root: true, + ignorePatterns: ['**/dist/**'], + plugins: ['prettier'], + extends: ['prettier'], + rules: { + 'padding-line-between-statements': [ + 'error', + { blankLine: 'always', prev: ['const', 'let', 'var'], next: '*' }, + { blankLine: 'any', prev: ['const', 'let', 'var'], next: ['const', 'let', 'var'] }, + { blankLine: 'any', prev: ['case', 'default'], next: 'break' }, + { blankLine: 'any', prev: 'case', next: 'case' }, + { blankLine: 'always', prev: '*', next: 'return' }, + { blankLine: 'always', prev: 'block', next: '*' }, + { blankLine: 'always', prev: '*', next: 'block' }, + { blankLine: 'always', prev: 'block-like', next: '*' }, + { blankLine: 'always', prev: '*', next: 'block-like' }, + { blankLine: 'always', prev: ['import'], next: ['const', 'let', 'var'] } + ] + }, + overrides: [ + { + files: ['*.ts'], + parserOptions: { + project: ['tsconfig.json', 'e2e/tsconfig.json'], + createDefaultProgram: true + }, + extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:@angular-eslint/recommended', 'plugin:@angular-eslint/template/process-inline-templates', 'prettier'], + rules: { + '@angular-eslint/component-selector': [ + 'error', + { + type: 'element', + prefix: 'p', + style: 'kebab-case' + } + ], + '@angular-eslint/directive-selector': [ + 'error', + { + type: 'attribute', + prefix: 'p', + style: 'camelCase' + } + ], + '@angular-eslint/component-class-suffix': [ + 'error', + { + suffixes: [''] + } + ], + '@angular-eslint/template/eqeqeq': [ + 'error', + { + allowNullOrUndefined: true + } + ], + '@angular-eslint/no-host-metadata-property': 'off', + '@angular-eslint/no-output-on-prefix': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-inferrable-types': 'off', + 'arrow-body-style': ['error', 'as-needed'], + curly: 0, + '@typescript-eslint/member-ordering': [ + 'error', + { + default: ['public-static-field', 'static-field', 'instance-field', 'public-instance-method', 'public-static-field'] + } + ], + 'no-console': 0, + 'prefer-const': 0 + } + }, + { + files: ['*.html'], + extends: ['plugin:@angular-eslint/template/recommended', 'prettier'], + rules: {} + }, + { + files: ['*.js'], + rules: { + parserOptions: { + allowImportExportEverywhere: true + } + } + } + ] +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..bc05e79 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,19451 @@ +{ + "name": "sakai-ng", + "version": "20.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "sakai-ng", + "version": "20.0.0", + "dependencies": { + "@angular/animations": "^20", + "@angular/cdk": "^20.2.0", + "@angular/common": "^20", + "@angular/compiler": "^20", + "@angular/core": "^20", + "@angular/forms": "^20", + "@angular/material": "^20.2.0", + "@angular/platform-browser": "^20", + "@angular/platform-browser-dynamic": "^20", + "@angular/router": "^20", + "@primeuix/themes": "^1.2.1", + "@tailwindcss/postcss": "^4.1.11", + "chart.js": "4.4.2", + "keycloak-angular": "^20.0.0", + "keycloak-js": "^26.2.0", + "primeclt": "^0.1.5", + "primeicons": "^7.0.0", + "primeng": "^20", + "quill": "^2.0.3", + "rxjs": "~7.8.2", + "tailwindcss-primeui": "^0.6.1", + "tslib": "^2.8.1", + "zone.js": "~0.15.1" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^20", + "@angular/cli": "^20", + "@angular/compiler-cli": "^20", + "@angular/localize": "^20.2.0", + "@types/jasmine": "~5.1.0", + "autoprefixer": "^10.4.20", + "eslint": "^9.30.1", + "eslint-config-prettier": "^10.1.5", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-prefer-arrow": "^1.2.3", + "eslint-plugin-prettier": "^5.5.1", + "jasmine-core": "~5.8.0", + "karma": "~6.4.4", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.1", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "postcss": "^8.5.6", + "prettier": "^3.6.2", + "tailwindcss": "^4.1.11", + "typescript": "~5.8.3" + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.1.0.tgz", + "integrity": "sha512-sEyWjw28a/9iluA37KLGu8vjxEIlb60uxznfTUmXImy7H5NvbpSO6yYgmgH5KiD7j+zTUUihiST0jEP12IoXow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.35.0.tgz", + "integrity": "sha512-uUdHxbfHdoppDVflCHMxRlj49/IllPwwQ2cQ8DLC4LXr3kY96AHBpW0dMyi6ygkn2MtFCc6BxXCzr668ZRhLBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.35.0.tgz", + "integrity": "sha512-SunAgwa9CamLcRCPnPHx1V2uxdQwJGqb1crYrRWktWUdld0+B2KyakNEeVn5lln4VyeNtW17Ia7V7qBWyM/Skw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.35.0.tgz", + "integrity": "sha512-ipE0IuvHu/bg7TjT2s+187kz/E3h5ssfTtjpg1LbWMgxlgiaZIgTTbyynM7NfpSJSKsgQvCQxWjGUO51WSCu7w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.35.0.tgz", + "integrity": "sha512-UNbCXcBpqtzUucxExwTSfAe8gknAJ485NfPN6o1ziHm6nnxx97piIbcBQ3edw823Tej2Wxu1C0xBY06KgeZ7gA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.35.0.tgz", + "integrity": "sha512-/KWjttZ6UCStt4QnWoDAJ12cKlQ+fkpMtyPmBgSS2WThJQdSV/4UWcqCUqGH7YLbwlj3JjNirCu3Y7uRTClxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.35.0.tgz", + "integrity": "sha512-8oCuJCFf/71IYyvQQC+iu4kgViTODbXDk3m7yMctEncRSRV+u2RtDVlpGGfPlJQOrAY7OONwJlSHkmbbm2Kp/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.35.0.tgz", + "integrity": "sha512-FfmdHTrXhIduWyyuko1YTcGLuicVbhUyRjO3HbXE4aP655yKZgdTIfMhZ/V5VY9bHuxv/fGEh3Od1Lvv2ODNTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.35.0.tgz", + "integrity": "sha512-gPzACem9IL1Co8mM1LKMhzn1aSJmp+Vp434An4C0OBY4uEJRcqsLN3uLBlY+bYvFg8C8ImwM9YRiKczJXRk0XA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.35.0.tgz", + "integrity": "sha512-w9MGFLB6ashI8BGcQoVt7iLgDIJNCn4OIu0Q0giE3M2ItNrssvb8C0xuwJQyTy1OFZnemG0EB1OvXhIHOvQwWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.35.0.tgz", + "integrity": "sha512-AhrVgaaXAb8Ue0u2nuRWwugt0dL5UmRgS9LXe0Hhz493a8KFeZVUE56RGIV3hAa6tHzmAV7eIoqcWTQvxzlJeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.35.0.tgz", + "integrity": "sha512-diY415KLJZ6x1Kbwl9u96Jsz0OstE3asjXtJ9pmk1d+5gPuQ5jQyEsgC+WmEXzlec3iuVszm8AzNYYaqw6B+Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.35.0.tgz", + "integrity": "sha512-uydqnSmpAjrgo8bqhE9N1wgcB98psTRRQXcjc4izwMB7yRl9C8uuAQ/5YqRj04U0mMQ+fdu2fcNF6m9+Z1BzDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.35.0.tgz", + "integrity": "sha512-RgLX78ojYOrThJHrIiPzT4HW3yfQa0D7K+MQ81rhxqaNyNBu4F1r+72LNHYH/Z+y9I1Mrjrd/c/Ue5zfDgAEjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.2002.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2002.0.tgz", + "integrity": "sha512-PaBXFP1kdUuNtMie0lWnitlYbq8o1gz/s0YIa8oY1X3swOJ7bP6kBfxTb9opV5uXAOkXg2zCdnZ4Eu1aVkgPGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "20.2.0", + "rxjs": "7.8.2" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.2.0.tgz", + "integrity": "sha512-B3dlR9AnANyT8yfESODFYEDEGV6pMwozsfjsH0NFxrdrfB1BYTBKpgYkQWg2I1j48hf7YmetZgA1sa3gYOt1QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.2002.0", + "@angular-devkit/build-webpack": "0.2002.0", + "@angular-devkit/core": "20.2.0", + "@angular/build": "20.2.0", + "@babel/core": "7.28.3", + "@babel/generator": "7.28.3", + "@babel/helper-annotate-as-pure": "7.27.3", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-transform-async-generator-functions": "7.28.0", + "@babel/plugin-transform-async-to-generator": "7.27.1", + "@babel/plugin-transform-runtime": "7.28.3", + "@babel/preset-env": "7.28.3", + "@babel/runtime": "7.28.3", + "@discoveryjs/json-ext": "0.6.3", + "@ngtools/webpack": "20.2.0", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.21", + "babel-loader": "10.0.0", + "browserslist": "^4.21.5", + "copy-webpack-plugin": "13.0.1", + "css-loader": "7.1.2", + "esbuild-wasm": "0.25.9", + "fast-glob": "3.3.3", + "http-proxy-middleware": "3.0.5", + "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", + "karma-source-map-support": "1.4.0", + "less": "4.4.0", + "less-loader": "12.3.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.3.1", + "mini-css-extract-plugin": "2.9.4", + "open": "10.2.0", + "ora": "8.2.0", + "picomatch": "4.0.3", + "piscina": "5.1.3", + "postcss": "8.5.6", + "postcss-loader": "8.1.1", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.2", + "sass": "1.90.0", + "sass-loader": "16.0.5", + "semver": "7.7.2", + "source-map-loader": "5.0.0", + "source-map-support": "0.5.21", + "terser": "5.43.1", + "tree-kill": "1.2.2", + "tslib": "2.8.1", + "webpack": "5.101.2", + "webpack-dev-middleware": "7.4.2", + "webpack-dev-server": "5.2.2", + "webpack-merge": "6.0.1", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.25.9" + }, + "peerDependencies": { + "@angular/compiler-cli": "^20.0.0", + "@angular/core": "^20.0.0", + "@angular/localize": "^20.0.0", + "@angular/platform-browser": "^20.0.0", + "@angular/platform-server": "^20.0.0", + "@angular/service-worker": "^20.0.0", + "@angular/ssr": "^20.2.0", + "@web/test-runner": "^0.20.0", + "browser-sync": "^3.0.2", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "karma": "^6.3.0", + "ng-packagr": "^20.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "typescript": ">=5.8 <6.0" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, + "@angular/localize": { + "optional": true + }, + "@angular/platform-browser": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@angular/ssr": { + "optional": true + }, + "@web/test-runner": { + "optional": true + }, + "browser-sync": { + "optional": true + }, + "jest": { + "optional": true + }, + "jest-environment-jsdom": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.2002.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2002.0.tgz", + "integrity": "sha512-sON0IFOaZW5/bLXlMuKXOV5viaa7SAGHhdM4PXM6Fa0PPqPI6zZp2iqYpwETKpN8DfnLNxefdysvCn9DbHuNhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/architect": "0.2002.0", + "rxjs": "7.8.2" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^5.0.2" + } + }, + "node_modules/@angular-devkit/core": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.2.0.tgz", + "integrity": "sha512-3CM6Zsr09Kf92ItFkxijlnC4+ZOgkxdCk0vFYvuw9UuvTDNwyIqJi6693PRPRbcXgpdY2vs6u99elSvQVmoEEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.3", + "rxjs": "7.8.2", + "source-map": "0.7.6" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.2.0.tgz", + "integrity": "sha512-TCPIN6Bd04oGuNocETmsd9hzGYrjrivisbMKb0WOuDi3OnCkmWqsPR+QA2kYwTOGqG3HXkz/z3CA0g04M2fgrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "20.2.0", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "8.2.0", + "rxjs": "7.8.2" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/animations": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.2.0.tgz", + "integrity": "sha512-byenV4zWPCP8COriHO+1FGCG/3+xUqzX4VSWashWsGHuXv/AKboh88qVL4xGvDGESEdqN/tpiU9KBonue+Axvg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/common": "20.2.0", + "@angular/core": "20.2.0" + } + }, + "node_modules/@angular/build": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.2.0.tgz", + "integrity": "sha512-/Yhqhg01UvX0E+tx4WAeK3AnwpZLqcw+XKTmsPsH5rbqpLKNRR9XsC3PJ4qBFU1u9/Lh13mmmr1+pG2p8ixMug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.2002.0", + "@babel/core": "7.28.3", + "@babel/helper-annotate-as-pure": "7.27.3", + "@babel/helper-split-export-declaration": "7.24.7", + "@inquirer/confirm": "5.1.14", + "@vitejs/plugin-basic-ssl": "2.1.0", + "beasties": "0.3.5", + "browserslist": "^4.23.0", + "esbuild": "0.25.9", + "https-proxy-agent": "7.0.6", + "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", + "listr2": "9.0.1", + "magic-string": "0.30.17", + "mrmime": "2.0.1", + "parse5-html-rewriting-stream": "8.0.0", + "picomatch": "4.0.3", + "piscina": "5.1.3", + "rolldown": "1.0.0-beta.32", + "sass": "1.90.0", + "semver": "7.7.2", + "source-map-support": "0.5.21", + "tinyglobby": "0.2.14", + "vite": "7.1.2", + "watchpack": "2.4.4" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "lmdb": "3.4.2" + }, + "peerDependencies": { + "@angular/compiler": "^20.0.0", + "@angular/compiler-cli": "^20.0.0", + "@angular/core": "^20.0.0", + "@angular/localize": "^20.0.0", + "@angular/platform-browser": "^20.0.0", + "@angular/platform-server": "^20.0.0", + "@angular/service-worker": "^20.0.0", + "@angular/ssr": "^20.2.0", + "karma": "^6.4.0", + "less": "^4.2.0", + "ng-packagr": "^20.0.0", + "postcss": "^8.4.0", + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "tslib": "^2.3.0", + "typescript": ">=5.8 <6.0", + "vitest": "^3.1.1" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, + "@angular/localize": { + "optional": true + }, + "@angular/platform-browser": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@angular/ssr": { + "optional": true + }, + "karma": { + "optional": true + }, + "less": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tailwindcss": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/@angular/cdk": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-20.2.0.tgz", + "integrity": "sha512-BZkhRMr3nEOHHCzEgKZM537G4aq0VAwoejhYn7oIvY0UU+arHKz+U7Gc44KH5GaAgVLojtJtkFXsArifzYUwzw==", + "license": "MIT", + "dependencies": { + "parse5": "^8.0.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^20.0.0 || ^21.0.0", + "@angular/core": "^20.0.0 || ^21.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cli": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.2.0.tgz", + "integrity": "sha512-p62hkuQOxf5kJsVq6AT7B1MHYo1uPGoZV4lf47qOrLjl0WANwfxEgLvyuVgL47ylnINbPnITeeUdoadVn4t1sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/architect": "0.2002.0", + "@angular-devkit/core": "20.2.0", + "@angular-devkit/schematics": "20.2.0", + "@inquirer/prompts": "7.8.2", + "@listr2/prompt-adapter-inquirer": "3.0.1", + "@modelcontextprotocol/sdk": "1.17.3", + "@schematics/angular": "20.2.0", + "@yarnpkg/lockfile": "1.1.0", + "algoliasearch": "5.35.0", + "ini": "5.0.0", + "jsonc-parser": "3.3.1", + "listr2": "9.0.1", + "npm-package-arg": "13.0.0", + "pacote": "21.0.0", + "resolve": "1.22.10", + "semver": "7.7.2", + "yargs": "18.0.0", + "zod": "3.25.76" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/common": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.2.0.tgz", + "integrity": "sha512-mh0tF+QjCx1udoeBP4adOXVHVZ1E8okzT/yybYamD5abLiaMSSh4P50JTBuPmJgqqWo9MXDLOLTnKqBSv/FbZw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/core": "20.2.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.2.0.tgz", + "integrity": "sha512-1kI7VFvuTODX/1TusUH/L1N+SDcDj9m/j/0Ewq+IKkizS4eOjgx+7UGBuTjw9yWZ7QQGEPdoQG9qsM2dhs9dUQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@angular/compiler-cli": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.2.0.tgz", + "integrity": "sha512-mZ7R7tMm1KMBZSCOKSeE9gb37u2ZGc5YlQ8bIgKo+Uik2uvXVDDG1NC/Qe/medYCriSGmI6HqfFce50Nx8/Uxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.28.3", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^4.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^18.0.0" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/compiler": "20.2.0", + "typescript": ">=5.8 <6.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@angular/core": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.2.0.tgz", + "integrity": "sha512-4qXWdKYRFNlc1FfgNfYF5189rZ8BnvU5DN2iH2/djRdRJikpm3+JeEuFW7GFjF9dyjOE97x0S3dbVHs0c5mcYA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/compiler": "20.2.0", + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.15.0" + }, + "peerDependenciesMeta": { + "@angular/compiler": { + "optional": true + }, + "zone.js": { + "optional": true + } + } + }, + "node_modules/@angular/forms": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.2.0.tgz", + "integrity": "sha512-vG5FIMCGNDMbaWPSazd5Jv14cW+aVUg8G5ikWRSGU1aou7uzmzT2n+zpg4PDSxOFeNXuSZV3n5zJ5prM1NaYJg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/common": "20.2.0", + "@angular/core": "20.2.0", + "@angular/platform-browser": "20.2.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/localize": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-20.2.0.tgz", + "integrity": "sha512-XKYinzSPk72Eae60HpP5yWPLf6Yo/y5esd20/gRRpZ0rQMbRFPtWoHnAk+5jOCeQaBaxx25MX312TVLxjS5+0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.28.3", + "@types/babel__core": "7.20.5", + "tinyglobby": "^0.2.12", + "yargs": "^18.0.0" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/compiler": "20.2.0", + "@angular/compiler-cli": "20.2.0" + } + }, + "node_modules/@angular/material": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-20.2.0.tgz", + "integrity": "sha512-lwkV1VP7PkC/dhPRXLeYaNtPaIAOjI8/zfpkPnmxJuGA7t7hkngtTxmY+6gElDAtfnle9ZJulW4KndKGr3ng/g==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "20.2.0", + "@angular/common": "^20.0.0 || ^21.0.0", + "@angular/core": "^20.0.0 || ^21.0.0", + "@angular/forms": "^20.0.0 || ^21.0.0", + "@angular/platform-browser": "^20.0.0 || ^21.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.2.0.tgz", + "integrity": "sha512-0CyDeXLQixXAWRBq4vfwALo0a0/igtUH1bFkHBUy4u6Nku7S8K7GG/HDN0CGlpep9Xz9o0ghF1zfZHfmEQxlmg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/animations": "20.2.0", + "@angular/common": "20.2.0", + "@angular/core": "20.2.0" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.2.0.tgz", + "integrity": "sha512-AwUO7rceQ6d1icKiWcDiN3xs/UOKIqco1YXXvQVs+A1Ej18XwtU36Dn3OmXK0oug9SbPzbXQLZAHEaq8a8KLCg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/common": "20.2.0", + "@angular/compiler": "20.2.0", + "@angular/core": "20.2.0", + "@angular/platform-browser": "20.2.0" + } + }, + "node_modules/@angular/router": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.2.0.tgz", + "integrity": "sha512-pUrRVdgHkkd1b3GqHpuq/4YJTuNYGXWykg9t5MUjnt94H6gynpyEmYEZB+RNqwTTZLHgRRv9Y7JMRbwIdupNpA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/common": "20.2.0", + "@angular/core": "20.2.0", + "@angular/platform-browser": "20.2.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", + "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.3", + "@babel/parser": "^7.28.3", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", + "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz", + "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", + "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", + "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", + "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.3.tgz", + "integrity": "sha512-DoEWC5SuxuARF2KdKmGUq3ghfPMO6ZzR12Dnp5gubwbeWJo4dbNWXJPVlwvh4Zlq6Z7YVvL8VFxeSOJgjsx4Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", + "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.3.tgz", + "integrity": "sha512-K3/M/a4+ESb5LEldjQb+XSrpY0nF+ZBFlTCbSnKaYAMfD8v33O6PMs4uYnOk19HlcsI8WMu3McdFPTiQHF/1/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz", + "integrity": "sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz", + "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.3", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.3", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", + "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz", + "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.3", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.17.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", + "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", + "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/js": { + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", + "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.2", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.1.tgz", + "integrity": "sha512-bevKGO6kX1eM/N+pdh9leS5L7TBF4ICrzi9a+cbWkrxeAeIcwlo/7OfWGCDERdRCI2/Q6tjltX4bt07ALHDwFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.14", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.14.tgz", + "integrity": "sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.1.15", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.15.tgz", + "integrity": "sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.17", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.17.tgz", + "integrity": "sha512-r6bQLsyPSzbWrZZ9ufoWL+CztkSatnJ6uSxqd6N+o41EZC51sQeWOzI6s5jLb+xxTWxl7PlUppqm8/sow241gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/external-editor": "^1.0.1", + "@inquirer/type": "^3.0.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.17.tgz", + "integrity": "sha512-PSqy9VmJx/VbE3CT453yOfNa+PykpKg/0SYP7odez1/NWBGuDXgPhp4AeGYYKjhLn5lUUavVS/JbeYMPdH50Mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz", + "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.0", + "iconv-lite": "^0.6.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", + "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.1.tgz", + "integrity": "sha512-tVC+O1rBl0lJpoUZv4xY+WGWY8V5b0zxU1XDsMsIHYregdh7bN5X5QnIONNBAl0K765FYlAfNHS2Bhn7SSOVow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.17.tgz", + "integrity": "sha512-GcvGHkyIgfZgVnnimURdOueMk0CztycfC8NZTiIY9arIAkeOgt6zG57G+7vC59Jns3UX27LMkPKnKWAOF5xEYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.17.tgz", + "integrity": "sha512-DJolTnNeZ00E1+1TW+8614F7rOJJCM4y4BAGQ3Gq6kQIG+OJ4zr3GLjIjVVJCbKsk2jmkmv6v2kQuN/vriHdZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", + "ansi-escapes": "^4.3.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.2.tgz", + "integrity": "sha512-nqhDw2ZcAUrKNPwhjinJny903bRhI0rQhiDz1LksjeRxqa36i3l75+4iXbOy0rlDpLJGxqtgoPavQjmmyS5UJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.2.1", + "@inquirer/confirm": "^5.1.14", + "@inquirer/editor": "^4.2.17", + "@inquirer/expand": "^4.0.17", + "@inquirer/input": "^4.2.1", + "@inquirer/number": "^3.0.17", + "@inquirer/password": "^4.0.17", + "@inquirer/rawlist": "^4.1.5", + "@inquirer/search": "^3.1.0", + "@inquirer/select": "^4.3.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.5.tgz", + "integrity": "sha512-R5qMyGJqtDdi4Ht521iAkNqyB6p2UPuZUbMifakg1sWtu24gc2Z8CJuw8rP081OckNDMgtDCuLe42Q2Kr3BolA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.0.tgz", + "integrity": "sha512-PMk1+O/WBcYJDq2H7foV0aAZSmDdkzZB9Mw2v/DmONRJopwA/128cS9M/TXWLKKdEQKZnKwBzqu2G4x/2Nqx8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.1.tgz", + "integrity": "sha512-Gfl/5sqOF5vS/LIrSndFgOh7jgoe0UXEizDqahFRkq5aJBLegZ6WjuMh/hVEJwlFQjyLq1z9fRtvUMkb7jM1LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz", + "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "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-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/@isaacs/cliui/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/@isaacs/cliui/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/@isaacs/cliui/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/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "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/buffers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.0.0.tgz", + "integrity": "sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==", + "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/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "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.11.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.11.0.tgz", + "integrity": "sha512-nLqSTAYwpk+5ZQIoVp7pfd/oSKNWlEdvTq2LzVA4r2wtWZg6v+5u0VgBOaDJuUfNOuw/4Ysq6glN5QKSrOCgrA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.1", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.1.tgz", + "integrity": "sha512-tJpwQfuBuxqZlyoJOSZcqf7OUmiYQ6MiPNmOv4KbZdXE/DdvBSSAwhos0zIlJU/AXxC8XpuO8p08bh2fIl+RKA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/util": "^1.3.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "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/@listr2/prompt-adapter-inquirer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-3.0.1.tgz", + "integrity": "sha512-3XFmGwm3u6ioREG+ynAQB7FoxfajgQnMhIu8wC5eo/Lsih4aKDg0VuIMGaOsYn7hJSJagSeaD4K8yfpkEoDEmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/type": "^3.0.7" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@inquirer/prompts": ">= 3 < 8", + "listr2": "9.0.1" + } + }, + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.2.tgz", + "integrity": "sha512-NK80WwDoODyPaSazKbzd3NEJ3ygePrkERilZshxBViBARNz21rmediktGHExoj9n5t9+ChlgLlxecdFKLCuCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.2.tgz", + "integrity": "sha512-zevaowQNmrp3U7Fz1s9pls5aIgpKRsKb3dZWDINtLiozh3jZI9fBrI19lYYBxqdyiIyNdlyiidPnwPShj4aK+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.2.tgz", + "integrity": "sha512-OmHCULY17rkx/RoCoXlzU7LyR8xqrksgdYWwtYa14l/sseezZ8seKWXcogHcjulBddER5NnEFV4L/Jtr2nyxeg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.2.tgz", + "integrity": "sha512-ZBEfbNZdkneebvZs98Lq30jMY8V9IJzckVeigGivV7nTHJc+89Ctomp1kAIWKlwIG0ovCDrFI448GzFPORANYg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.2.tgz", + "integrity": "sha512-vL9nM17C77lohPYE4YaAQvfZCSVJSryE4fXdi8M7uWPBnU+9DJabgKVAeyDb84ZM2vcFseoBE4/AagVtJeRE7g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.2.tgz", + "integrity": "sha512-SXWjdBfNDze4ZPeLtYIzsIeDJDJ/SdsA0pEXcUBayUIMO0FQBHfVZZyHXQjjHr4cvOAzANBgIiqaXRwfMhzmLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.2.tgz", + "integrity": "sha512-IY+r3bxKW6Q6sIPiMC0L533DEfRJSXibjSI3Ft/w9Q8KQBNqEIvUFXt+09wV8S5BRk0a8uSF19YWxuRwEfI90g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.3.tgz", + "integrity": "sha512-JPwUKWSsbzx+DLFznf/QZ32Qa+ptfbUlHhRLrBQBAFu9iI1iYvizM4p+zhhRDceSsPutXp4z+R/HPVphlIiclg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.6", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@modelcontextprotocol/sdk/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/@modelcontextprotocol/sdk/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/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@napi-rs/nice": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz", + "integrity": "sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/nice-android-arm-eabi": "1.1.1", + "@napi-rs/nice-android-arm64": "1.1.1", + "@napi-rs/nice-darwin-arm64": "1.1.1", + "@napi-rs/nice-darwin-x64": "1.1.1", + "@napi-rs/nice-freebsd-x64": "1.1.1", + "@napi-rs/nice-linux-arm-gnueabihf": "1.1.1", + "@napi-rs/nice-linux-arm64-gnu": "1.1.1", + "@napi-rs/nice-linux-arm64-musl": "1.1.1", + "@napi-rs/nice-linux-ppc64-gnu": "1.1.1", + "@napi-rs/nice-linux-riscv64-gnu": "1.1.1", + "@napi-rs/nice-linux-s390x-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-musl": "1.1.1", + "@napi-rs/nice-openharmony-arm64": "1.1.1", + "@napi-rs/nice-win32-arm64-msvc": "1.1.1", + "@napi-rs/nice-win32-ia32-msvc": "1.1.1", + "@napi-rs/nice-win32-x64-msvc": "1.1.1" + } + }, + "node_modules/@napi-rs/nice-android-arm-eabi": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.1.1.tgz", + "integrity": "sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-android-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.1.1.tgz", + "integrity": "sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-darwin-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.1.1.tgz", + "integrity": "sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-darwin-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.1.1.tgz", + "integrity": "sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-freebsd-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.1.1.tgz", + "integrity": "sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.1.1.tgz", + "integrity": "sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-arm64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.1.1.tgz", + "integrity": "sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-arm64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.1.1.tgz", + "integrity": "sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-ppc64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.1.1.tgz", + "integrity": "sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-riscv64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.1.1.tgz", + "integrity": "sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-s390x-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.1.1.tgz", + "integrity": "sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-x64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.1.1.tgz", + "integrity": "sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-linux-x64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.1.1.tgz", + "integrity": "sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-openharmony-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-openharmony-arm64/-/nice-openharmony-arm64-1.1.1.tgz", + "integrity": "sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-win32-arm64-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.1.1.tgz", + "integrity": "sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-win32-ia32-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.1.1.tgz", + "integrity": "sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-win32-x64-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.1.1.tgz", + "integrity": "sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.3.tgz", + "integrity": "sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.5", + "@emnapi/runtime": "^1.4.5", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@ngtools/webpack": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.2.0.tgz", + "integrity": "sha512-+oRNsB8RfmDd4Mnr8AyJwU3GUyXalQcI9r3Hoi4OSyFncWJeOnpTAWErx2JomqAYkm8WkE0PoRxKnD0RxKQ30Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^20.0.0", + "typescript": ">=5.8 <6.0", + "webpack": "^5.54.0" + } + }, + "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==", + "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==", + "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==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", + "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/fs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", + "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/git": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-6.0.3.tgz", + "integrity": "sha512-GUYESQlxZRAdhs3UhbB6pVRNUELQOHXwK9ruDkwmCv2aZ5y0SApQzUJCg02p3A7Ue2J5hxvlk1YI53c00NmRyQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^8.0.0", + "ini": "^5.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^10.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz", + "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz", + "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-6.2.0.tgz", + "integrity": "sha512-rCNLSB/JzNvot0SEyXqWZ7tX2B5dD2a1br2Dp0vSYVo5jh8Z0EZ7lS9TsZ1UtziddB1UfNUaMCc538/HztnJGA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", + "proc-log": "^5.0.0", + "semver": "^7.5.3", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/package-json/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.2.tgz", + "integrity": "sha512-/bNJhjc+o6qL+Dwz/bqfTQClkEO5nTQ1ZEcdCkAQjhkZMHIh22LPG7fNh1enJP1NKWDqYiiABnjFCY7E0zHYtQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz", + "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-9.1.0.tgz", + "integrity": "sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "node-gyp": "^11.0.0", + "proc-log": "^5.0.0", + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@oxc-project/runtime": { + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.81.0.tgz", + "integrity": "sha512-zm/LDVOq9FEmHiuM8zO4DWirv0VP2Tv2VsgaiHby9nvpq+FVrcqNYgv+TysLKOITQXWZj/roluTxFvpkHP0Iuw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.81.0.tgz", + "integrity": "sha512-CnOqkybZK8z6Gx7Wb1qF7AEnSzbol1WwcIzxYOr8e91LytGOjo0wCpgoYWZo8sdbpqX+X+TJayIzo4Pv0R/KjA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@primeuix/styled": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@primeuix/styled/-/styled-0.7.2.tgz", + "integrity": "sha512-tIJ6byZezTYZ9YUICNSidQHOIQOQL3zeUgjwiX0JnBTK3+WCvy4DyCBcrJ94RtiX0WGFZSYNvaGaFkTo4jU8FQ==", + "license": "MIT", + "dependencies": { + "@primeuix/utils": "^0.6.1" + }, + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@primeuix/styles": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@primeuix/styles/-/styles-1.2.3.tgz", + "integrity": "sha512-+KwmQsLTYgVAqFADmO252btz40lstPML6r4QMNjxz4gLNCKVW3kPR0/aCouQx6/21+boXG1P68tu8Zk3FAKr2w==", + "license": "MIT", + "dependencies": { + "@primeuix/styled": "^0.7.2" + } + }, + "node_modules/@primeuix/themes": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@primeuix/themes/-/themes-1.2.3.tgz", + "integrity": "sha512-GLAU2h6lhgln2w10EQalUQlgwbgQ0xZoIOLMNGfIvqU4O09L282P7rwKCKQksvAGAFt1GoO/Q1NgBSxnttr7iA==", + "license": "MIT", + "dependencies": { + "@primeuix/styled": "^0.7.2" + } + }, + "node_modules/@primeuix/utils": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@primeuix/utils/-/utils-0.6.1.tgz", + "integrity": "sha512-tQL/ZOPgCdD+NTimlUmhyD0ey8J1XmpZE4hDHM+/fnuBicVVmlKOd5HpS748LcOVRUKbWjmEPdHX4hi5XZoC1Q==", + "license": "MIT", + "engines": { + "node": ">=12.11.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.32.tgz", + "integrity": "sha512-Gs+313LfR4Ka3hvifdag9r44WrdKQaohya7ZXUXzARF7yx0atzFlVZjsvxtKAw1Vmtr4hB/RjUD1jf73SW7zDw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.32.tgz", + "integrity": "sha512-W8oMqzGcI7wKPXUtS3WJNXzbghHfNiuM1UBAGpVb+XlUCgYRQJd2PRGP7D3WGql3rR3QEhUvSyAuCBAftPQw6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.32.tgz", + "integrity": "sha512-pM4c4sKUk37noJrnnDkJknLhCsfZu7aWyfe67bD0GQHfzAPjV16wPeD9CmQg4/0vv+5IfHYaa4VE536xbA+W0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.32.tgz", + "integrity": "sha512-M8SUgFlYb5kJJWcFC8gUMRiX4WLFxPKMed3SJ2YrxontgIrEcpizPU8nLNVsRYEStoSfKHKExpQw3OP6fm+5bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.32.tgz", + "integrity": "sha512-FuQpbNC/hE//bvv29PFnk0AtpJzdPdYl5CMhlWPovd9g3Kc3lw9TrEPIbL7gRPUdhKAiq6rVaaGvOnXxsa0eww==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.32.tgz", + "integrity": "sha512-hRZygRlaGCjcNTNY9GV7dDI18sG1dK3cc7ujHq72LoDad23zFDUGMQjiSxHWK+/r92iMV+j2MiHbvzayxqynsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.32.tgz", + "integrity": "sha512-HzgT6h+CXLs+GKAU0Wvkt3rvcv0CmDBsDjlPhh4GHysOKbG9NjpKYX2zvjx671E9pGbTvcPpwy7gGsy7xpu+8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.32.tgz", + "integrity": "sha512-Ab/wbf6gdzphDbsg51UaxsC93foQ7wxhtg0SVCXd25BrV4MAJ1HoDtKN/f4h0maFmJobkqYub2DlmoasUzkvBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.32.tgz", + "integrity": "sha512-VoxqGEfh5A1Yx+zBp/FR5QwAbtzbuvky2SVc+ii4g1gLD4zww6mt/hPi5zG+b88zYPFBKHpxMtsz9cWqXU5V5Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.32.tgz", + "integrity": "sha512-qZ1ViyOUDGbiZrSAJ/FIAhYUElDfVxxFW6DLT/w4KeoZN3HsF4jmRP95mXtl51/oGrqzU9l9Q2f7/P4O/o2ZZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.32.tgz", + "integrity": "sha512-hEkG3wD+f3wytV0lqwb/uCrXc4r4Ny/DWJFJPfQR3VeMWplhWGgSHNwZc2Q7k86Yi36f9NNzzWmrIuvHI9lCVw==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.32.tgz", + "integrity": "sha512-k3MvDf8SiA7uP2ikP0unNouJ2YCrnwi7xcVW+RDgMp5YXVr3Xu6svmT3HGn0tkCKUuPmf+uy8I5uiHt5qWQbew==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rolldown/binding-win32-ia32-msvc": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0-beta.32.tgz", + "integrity": "sha512-wAi/FxGh7arDOUG45UmnXE1sZUa0hY4cXAO2qWAjFa3f7bTgz/BqwJ7XN5SUezvAJPNkME4fEpInfnBvM25a0w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.32.tgz", + "integrity": "sha512-Ej0i4PZk8ltblZtzVK8ouaGUacUtxRmTm5S9794mdyU/tYxXjAJNseOfxrnHpMWKjMDrOKbqkPqJ52T9NR4LQQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.32.tgz", + "integrity": "sha512-QReCdvxiUZAPkvp1xpAg62IeNzykOFA6syH2CnClif4YmALN1XKpB39XneL80008UbtMShthSVDKmrx05N1q/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.4.tgz", + "integrity": "sha512-B2wfzCJ+ps/OBzRjeds7DlJumCU3rXMxJJS1vzURyj7+KBHGONm7c9q1TfdBl4vCuNMkDvARn3PBl2wZzuR5mw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.4.tgz", + "integrity": "sha512-FGJYXvYdn8Bs6lAlBZYT5n+4x0ciEp4cmttsvKAZc/c8/JiPaQK8u0c/86vKX8lA7OY/+37lIQSe0YoAImvBAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.4.tgz", + "integrity": "sha512-/9qwE/BM7ATw/W/OFEMTm3dmywbJyLQb4f4v5nmOjgYxPIGpw7HaxRi6LnD4Pjn/q7k55FGeHe1/OD02w63apA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.4.tgz", + "integrity": "sha512-QkWfNbeRuzFnv2d0aPlrzcA3Ebq2mE8kX/5Pl7VdRShbPBjSnom7dbT8E3Jmhxo2RL784hyqGvR5KHavCJQciw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.4.tgz", + "integrity": "sha512-+ToyOMYnSfV8D+ckxO6NthPln/PDNp1P6INcNypfZ7muLmEvPKXqduUiD8DlJpMMT8LxHcE5W0dK9kXfJke9Zw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.4.tgz", + "integrity": "sha512-cGT6ey/W+sje6zywbLiqmkfkO210FgRz7tepWAzzEVgQU8Hn91JJmQWNqs55IuglG8sJdzk7XfNgmGRtcYlo1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.4.tgz", + "integrity": "sha512-9fhTJyOb275w5RofPSl8lpr4jFowd+H4oQKJ9XTYzD1JWgxdZKE8bA6d4npuiMemkecQOcigX01FNZNCYnQBdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.4.tgz", + "integrity": "sha512-+6kCIM5Zjvz2HwPl/udgVs07tPMIp1VU2Y0c72ezjOvSvEfAIWsUgpcSDvnC7g9NrjYR6X9bZT92mZZ90TfvXw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.4.tgz", + "integrity": "sha512-SWuXdnsayCZL4lXoo6jn0yyAj7TTjWE4NwDVt9s7cmu6poMhtiras5c8h6Ih6Y0Zk6Z+8t/mLumvpdSPTWub2Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.4.tgz", + "integrity": "sha512-vDknMDqtMhrrroa5kyX6tuC0aRZZlQ+ipDfbXd2YGz5HeV2t8HOl/FDAd2ynhs7Ki5VooWiiZcCtxiZ4IjqZwQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.4.tgz", + "integrity": "sha512-mCBkjRZWhvjtl/x+Bd4fQkWZT8canStKDxGrHlBiTnZmJnWygGcvBylzLVCZXka4dco5ymkWhZlLwKCGFF4ivw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.4.tgz", + "integrity": "sha512-YMdz2phOTFF+Z66dQfGf0gmeDSi5DJzY5bpZyeg9CPBkV9QDzJ1yFRlmi/j7WWRf3hYIWrOaJj5jsfwgc8GTHQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.4.tgz", + "integrity": "sha512-r0WKLSfFAK8ucG024v2yiLSJMedoWvk8yWqfNICX28NHDGeu3F/wBf8KG6mclghx4FsLePxJr/9N8rIj1PtCnw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.4.tgz", + "integrity": "sha512-IaizpPP2UQU3MNyPH1u0Xxbm73D+4OupL0bjo4Hm0496e2wg3zuvoAIhubkD1NGy9fXILEExPQy87mweujEatA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.4.tgz", + "integrity": "sha512-aCM29orANR0a8wk896p6UEgIfupReupnmISz6SUwMIwTGaTI8MuKdE0OD2LvEg8ondDyZdMvnaN3bW4nFbATPA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.4.tgz", + "integrity": "sha512-0Xj1vZE3cbr/wda8d/m+UeuSL+TDpuozzdD4QaSzu/xSOMK0Su5RhIkF7KVHFQsobemUNHPLEcYllL7ZTCP/Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.4.tgz", + "integrity": "sha512-kM/orjpolfA5yxsx84kI6bnK47AAZuWxglGKcNmokw2yy9i5eHY5UAjcX45jemTJnfHAWo3/hOoRqEeeTdL5hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.4.tgz", + "integrity": "sha512-cNLH4psMEsWKILW0isbpQA2OvjXLbKvnkcJFmqAptPQbtLrobiapBJVj6RoIvg6UXVp5w0wnIfd/Q56cNpF+Ew==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.4.tgz", + "integrity": "sha512-OiEa5lRhiANpv4SfwYVgQ3opYWi/QmPDC5ve21m8G9pf6ZO+aX1g2EEF1/IFaM1xPSP7mK0msTRXlPs6mIagkg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.4.tgz", + "integrity": "sha512-IKL9mewGZ5UuuX4NQlwOmxPyqielvkAPUS2s1cl6yWjjQvyN3h5JTdVFGD5Jr5xMjRC8setOfGQDVgX8V+dkjg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@schematics/angular": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.2.0.tgz", + "integrity": "sha512-7sZVj7hOcytQrPE17ixjzul9ih81IfXGcEZvr7fT77qy7Hm5rbMjxqSYxCTf3kAyBFRSLq/E8GTapPAjk2coOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "20.2.0", + "@angular-devkit/schematics": "20.2.0", + "jsonc-parser": "3.3.1" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-3.1.0.tgz", + "integrity": "sha512-Mm1E3/CmDDCz3nDhFKTuYdB47EdRFRQMOE/EAbiG1MJW77/w1b3P7Qx7JSrVJs8PfwOLOVcKQCHErIwCTyPbag==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.4.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@sigstore/core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-2.0.0.tgz", + "integrity": "sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.4.3.tgz", + "integrity": "sha512-fk2zjD9117RL9BjqEwF7fwv7Q/P9yGsMV4MUJZ/DocaQJ6+3pKr+syBq1owU5Q5qGw5CUbXzm+4yJ2JVRDQeSA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-3.1.0.tgz", + "integrity": "sha512-knzjmaOHOov1Ur7N/z4B1oPqZ0QX5geUfhrVaqVlu+hl0EAoL4o+l0MSULINcD5GCWe3Z0+YJO8ues6vFlW0Yw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.0", + "make-fetch-happen": "^14.0.2", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-3.1.1.tgz", + "integrity": "sha512-eFFvlcBIoGwVkkwmTi/vEQFSva3xs5Ot3WmBcjgjVdiaoelBLQaQ/ZBfhlG0MnG0cmTYScPpk7eDdGDWUcFUmg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.4.1", + "tuf-js": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@sigstore/verify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-2.1.1.tgz", + "integrity": "sha512-hVJD77oT67aowHxwT4+M6PGOp+E2LtLdTK3+FC0lBO9T7sYwItDMXZ7Z07IDCvR1M717a4axbIWckrW67KMP/w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.12.tgz", + "integrity": "sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.5.1", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.12" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.12.tgz", + "integrity": "sha512-gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.12", + "@tailwindcss/oxide-darwin-arm64": "4.1.12", + "@tailwindcss/oxide-darwin-x64": "4.1.12", + "@tailwindcss/oxide-freebsd-x64": "4.1.12", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.12", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.12", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.12", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.12", + "@tailwindcss/oxide-linux-x64-musl": "4.1.12", + "@tailwindcss/oxide-wasm32-wasi": "4.1.12", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.12", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.12" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.12.tgz", + "integrity": "sha512-oNY5pq+1gc4T6QVTsZKwZaGpBb2N1H1fsc1GD4o7yinFySqIuRZ2E4NvGasWc6PhYJwGK2+5YT1f9Tp80zUQZQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.12.tgz", + "integrity": "sha512-cq1qmq2HEtDV9HvZlTtrj671mCdGB93bVY6J29mwCyaMYCP/JaUBXxrQQQm7Qn33AXXASPUb2HFZlWiiHWFytw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.12.tgz", + "integrity": "sha512-6UCsIeFUcBfpangqlXay9Ffty9XhFH1QuUFn0WV83W8lGdX8cD5/+2ONLluALJD5+yJ7k8mVtwy3zMZmzEfbLg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.12.tgz", + "integrity": "sha512-JOH/f7j6+nYXIrHobRYCtoArJdMJh5zy5lr0FV0Qu47MID/vqJAY3r/OElPzx1C/wdT1uS7cPq+xdYYelny1ww==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.12.tgz", + "integrity": "sha512-v4Ghvi9AU1SYgGr3/j38PD8PEe6bRfTnNSUE3YCMIRrrNigCFtHZ2TCm8142X8fcSqHBZBceDx+JlFJEfNg5zQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.12.tgz", + "integrity": "sha512-YP5s1LmetL9UsvVAKusHSyPlzSRqYyRB0f+Kl/xcYQSPLEw/BvGfxzbH+ihUciePDjiXwHh+p+qbSP3SlJw+6g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.12.tgz", + "integrity": "sha512-V8pAM3s8gsrXcCv6kCHSuwyb/gPsd863iT+v1PGXC4fSL/OJqsKhfK//v8P+w9ThKIoqNbEnsZqNy+WDnwQqCA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.12.tgz", + "integrity": "sha512-xYfqYLjvm2UQ3TZggTGrwxjYaLB62b1Wiysw/YE3Yqbh86sOMoTn0feF98PonP7LtjsWOWcXEbGqDL7zv0uW8Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.12.tgz", + "integrity": "sha512-ha0pHPamN+fWZY7GCzz5rKunlv9L5R8kdh+YNvP5awe3LtuXb5nRi/H27GeL2U+TdhDOptU7T6Is7mdwh5Ar3A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.12.tgz", + "integrity": "sha512-4tSyu3dW+ktzdEpuk6g49KdEangu3eCYoqPhWNsZgUhyegEda3M9rG0/j1GV/JjVVsj+lG7jWAyrTlLzd/WEBg==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.5", + "@emnapi/runtime": "^1.4.5", + "@emnapi/wasi-threads": "^1.0.4", + "@napi-rs/wasm-runtime": "^0.2.12", + "@tybys/wasm-util": "^0.10.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.12.tgz", + "integrity": "sha512-iGLyD/cVP724+FGtMWslhcFyg4xyYyM+5F4hGvKA7eifPkXHRAUDFaimu53fpNg9X8dfP75pXx/zFt/jlNF+lg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.12.tgz", + "integrity": "sha512-NKIh5rzw6CpEodv/++r0hGLlfgT/gFN+5WNdZtvh6wpU2BpGNgdjvj6H2oFc8nCM839QM1YOhjpgbAONUb4IxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.12.tgz", + "integrity": "sha512-5PpLYhCAwf9SJEeIsSmCDLgyVfdBhdBpzX1OJ87anT9IVR0Z9pjM0FNixCAUAHGnMBGB8K99SwAheXrT0Kh6QQ==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.12", + "@tailwindcss/oxide": "4.1.12", + "postcss": "^8.4.41", + "tailwindcss": "4.1.12" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.22.0.tgz", + "integrity": "sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.3", + "mkdirp": "^3.0.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@ts-morph/common/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-3.0.1.tgz", + "integrity": "sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", + "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "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/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "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.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", + "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "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.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/inquirer": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-9.0.9.tgz", + "integrity": "sha512-/mWx5136gts2Z2e5izdoRCo46lPp5TMs9R15GTSsgg/XnZyxDWVqoVU3R9lWnccKpqwsJLvRoxbCjoJtZB7DSw==", + "license": "MIT", + "dependencies": { + "@types/through": "*", + "rxjs": "^7.2.0" + } + }, + "node_modules/@types/jasmine": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.9.tgz", + "integrity": "sha512-8t4HtkW4wxiPVedMpeZ63n3vlWxEIquo/zc1Tm8ElU+SqVV7+D3Na2PWaJUp179AzTragMWVwkMv7mvty0NfyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "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": "24.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz", + "integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.10.0" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.13.tgz", + "integrity": "sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "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.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "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.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", + "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "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/through": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.33.tgz", + "integrity": "sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.0.tgz", + "integrity": "sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "peerDependencies": { + "vite": "^6.0.0 || ^7.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "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/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/abbrev": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "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/algoliasearch": { + "version": "5.35.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.35.0.tgz", + "integrity": "sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.1.0", + "@algolia/client-abtesting": "5.35.0", + "@algolia/client-analytics": "5.35.0", + "@algolia/client-common": "5.35.0", + "@algolia/client-insights": "5.35.0", + "@algolia/client-personalization": "5.35.0", + "@algolia/client-query-suggestions": "5.35.0", + "@algolia/client-search": "5.35.0", + "@algolia/ingestion": "1.35.0", + "@algolia/monitoring": "1.35.0", + "@algolia/recommend": "5.35.0", + "@algolia/requester-browser-xhr": "5.35.0", + "@algolia/requester-fetch": "5.35.0", + "@algolia/requester-node-http": "5.35.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", + "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.1.0.tgz", + "integrity": "sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "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/anymatch/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/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-loader": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5.61.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "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/beasties": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.5.tgz", + "integrity": "sha512-NaWu+f4YrJxEttJSm16AzMIFtVldCvaJ68b1L098KpqXmxt9xOLtKoLkKxb8ekhOrLqEJAbvT6n6SEvB/sac7A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "css-select": "^6.0.0", + "css-what": "^7.0.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "htmlparser2": "^10.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-media-query-parser": "^0.2.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "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/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.25.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.3.tgz", + "integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==", + "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.30001735", + "electron-to-chromium": "^1.5.204", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "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.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/cacache": { + "version": "19.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz", + "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^4.0.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^12.0.0", + "tar": "^7.4.3", + "unique-filename": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001735", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz", + "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==", + "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==", + "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/chardet": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", + "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/chart.js": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.2.tgz", + "integrity": "sha512-6GD7iKwFpP5kbSD4MeRRRlTnQvxfQREy36uEtm1hzHzcOqwWx0YEHuspuoNlslu+nciLIB7fjjsHkUv/FzFcOg==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "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/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cliui/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/cliui/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "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/clone-deep/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/code-block-writer": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz", + "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==", + "license": "MIT" + }, + "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==", + "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==", + "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/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "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.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/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/compression/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/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "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/connect/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/connect/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/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/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/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/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/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "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/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", + "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-parent": "^6.0.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2", + "tinyglobby": "^0.2.12" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.45.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.0.tgz", + "integrity": "sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.25.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "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/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-select": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", + "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^7.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "nth-check": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", + "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/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/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "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-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "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/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "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/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.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": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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.5.207", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.207.tgz", + "integrity": "sha512-mryFrrL/GXDTmAtIVMVf+eIXM09BBPlO5IQ7lUyKmK8d+A4VpRGG+M3ofoVef6qyF8s60rJei8ymlJxjUA8Faw==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/engine.io": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/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/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/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/engine.io/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/engine.io/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/engine.io/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "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 + } + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz", + "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "punycode": "^1.4.1", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.9", + "@esbuild/android-arm": "0.25.9", + "@esbuild/android-arm64": "0.25.9", + "@esbuild/android-x64": "0.25.9", + "@esbuild/darwin-arm64": "0.25.9", + "@esbuild/darwin-x64": "0.25.9", + "@esbuild/freebsd-arm64": "0.25.9", + "@esbuild/freebsd-x64": "0.25.9", + "@esbuild/linux-arm": "0.25.9", + "@esbuild/linux-arm64": "0.25.9", + "@esbuild/linux-ia32": "0.25.9", + "@esbuild/linux-loong64": "0.25.9", + "@esbuild/linux-mips64el": "0.25.9", + "@esbuild/linux-ppc64": "0.25.9", + "@esbuild/linux-riscv64": "0.25.9", + "@esbuild/linux-s390x": "0.25.9", + "@esbuild/linux-x64": "0.25.9", + "@esbuild/netbsd-arm64": "0.25.9", + "@esbuild/netbsd-x64": "0.25.9", + "@esbuild/openbsd-arm64": "0.25.9", + "@esbuild/openbsd-x64": "0.25.9", + "@esbuild/openharmony-arm64": "0.25.9", + "@esbuild/sunos-x64": "0.25.9", + "@esbuild/win32-arm64": "0.25.9", + "@esbuild/win32-ia32": "0.25.9", + "@esbuild/win32-x64": "0.25.9" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.25.9.tgz", + "integrity": "sha512-Jpv5tCSwQg18aCqCRD3oHIX/prBhXMDapIoG//A+6+dV0e7KQMGFg85ihJ5T1EeMjbZjON3TqFy0VrGAnIHLDA==", + "dev": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-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/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", + "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.33.0", + "@eslint/plugin-kit": "^0.3.5", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prefer-arrow": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", + "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=2.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/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/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/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/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/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=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/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.5.tgz", + "integrity": "sha512-bSRG85ZrMdmWtm7qkF9He9TNRzc/Bm99gEJMaQoHJ9E6Kv9QBbsldh2oMj7iXmYNEAVvNgvv5vPorG6W+XtBhQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", + "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "license": "MIT" + }, + "node_modules/external-editor/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==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.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-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "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/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "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/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "license": "MIT" + }, + "node_modules/form-data/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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/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==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "license": "MIT", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "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/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "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==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "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==", + "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-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "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==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.0.tgz", + "integrity": "sha512-gEf705MZLrDPkbbhi8PnoO4ZwYgKoNL+ISZ3AjZMht2r3N5tuTwncyDi6Fv2/qDnMmZxgs0yI8WDOyR8q3G+SQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^11.1.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "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/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/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-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "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-errors/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/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "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-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-middleware": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", + "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.0.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.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", + "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==", + "dev": true, + "license": "ISC", + "dependencies": { + "minimatch": "^10.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz", + "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/inquirer": { + "version": "9.3.7", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.3.7.tgz", + "integrity": "sha512-LJKFHCSeIRq9hanN14IlOtPSTe3lNES7TYDTE2xxdAy1LS5rYphajK1qtwvj3YmQXvvk0U2Vbmcni8P9EIQW9w==", + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.3", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/inquirer/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/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==", + "license": "MIT" + }, + "node_modules/inquirer/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/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==", + "license": "ISC" + }, + "node_modules/inquirer/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==", + "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/inquirer/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ip-address": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "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/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, + "license": "MIT" + }, + "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": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "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/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/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/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jasmine-core": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.8.0.tgz", + "integrity": "sha512-Q9dqmpUAfptwyueW3+HqBOkSuYd9I/clZSSfN97wXE/Nr2ROFNCwIBEC1F6kb3QXS9Fcz0LjFYSDQT+BiwjuhA==", + "dev": true, + "license": "MIT" + }, + "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/jiti": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", + "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", + "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "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/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/karma": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", + "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.7.2", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-chrome-launcher/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/karma-coverage": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", + "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma-coverage/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", + "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "jasmine-core": "^4.0.0 || ^5.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-jasmine/node_modules/jasmine-core": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz", + "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/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/karma/node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "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.13.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/karma/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/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/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/karma/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/karma/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/karma/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/karma/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/karma/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/karma/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/karma/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/karma/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/karma/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/karma/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/karma/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/karma/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/karma/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/karma/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/karma/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/karma/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/karma/node_modules/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/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/keycloak-angular": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/keycloak-angular/-/keycloak-angular-20.0.0.tgz", + "integrity": "sha512-p9ThVUN8TNz15M2dd11VRDdHzgEDRSSxvyRGtK4N45lTbfs52DeNK+YXcpgt8ZX0/YN27GjU9GjiB4odI4/A2Q==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.1" + }, + "peerDependencies": { + "@angular/common": "^20", + "@angular/core": "^20", + "@angular/router": "^20", + "keycloak-js": "^18 || ^19 || ^20 || ^21 || ^22 || ^23 || ^24 || ^25 || ^26", + "rxjs": "^7" + } + }, + "node_modules/keycloak-js": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-26.2.0.tgz", + "integrity": "sha512-CrFcXTN+d6J0V/1v3Zpioys6qHNWE6yUzVVIsCUAmFn9H14GZ0vuYod+lt+SSpMgWGPuneDZBSGBAeLBFuqjsw==", + "license": "Apache-2.0" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz", + "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/less": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.4.0.tgz", + "integrity": "sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.3.0.tgz", + "integrity": "sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/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", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/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", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "license": "ISC", + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.1.tgz", + "integrity": "sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/listr2/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/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/lmdb": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.2.tgz", + "integrity": "sha512-nwVGUfTBUwJKXd6lRV8pFNfnrCC1+l49ESJRM19t/tFb/97QfJEixe5DYRvug5JO7DSFKoKaVy7oGMt5rVqZvg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "msgpackr": "^1.11.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.5.3", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "3.4.2", + "@lmdb/lmdb-darwin-x64": "3.4.2", + "@lmdb/lmdb-linux-arm": "3.4.2", + "@lmdb/lmdb-linux-arm64": "3.4.2", + "@lmdb/lmdb-linux-x64": "3.4.2", + "@lmdb/lmdb-win32-arm64": "3.4.2", + "@lmdb/lmdb-win32-x64": "3.4.2" + } + }, + "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/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", + "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/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/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-fetch-happen": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz", + "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^3.0.0", + "cacache": "^19.0.1", + "http-cache-semantics": "^4.1.1", + "minipass": "^7.0.2", + "minipass-fetch": "^4.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^1.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "ssri": "^12.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/memfs": { + "version": "4.36.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.36.3.tgz", + "integrity": "sha512-rZIVsNPGdZDPls/ckWhIsod2zRNsI2f2kEru0gMldkrEve+fPn7CVBTvfKLNyHQ9rZDWwzVBF8tPsZivzDPiZQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "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.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", + "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "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": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz", + "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/msgpackr": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz", + "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==", + "dev": true, + "license": "MIT", + "optional": true, + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } + }, + "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/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "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/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "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-gyp": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.4.0.tgz", + "integrity": "sha512-NHMW2krO0gv3wkD1czUSNVNYSHd2kKUx3IWae2Wu/brUnZWAcjsl0m196yH50g4Jp0qqJD53RPZD8pPjskx8PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "tar": "^7.4.3", + "tinyglobby": "^0.2.12", + "which": "^5.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nopt": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^3.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "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/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz", + "integrity": "sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-install-checks": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.1.tgz", + "integrity": "sha512-u6DCwbow5ynAX5BdiHQ9qvexme4U3qHW3MWe5NqH+NeBm0LbiH6zvGjNNew1fY+AZZUtVHbOPF3j7mJxbUzpXg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz", + "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-package-arg": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.0.tgz", + "integrity": "sha512-+t2etZAGcB7TbbLHfDwooV9ppB2LhhcT6A+L9cahsf9mEUAoQ6CktLEVvEnpD0N5CkX7zJqnPGaFtoQDy9EkHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^9.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-packlist": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.1.tgz", + "integrity": "sha512-vaC03b2PqJA6QqmwHi1jNU8fAPXEnnyv4j/W4PVfgm24C4/zZGSVut3z0YUeN0WIFCo1oGOL02+6LbvFK7JL4Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^8.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz", + "integrity": "sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^7.1.0", + "npm-normalize-package-bin": "^4.0.0", + "npm-package-arg": "^12.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-pick-manifest/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-pick-manifest/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz", + "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-18.0.2.tgz", + "integrity": "sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/redact": "^3.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^14.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^4.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^12.0.0", + "proc-log": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz", + "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "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-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openai": { + "version": "4.104.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz", + "integrity": "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + }, + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/openai/node_modules/@types/node": { + "version": "18.19.123", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.123.tgz", + "integrity": "sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/openai/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==", + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", + "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ordered-binary": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz", + "integrity": "sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "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-retry/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/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/pacote": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.0.tgz", + "integrity": "sha512-lcqexq73AMv6QNLo7SOpz0JJoaGdS3rBFgF122NZVl1bApo2mfu+XzUBU/X/XsiJu+iUmKpekRayqQYAs+PhkA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^10.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/pacote/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/pacote/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/pacote/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/pacote/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pacote/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pacote/node_modules/npm-package-arg": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz", + "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/pacote/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pacote/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/pacote/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/pacote/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/parchment": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", + "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==", + "license": "BSD-3-Clause" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/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/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", + "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-8.0.0.tgz", + "integrity": "sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0", + "parse5": "^8.0.0", + "parse5-sax-parser": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parse5-sax-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-8.0.0.tgz", + "integrity": "sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "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/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "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-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/piscina": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.1.3.tgz", + "integrity": "sha512-0u3N7H4+hbr40KjuVn2uNhOcthu/9usKhnw5vT3J7ply79v3D3M8naI00el9Klcy16x557VsEkkUQaHCWFXC/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.x" + }, + "optionalDependencies": { + "@napi-rs/nice": "^1.0.4" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", + "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/postcss-loader/node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/primeclt": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/primeclt/-/primeclt-0.1.5.tgz", + "integrity": "sha512-9gSu9yFNWq4GfSisqrHRapi06WsnqqPwu8wCEaHtPZEZcydFpWRKtoi4kFRZuFqrVE+dvNgH1AQ6usAB7a1upg==", + "license": "ISC", + "dependencies": { + "@types/inquirer": "^9.0.7", + "commander": "^11.1.0", + "esbuild": "^0.19.11", + "inquirer": "^9.2.12", + "openai": "^4.24.7", + "ora": "^8.0.1", + "ts-morph": "^21.0.1", + "tsx": "^4.7.0" + }, + "bin": { + "prime": "dist/index.js" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/primeclt/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/primeclt/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/primeicons": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-7.0.0.tgz", + "integrity": "sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==", + "license": "MIT" + }, + "node_modules/primeng": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-20.0.1.tgz", + "integrity": "sha512-TDt0e8/fwVCRghXPzDiuZK679/d0jYU7sZN3/Xm2YWsGLe0W2uewLuaxzCj1HYT4RsIFwIYtumJooWq13SNPaA==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@primeuix/styled": "^0.7.1", + "@primeuix/styles": "^1.2.2", + "@primeuix/utils": "^0.6.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^20.0.4", + "@angular/cdk": "^20.0.3", + "@angular/common": "^20.0.4", + "@angular/core": "^20.0.4", + "@angular/forms": "^20.0.4", + "@angular/platform-browser": "^20.0.4", + "@angular/router": "^20.0.4", + "rxjs": "^6.0.0 || ^7.8.1" + } + }, + "node_modules/proc-log": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", + "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.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/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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==", + "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/quill": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.3.tgz", + "integrity": "sha512-xEYQBqfYx/sfb33VJiKnSJp8ehloavImQ2A6564GAbqG55PGw1dAWUn1MUbQB62t0azawUS2CZZhWCjO8gRvTw==", + "license": "BSD-3-Clause", + "dependencies": { + "eventemitter3": "^5.0.1", + "lodash-es": "^4.17.21", + "parchment": "^3.0.0", + "quill-delta": "^5.1.0" + }, + "engines": { + "npm": ">=8.2.3" + } + }, + "node_modules/quill-delta": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", + "license": "MIT", + "dependencies": { + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/quill/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "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==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/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/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rolldown": { + "version": "1.0.0-beta.32", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.32.tgz", + "integrity": "sha512-vxI2sPN07MMaoYKlFrVva5qZ1Y7DAZkgp7MQwTnyHt4FUMz9Sh+YeCzNFV9JYHI6ZNwoGWLCfCViE3XVsRC1cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/runtime": "=0.81.0", + "@oxc-project/types": "=0.81.0", + "@rolldown/pluginutils": "1.0.0-beta.32", + "ansis": "^4.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-beta.32", + "@rolldown/binding-darwin-arm64": "1.0.0-beta.32", + "@rolldown/binding-darwin-x64": "1.0.0-beta.32", + "@rolldown/binding-freebsd-x64": "1.0.0-beta.32", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.32", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.32", + "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.32", + "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.32", + "@rolldown/binding-linux-x64-musl": "1.0.0-beta.32", + "@rolldown/binding-openharmony-arm64": "1.0.0-beta.32", + "@rolldown/binding-wasm32-wasi": "1.0.0-beta.32", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.32", + "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.32", + "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.32" + } + }, + "node_modules/rollup": { + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.4.tgz", + "integrity": "sha512-YbxoxvoqNg9zAmw4+vzh1FkGAiZRK+LhnSrbSrSXMdZYsRPDWoshcSd/pldKRO6lWzv/e9TiJAVQyirYIeSIPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.46.4", + "@rollup/rollup-android-arm64": "4.46.4", + "@rollup/rollup-darwin-arm64": "4.46.4", + "@rollup/rollup-darwin-x64": "4.46.4", + "@rollup/rollup-freebsd-arm64": "4.46.4", + "@rollup/rollup-freebsd-x64": "4.46.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.4", + "@rollup/rollup-linux-arm-musleabihf": "4.46.4", + "@rollup/rollup-linux-arm64-gnu": "4.46.4", + "@rollup/rollup-linux-arm64-musl": "4.46.4", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.4", + "@rollup/rollup-linux-ppc64-gnu": "4.46.4", + "@rollup/rollup-linux-riscv64-gnu": "4.46.4", + "@rollup/rollup-linux-riscv64-musl": "4.46.4", + "@rollup/rollup-linux-s390x-gnu": "4.46.4", + "@rollup/rollup-linux-x64-gnu": "4.46.4", + "@rollup/rollup-linux-x64-musl": "4.46.4", + "@rollup/rollup-win32-arm64-msvc": "4.46.4", + "@rollup/rollup-win32-ia32-msvc": "4.46.4", + "@rollup/rollup-win32-x64-msvc": "4.46.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "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==", + "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/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", + "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass-loader": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", + "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/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/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.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "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/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/serve-index/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/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/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/serve-index/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/serve-index/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/serve-index/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/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": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "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.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sigstore": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-3.1.0.tgz", + "integrity": "sha512-ZpzWAFHIFqyFE56dXqgX/DkDRZdz+rRcjoIk/RQU4IX0wiCv1l8S7ZrXDHcCc+uaf+6o7w3h2l3g6GYG5TKN9Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.0", + "@sigstore/sign": "^3.1.0", + "@sigstore/tuf": "^3.1.0", + "@sigstore/verify": "^2.1.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-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/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.6.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "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 + } + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/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/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/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/socket.io/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/socket.io/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/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/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "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/source-map-support/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/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "dev": true, + "license": "CC0-1.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/ssri": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz", + "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "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/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/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-cjs/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/string-width-cjs/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/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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-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-ansi-cjs/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/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "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/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.12.tgz", + "integrity": "sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==", + "license": "MIT" + }, + "node_modules/tailwindcss-primeui": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/tailwindcss-primeui/-/tailwindcss-primeui-0.6.1.tgz", + "integrity": "sha512-T69Rylcrmnt8zy9ik+qZvsLuRIrS9/k6rYJSIgZ1trnbEzGDDQSCIdmfyZknevqiHwpSJHSmQ9XT2C+S/hJY4A==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.1.0" + } + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/terser": { + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "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.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "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/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": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "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/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "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==", + "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/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tree-dump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.3.tgz", + "integrity": "sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-morph": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-21.0.1.tgz", + "integrity": "sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==", + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.22.0", + "code-block-writer": "^12.0.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.4.tgz", + "integrity": "sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg==", + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tuf-js": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-3.1.0.tgz", + "integrity": "sha512-3T3T04WzowbwV2FDiGXBbr81t64g1MUGGJRgT4x5o97N+8ArdhVCAF9IxFrxuSJmM3E5Asn7nKHkao0ibcZXAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "3.0.1", + "debug": "^4.4.1", + "make-fetch-happen": "^14.0.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true, + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.41.tgz", + "integrity": "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz", + "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/unique-slug": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz", + "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "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.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "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.2.0", + "picocolors": "^1.1.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/uri-js/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/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "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/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-6.0.2.tgz", + "integrity": "sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "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/vite": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.2.tgz", + "integrity": "sha512-J0SQBPlQiEXAF7tajiH+rUooJPo0l8KQgyg4/aMunNtrOa7bwuZJsJbDWzeljqQpgftxuq5yNJxQ91O9ts29UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.6", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.14" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "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/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.101.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.2.tgz", + "integrity": "sha512-4JLXU0tD6OZNVqlwzm3HGEhAHufSiyv+skb7q0d2367VDMzrU1Q/ZeepvkcHH0rZie6uqEtTQQe0OEOOluH3Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.3", + "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": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.3.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-dev-middleware": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", + "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", + "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-middleware/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/webpack-dev-middleware/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/webpack-dev-server": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", + "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^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", + "express": "^4.21.2", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "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.4.2", + "ws": "^8.18.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-dev-server/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/webpack-dev-server/node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "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.13.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/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/node_modules/debug/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/webpack-dev-server/node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "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" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/webpack-dev-server/node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "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/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "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/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "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/webpack-dev-server/node_modules/send/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/webpack-dev-server/node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/webpack-dev-server/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/webpack-dev-server/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/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/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/webpack/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/webpack/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/webpack/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/webpack/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/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/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.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/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/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/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/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/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-cjs/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/wrap-ansi/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/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==", + "license": "MIT" + }, + "node_modules/wrap-ansi/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/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==", + "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/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "devOptional": 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 + } + } + }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "devOptional": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.6", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", + "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" + } + }, + "node_modules/zone.js": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", + "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==", + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..dc8cab6 --- /dev/null +++ b/package.json @@ -0,0 +1,61 @@ +{ + "name": "sakai-ng", + "version": "20.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "format": "prettier --write \"**/*.{js,mjs,ts,mts,d.ts,html}\" --cache", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/animations": "^20", + "@angular/cdk": "^20.2.0", + "@angular/common": "^20", + "@angular/compiler": "^20", + "@angular/core": "^20", + "@angular/forms": "^20", + "@angular/material": "^20.2.0", + "@angular/platform-browser": "^20", + "@angular/platform-browser-dynamic": "^20", + "@angular/router": "^20", + "@primeuix/themes": "^1.2.1", + "@tailwindcss/postcss": "^4.1.11", + "chart.js": "4.4.2", + "keycloak-angular": "^20.0.0", + "keycloak-js": "^26.2.0", + "primeclt": "^0.1.5", + "primeicons": "^7.0.0", + "primeng": "^20", + "quill": "^2.0.3", + "rxjs": "~7.8.2", + "tailwindcss-primeui": "^0.6.1", + "tslib": "^2.8.1", + "zone.js": "~0.15.1" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^20", + "@angular/cli": "^20", + "@angular/compiler-cli": "^20", + "@angular/localize": "^20.2.0", + "@types/jasmine": "~5.1.0", + "autoprefixer": "^10.4.20", + "eslint": "^9.30.1", + "eslint-config-prettier": "^10.1.5", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-prefer-arrow": "^1.2.3", + "eslint-plugin-prettier": "^5.5.1", + "jasmine-core": "~5.8.0", + "karma": "~6.4.4", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.1", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "postcss": "^8.5.6", + "prettier": "^3.6.2", + "tailwindcss": "^4.1.11", + "typescript": "~5.8.3" + } +} \ No newline at end of file diff --git a/public/silent-check-sso.html b/public/silent-check-sso.html new file mode 100644 index 0000000..d16b2ff --- /dev/null +++ b/public/silent-check-sso.html @@ -0,0 +1,7 @@ + + + + + diff --git a/src/app.component.ts b/src/app.component.ts new file mode 100644 index 0000000..e124abf --- /dev/null +++ b/src/app.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +@Component({ + selector: 'app-root', + standalone: true, + imports: [RouterModule], + template: `` +}) +export class AppComponent {} diff --git a/src/app.config.ts b/src/app.config.ts new file mode 100644 index 0000000..ce808ef --- /dev/null +++ b/src/app.config.ts @@ -0,0 +1,57 @@ +import { provideHttpClient, withFetch, withInterceptors } from '@angular/common/http'; +import { ApplicationConfig } from '@angular/core'; +import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; +import { provideRouter, withEnabledBlockingInitialNavigation, withInMemoryScrolling } from '@angular/router'; +import Aura from '@primeuix/themes/aura'; +import { providePrimeNG } from 'primeng/config'; +import { appRoutes } from './app.routes'; +import { provideKeycloak, withAutoRefreshToken, AutoRefreshTokenService, UserActivityService, includeBearerTokenInterceptor, INCLUDE_BEARER_TOKEN_INTERCEPTOR_CONFIG, createInterceptorCondition, IncludeBearerTokenCondition } from 'keycloak-angular'; +import { environment } from './environments/environments'; +import { KeycloakOnLoad } from 'keycloak-js'; + +const urlCondition = createInterceptorCondition({ + urlPattern: new RegExp(environment.bearerTokenUrlCondition, 'i') +}); + +export const appConfig: ApplicationConfig = { + providers: [ + // Other providers + provideRouter(appRoutes, withInMemoryScrolling({ anchorScrolling: 'enabled', scrollPositionRestoration: 'enabled' }), withEnabledBlockingInitialNavigation()), + provideAnimationsAsync(), + providePrimeNG({ theme: { preset: Aura, options: { darkModeSelector: '.app-dark' } } }), + + // The official Keycloak Provider + // Config see https://www.npmjs.com/package/keycloak-angular#setup + provideKeycloak({ + config: { + url: environment.keycloak.config.url, + realm: environment.keycloak.config.realm, + clientId: environment.keycloak.config.clientId, + }, + initOptions: { + onLoad: environment.keycloak.initOptions.onLoad as KeycloakOnLoad, + silentCheckSsoRedirectUri: environment.keycloak.initOptions.silentCheckSsoRedirectUri, + redirectUri: environment.keycloak.initOptions.redirectUri + }, + features: [ + withAutoRefreshToken({ + onInactivityTimeout: 'logout', + sessionTimeout: environment.keycloak.sessionTimeout * 60000 // sessionTimeout x 60000ms (1 minute) + }) + ], + // see https://github.com/mauriciovigolo/keycloak-angular/blob/main/projects/examples/fetch_config/src/app/keycloak.config.ts + providers: [ + AutoRefreshTokenService, + UserActivityService, + // see https://www.npmjs.com/package/keycloak-angular#httpclient-interceptors + { + provide: INCLUDE_BEARER_TOKEN_INTERCEPTOR_CONFIG, + useValue: [urlCondition] // <-- Note that multiple conditions might be added. + }, + ] + }), + + // HttpClient MUST come after provideKeycloak + provideHttpClient(withFetch(), withInterceptors([includeBearerTokenInterceptor])), + ] +}; diff --git a/src/app.routes.ts b/src/app.routes.ts new file mode 100644 index 0000000..a742123 --- /dev/null +++ b/src/app.routes.ts @@ -0,0 +1,62 @@ +import { Routes } from '@angular/router'; +import { AppLayout } from './app/layout/component/app.layout'; +import { Dashboard } from './app/pages/dashboard/dashboard'; +import { Documentation } from './app/pages/documentation/documentation'; +import { Landing } from './app/pages/landing/landing'; +import { Notfound } from './app/pages/notfound/notfound'; +import { Properties } from '@/pages/properties/properties'; +import { PropertyDetails } from '@/pages/property-details/property-details'; +import { PropertyManager } from '@/pages/property-manager/property-manager'; +import { canActivateAuthRole } from '@/guards/auth.guard'; +import { Projects } from '@/pages/projects/projects'; +import { ProjectDetails } from '@/pages/project-details/project-details'; +import { Contacts } from '@/pages/contacts/contacts'; + +export const appRoutes: Routes = [ + { + path: '', + component: AppLayout, + children: [ + { + path: '', component: Dashboard, + // data: { role: ['admin', 'can-view-dashboard'] }, canActivate: [canActivateAuthRole] + }, + + { + path: 'projects', component: Projects, + data: { role: ['admin', 'can-view-projects'] }, canActivate: [canActivateAuthRole] + }, + { + path: 'projects/:id', component: ProjectDetails, + data: { role: ['admin', 'can-view-projects'] }, canActivate: [canActivateAuthRole] + }, + + { + path: 'contacts', component: Contacts, + data: { role: ['admin', 'can-view-contacts'] }, canActivate: [canActivateAuthRole] + }, + + // admin pages + { + path: 'properties', component: Properties, + data: { role: ['admin', 'can-view-properties'] }, canActivate: [canActivateAuthRole] + }, + { + path: 'properties/:id', component: PropertyDetails, + data: { role: ['admin', 'can-view-properties'] }, canActivate: [canActivateAuthRole] + }, + { + path: 'admin/properties', component: PropertyManager, + data: { role: ['admin', 'can-manage-properties'] }, canActivate: [canActivateAuthRole] + }, + + { path: 'uikit', loadChildren: () => import('./app/pages/uikit/uikit.routes') }, + { path: 'documentation', component: Documentation }, + { path: 'pages', loadChildren: () => import('./app/pages/pages.routes') } + ] + }, + { path: 'landing', component: Landing }, + { path: 'notfound', component: Notfound }, + { path: 'auth', loadChildren: () => import('./app/pages/auth/auth.routes') }, + { path: '**', redirectTo: '/notfound' } +]; diff --git a/src/app/guards/auth.guard.ts b/src/app/guards/auth.guard.ts new file mode 100644 index 0000000..0aed904 --- /dev/null +++ b/src/app/guards/auth.guard.ts @@ -0,0 +1,60 @@ +import { AuthGuardData, createAuthGuard, KeycloakService } from 'keycloak-angular'; +import { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot, UrlTree } from '@angular/router'; +import { inject } from '@angular/core'; +import { appConfig } from '../../app.config'; +import Keycloak from 'keycloak-js'; + +/** + * The logic below is a simple example, please make it more robust when implementing in your application. + * + * Reason: isAccessGranted is not validating the resource, since it is merging all roles. Two resources might + * have the same role name, and it makes sense to validate it more granular. + */ +const isAccessAllowed = async ( + route: ActivatedRouteSnapshot, + __: RouterStateSnapshot, + authData: AuthGuardData +): Promise => { + const marker_start = '======================= auth.guard >>> ======================='; + const marker_end = '\n======================= <<< auth.guard ======================='; + console.debug(marker_start); + + const { authenticated, grantedRoles } = authData; + console.debug('authData', authData); + // console.debug('authenticated', authenticated); + // console.debug('grantedRoles', grantedRoles); + // console.debug('grantedRoles - realmRoles', grantedRoles.realmRoles); + // console.debug('grantedRoles - resourceRoles', grantedRoles.resourceRoles); + + const requiredRole = route.data['role']; + // console.debug('requiredRole', requiredRole); + + if (!requiredRole) { + // console.debug('No role required for this route.'); + return false; + } + + const router = inject(Router); + const notAllowed = router.parseUrl('/auth/access'); + const keycloak = inject(Keycloak); + + if (!authenticated) { + console.debug('you are not authenticated. please authenticate first.' + marker_end); + // await keycloak.login({ redirectUri: window.location.href }); + return notAllowed; + } + + const hasRequiredRealmRole = requiredRole.some((role: string) => { + return grantedRoles.realmRoles.includes(role); + }); + if (hasRequiredRealmRole) { + console.debug('you have the required realm role' + marker_end); + return true; + } + + console.debug('you do not have permission to visit this page.' + marker_end); + return notAllowed; +}; + +// @ts-ignore +export const canActivateAuthRole = createAuthGuard(isAccessAllowed); diff --git a/src/app/layout/component/app.configurator.ts b/src/app/layout/component/app.configurator.ts new file mode 100644 index 0000000..49d0784 --- /dev/null +++ b/src/app/layout/component/app.configurator.ts @@ -0,0 +1,446 @@ +import { CommonModule, isPlatformBrowser } from '@angular/common'; +import { Component, computed, inject, PLATFORM_ID, signal } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { Router } from '@angular/router'; +import { $t, updatePreset, updateSurfacePalette } from '@primeuix/themes'; +import Aura from '@primeuix/themes/aura'; +import Lara from '@primeuix/themes/lara'; +import Nora from '@primeuix/themes/nora'; +import { PrimeNG } from 'primeng/config'; +import { SelectButtonModule } from 'primeng/selectbutton'; +import { LayoutService } from '../service/layout.service'; + +const presets = { + Aura, + Lara, + Nora +} as const; + +declare type KeyOfType = keyof T extends infer U ? U : never; + +declare type SurfacesType = { + name?: string; + palette?: { + 0?: string; + 50?: string; + 100?: string; + 200?: string; + 300?: string; + 400?: string; + 500?: string; + 600?: string; + 700?: string; + 800?: string; + 900?: string; + 950?: string; + }; +}; + +@Component({ + selector: 'app-configurator', + standalone: true, + imports: [CommonModule, FormsModule, SelectButtonModule], + template: ` +
+
+ Primary +
+ @for (primaryColor of primaryColors(); track primaryColor.name) { + + } +
+
+
+ Surface +
+ @for (surface of surfaces; track surface.name) { + + } +
+
+
+ Presets + +
+
+ Menu Mode + +
+
+ `, + host: { + class: 'hidden absolute top-13 right-0 w-72 p-4 bg-surface-0 dark:bg-surface-900 border border-surface rounded-border origin-top shadow-[0px_3px_5px_rgba(0,0,0,0.02),0px_0px_2px_rgba(0,0,0,0.05),0px_1px_4px_rgba(0,0,0,0.08)]' + } +}) +export class AppConfigurator { + router = inject(Router); + + config: PrimeNG = inject(PrimeNG); + + layoutService: LayoutService = inject(LayoutService); + + platformId = inject(PLATFORM_ID); + + primeng = inject(PrimeNG); + + presets = Object.keys(presets); + + showMenuModeButton = signal(!this.router.url.includes('auth')); + + menuModeOptions = [ + { label: 'Static', value: 'static' }, + { label: 'Overlay', value: 'overlay' } + ]; + + ngOnInit() { + if (isPlatformBrowser(this.platformId)) { + this.onPresetChange(this.layoutService.layoutConfig().preset); + } + } + + surfaces: SurfacesType[] = [ + { + name: 'slate', + palette: { + 0: '#ffffff', + 50: '#f8fafc', + 100: '#f1f5f9', + 200: '#e2e8f0', + 300: '#cbd5e1', + 400: '#94a3b8', + 500: '#64748b', + 600: '#475569', + 700: '#334155', + 800: '#1e293b', + 900: '#0f172a', + 950: '#020617' + } + }, + { + name: 'gray', + palette: { + 0: '#ffffff', + 50: '#f9fafb', + 100: '#f3f4f6', + 200: '#e5e7eb', + 300: '#d1d5db', + 400: '#9ca3af', + 500: '#6b7280', + 600: '#4b5563', + 700: '#374151', + 800: '#1f2937', + 900: '#111827', + 950: '#030712' + } + }, + { + name: 'zinc', + palette: { + 0: '#ffffff', + 50: '#fafafa', + 100: '#f4f4f5', + 200: '#e4e4e7', + 300: '#d4d4d8', + 400: '#a1a1aa', + 500: '#71717a', + 600: '#52525b', + 700: '#3f3f46', + 800: '#27272a', + 900: '#18181b', + 950: '#09090b' + } + }, + { + name: 'neutral', + palette: { + 0: '#ffffff', + 50: '#fafafa', + 100: '#f5f5f5', + 200: '#e5e5e5', + 300: '#d4d4d4', + 400: '#a3a3a3', + 500: '#737373', + 600: '#525252', + 700: '#404040', + 800: '#262626', + 900: '#171717', + 950: '#0a0a0a' + } + }, + { + name: 'stone', + palette: { + 0: '#ffffff', + 50: '#fafaf9', + 100: '#f5f5f4', + 200: '#e7e5e4', + 300: '#d6d3d1', + 400: '#a8a29e', + 500: '#78716c', + 600: '#57534e', + 700: '#44403c', + 800: '#292524', + 900: '#1c1917', + 950: '#0c0a09' + } + }, + { + name: 'soho', + palette: { + 0: '#ffffff', + 50: '#ececec', + 100: '#dedfdf', + 200: '#c4c4c6', + 300: '#adaeb0', + 400: '#97979b', + 500: '#7f8084', + 600: '#6a6b70', + 700: '#55565b', + 800: '#3f4046', + 900: '#2c2c34', + 950: '#16161d' + } + }, + { + name: 'viva', + palette: { + 0: '#ffffff', + 50: '#f3f3f3', + 100: '#e7e7e8', + 200: '#cfd0d0', + 300: '#b7b8b9', + 400: '#9fa1a1', + 500: '#87898a', + 600: '#6e7173', + 700: '#565a5b', + 800: '#3e4244', + 900: '#262b2c', + 950: '#0e1315' + } + }, + { + name: 'ocean', + palette: { + 0: '#ffffff', + 50: '#fbfcfc', + 100: '#F7F9F8', + 200: '#EFF3F2', + 300: '#DADEDD', + 400: '#B1B7B6', + 500: '#828787', + 600: '#5F7274', + 700: '#415B61', + 800: '#29444E', + 900: '#183240', + 950: '#0c1920' + } + } + ]; + + selectedPrimaryColor = computed(() => { + return this.layoutService.layoutConfig().primary; + }); + + selectedSurfaceColor = computed(() => this.layoutService.layoutConfig().surface); + + selectedPreset = computed(() => this.layoutService.layoutConfig().preset); + + menuMode = computed(() => this.layoutService.layoutConfig().menuMode); + + primaryColors = computed(() => { + const presetPalette = presets[this.layoutService.layoutConfig().preset as KeyOfType].primitive; + const colors = ['emerald', 'green', 'lime', 'orange', 'amber', 'yellow', 'teal', 'cyan', 'sky', 'blue', 'indigo', 'violet', 'purple', 'fuchsia', 'pink', 'rose']; + const palettes: SurfacesType[] = [{ name: 'noir', palette: {} }]; + + colors.forEach((color) => { + palettes.push({ + name: color, + palette: presetPalette?.[color as KeyOfType] as SurfacesType['palette'] + }); + }); + + return palettes; + }); + + getPresetExt() { + const color: SurfacesType = this.primaryColors().find((c) => c.name === this.selectedPrimaryColor()) || {}; + const preset = this.layoutService.layoutConfig().preset; + + if (color.name === 'noir') { + return { + semantic: { + primary: { + 50: '{surface.50}', + 100: '{surface.100}', + 200: '{surface.200}', + 300: '{surface.300}', + 400: '{surface.400}', + 500: '{surface.500}', + 600: '{surface.600}', + 700: '{surface.700}', + 800: '{surface.800}', + 900: '{surface.900}', + 950: '{surface.950}' + }, + colorScheme: { + light: { + primary: { + color: '{primary.950}', + contrastColor: '#ffffff', + hoverColor: '{primary.800}', + activeColor: '{primary.700}' + }, + highlight: { + background: '{primary.950}', + focusBackground: '{primary.700}', + color: '#ffffff', + focusColor: '#ffffff' + } + }, + dark: { + primary: { + color: '{primary.50}', + contrastColor: '{primary.950}', + hoverColor: '{primary.200}', + activeColor: '{primary.300}' + }, + highlight: { + background: '{primary.50}', + focusBackground: '{primary.300}', + color: '{primary.950}', + focusColor: '{primary.950}' + } + } + } + } + }; + } else { + if (preset === 'Nora') { + return { + semantic: { + primary: color.palette, + colorScheme: { + light: { + primary: { + color: '{primary.600}', + contrastColor: '#ffffff', + hoverColor: '{primary.700}', + activeColor: '{primary.800}' + }, + highlight: { + background: '{primary.600}', + focusBackground: '{primary.700}', + color: '#ffffff', + focusColor: '#ffffff' + } + }, + dark: { + primary: { + color: '{primary.500}', + contrastColor: '{surface.900}', + hoverColor: '{primary.400}', + activeColor: '{primary.300}' + }, + highlight: { + background: '{primary.500}', + focusBackground: '{primary.400}', + color: '{surface.900}', + focusColor: '{surface.900}' + } + } + } + } + }; + } else { + return { + semantic: { + primary: color.palette, + colorScheme: { + light: { + primary: { + color: '{primary.500}', + contrastColor: '#ffffff', + hoverColor: '{primary.600}', + activeColor: '{primary.700}' + }, + highlight: { + background: '{primary.50}', + focusBackground: '{primary.100}', + color: '{primary.700}', + focusColor: '{primary.800}' + } + }, + dark: { + primary: { + color: '{primary.400}', + contrastColor: '{surface.900}', + hoverColor: '{primary.300}', + activeColor: '{primary.200}' + }, + highlight: { + background: 'color-mix(in srgb, {primary.400}, transparent 84%)', + focusBackground: 'color-mix(in srgb, {primary.400}, transparent 76%)', + color: 'rgba(255,255,255,.87)', + focusColor: 'rgba(255,255,255,.87)' + } + } + } + } + }; + } + } + } + + updateColors(event: any, type: string, color: any) { + if (type === 'primary') { + this.layoutService.layoutConfig.update((state) => ({ ...state, primary: color.name })); + } else if (type === 'surface') { + this.layoutService.layoutConfig.update((state) => ({ ...state, surface: color.name })); + } + this.applyTheme(type, color); + + event.stopPropagation(); + } + + applyTheme(type: string, color: any) { + if (type === 'primary') { + updatePreset(this.getPresetExt()); + } else if (type === 'surface') { + updateSurfacePalette(color.palette); + } + } + + onPresetChange(event: any) { + this.layoutService.layoutConfig.update((state) => ({ ...state, preset: event })); + const preset = presets[event as KeyOfType]; + const surfacePalette = this.surfaces.find((s) => s.name === this.selectedSurfaceColor())?.palette; + $t().preset(preset).preset(this.getPresetExt()).surfacePalette(surfacePalette).use({ useDefaultOptions: true }); + } + + onMenuModeChange(event: string) { + this.layoutService.layoutConfig.update((prev) => ({ ...prev, menuMode: event })); + } +} diff --git a/src/app/layout/component/app.floatingconfigurator.ts b/src/app/layout/component/app.floatingconfigurator.ts new file mode 100644 index 0000000..2754722 --- /dev/null +++ b/src/app/layout/component/app.floatingconfigurator.ts @@ -0,0 +1,32 @@ +import {Component, computed, inject, input} from '@angular/core'; +import { ButtonModule } from 'primeng/button'; +import { StyleClassModule } from 'primeng/styleclass'; +import { AppConfigurator } from './app.configurator'; +import { LayoutService } from '../service/layout.service'; +import {CommonModule} from "@angular/common"; + +@Component({ + selector: 'app-floating-configurator', + imports: [CommonModule, ButtonModule, StyleClassModule, AppConfigurator], + template: ` +
+ +
+ + +
+
+ ` +}) +export class AppFloatingConfigurator { + LayoutService = inject(LayoutService); + + float = input(true); + + isDarkTheme = computed(() => this.LayoutService.layoutConfig().darkTheme); + + toggleDarkMode() { + this.LayoutService.layoutConfig.update((state) => ({ ...state, darkTheme: !state.darkTheme })); + } + +} diff --git a/src/app/layout/component/app.footer.ts b/src/app/layout/component/app.footer.ts new file mode 100644 index 0000000..1ab5367 --- /dev/null +++ b/src/app/layout/component/app.footer.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + standalone: true, + selector: 'app-footer', + template: `` +}) +export class AppFooter {} diff --git a/src/app/layout/component/app.layout.ts b/src/app/layout/component/app.layout.ts new file mode 100644 index 0000000..de6142d --- /dev/null +++ b/src/app/layout/component/app.layout.ts @@ -0,0 +1,111 @@ +import { Component, Renderer2, ViewChild } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { NavigationEnd, Router, RouterModule } from '@angular/router'; +import { filter, Subscription } from 'rxjs'; +import { AppTopbar } from './app.topbar'; +import { AppSidebar } from './app.sidebar'; +import { AppFooter } from './app.footer'; +import { LayoutService } from '../service/layout.service'; + +@Component({ + selector: 'app-layout', + standalone: true, + imports: [CommonModule, AppTopbar, AppSidebar, RouterModule, AppFooter], + template: `
+ + +
+
+ +
+ +
+
+
` +}) +export class AppLayout { + overlayMenuOpenSubscription: Subscription; + + menuOutsideClickListener: any; + + @ViewChild(AppSidebar) appSidebar!: AppSidebar; + + @ViewChild(AppTopbar) appTopBar!: AppTopbar; + + constructor( + public layoutService: LayoutService, + public renderer: Renderer2, + public router: Router + ) { + this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => { + if (!this.menuOutsideClickListener) { + this.menuOutsideClickListener = this.renderer.listen('document', 'click', (event) => { + if (this.isOutsideClicked(event)) { + this.hideMenu(); + } + }); + } + + if (this.layoutService.layoutState().staticMenuMobileActive) { + this.blockBodyScroll(); + } + }); + + this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => { + this.hideMenu(); + }); + } + + isOutsideClicked(event: MouseEvent) { + const sidebarEl = document.querySelector('.layout-sidebar'); + const topbarEl = document.querySelector('.layout-menu-button'); + const eventTarget = event.target as Node; + + return !(sidebarEl?.isSameNode(eventTarget) || sidebarEl?.contains(eventTarget) || topbarEl?.isSameNode(eventTarget) || topbarEl?.contains(eventTarget)); + } + + hideMenu() { + this.layoutService.layoutState.update((prev) => ({ ...prev, overlayMenuActive: false, staticMenuMobileActive: false, menuHoverActive: false })); + if (this.menuOutsideClickListener) { + this.menuOutsideClickListener(); + this.menuOutsideClickListener = null; + } + this.unblockBodyScroll(); + } + + blockBodyScroll(): void { + if (document.body.classList) { + document.body.classList.add('blocked-scroll'); + } else { + document.body.className += ' blocked-scroll'; + } + } + + unblockBodyScroll(): void { + if (document.body.classList) { + document.body.classList.remove('blocked-scroll'); + } else { + document.body.className = document.body.className.replace(new RegExp('(^|\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); + } + } + + get containerClass() { + return { + 'layout-overlay': this.layoutService.layoutConfig().menuMode === 'overlay', + 'layout-static': this.layoutService.layoutConfig().menuMode === 'static', + 'layout-static-inactive': this.layoutService.layoutState().staticMenuDesktopInactive && this.layoutService.layoutConfig().menuMode === 'static', + 'layout-overlay-active': this.layoutService.layoutState().overlayMenuActive, + 'layout-mobile-active': this.layoutService.layoutState().staticMenuMobileActive + }; + } + + ngOnDestroy() { + if (this.overlayMenuOpenSubscription) { + this.overlayMenuOpenSubscription.unsubscribe(); + } + + if (this.menuOutsideClickListener) { + this.menuOutsideClickListener(); + } + } +} diff --git a/src/app/layout/component/app.menu.ts b/src/app/layout/component/app.menu.ts new file mode 100644 index 0000000..4edb91a --- /dev/null +++ b/src/app/layout/component/app.menu.ts @@ -0,0 +1,193 @@ +import { Component, inject } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { MenuItem } from 'primeng/api'; +import { AppMenuitem } from './app.menuitem'; +import Keycloak from 'keycloak-js'; +import { HasRolePipe } from '@/pipes/has-role-pipe'; + +@Component({ + selector: 'app-menu', + standalone: true, + imports: [CommonModule, AppMenuitem, RouterModule, HasRolePipe], + template: ` +
    + @for (rootMenuItem of model; track $index) { + + @if (!rootMenuItem.separator) { + @if (rootMenuItem['roles']) { + @if (rootMenuItem['roles'] | hasRole: 'any') { +
  • + } + } + @if (!rootMenuItem['roles']) { +
  • + } + } + + @if (rootMenuItem.separator) { + + } +
    + } +
+ ` +}) +export class AppMenu { + model: MenuItem[] = []; + protected keycloak = inject(Keycloak); + + ngOnInit() { + this.model = [ + { + roles: ['user'], + label: 'Home', + items: [ + { label: 'Dashboard', icon: 'pi pi-fw pi-home', routerLink: ['/'] }, + { label: 'Projekte', icon: 'pi pi-fw pi-list', routerLink: ['/projects'], roles: ['admin', 'can-view-projects'] }, + { label: 'Kontakte', icon: 'pi pi-fw pi-id-card', routerLink: ['/contacts'], roles: ['admin', 'can-view-contacts'] } + ] + }, + { + label: 'Admin', + items: [ + { + roles: ['admin', 'can-manage-properties'], + label: 'Gebäude Verwalten', + icon: 'pi pi-fw pi-home', + routerLink: ['/admin/properties'] + } + ] + }, + { + label: 'UI Components', + items: [ + { label: 'Form Layout', icon: 'pi pi-fw pi-id-card', routerLink: ['/uikit/formlayout'] }, + { label: 'Input', icon: 'pi pi-fw pi-check-square', routerLink: ['/uikit/input'] }, + { label: 'Button', icon: 'pi pi-fw pi-mobile', class: 'rotated-icon', routerLink: ['/uikit/button'] }, + { label: 'Table', icon: 'pi pi-fw pi-table', routerLink: ['/uikit/table'] }, + { label: 'Properties', icon: 'pi pi-fw pi-home', routerLink: ['/properties'] }, + { label: 'List', icon: 'pi pi-fw pi-list', routerLink: ['/uikit/list'] }, + { label: 'Tree', icon: 'pi pi-fw pi-share-alt', routerLink: ['/uikit/tree'] }, + { label: 'Panel', icon: 'pi pi-fw pi-tablet', routerLink: ['/uikit/panel'] }, + { label: 'Overlay', icon: 'pi pi-fw pi-clone', routerLink: ['/uikit/overlay'] }, + { label: 'Media', icon: 'pi pi-fw pi-image', routerLink: ['/uikit/media'] }, + { label: 'Menu', icon: 'pi pi-fw pi-bars', routerLink: ['/uikit/menu'] }, + { label: 'Message', icon: 'pi pi-fw pi-comment', routerLink: ['/uikit/message'] }, + { label: 'File', icon: 'pi pi-fw pi-file', routerLink: ['/uikit/file'] }, + { label: 'Chart', icon: 'pi pi-fw pi-chart-bar', routerLink: ['/uikit/charts'] }, + { label: 'Timeline', icon: 'pi pi-fw pi-calendar', routerLink: ['/uikit/timeline'] }, + { label: 'Misc', icon: 'pi pi-fw pi-circle', routerLink: ['/uikit/misc'] } + ] + }, + { + label: 'Pages', + icon: 'pi pi-fw pi-briefcase', + routerLink: ['/pages'], + items: [ + { + label: 'Landing', + icon: 'pi pi-fw pi-globe', + routerLink: ['/landing'] + }, + { + label: 'Auth', + icon: 'pi pi-fw pi-user', + items: [ + { + label: 'Login', + icon: 'pi pi-fw pi-sign-in', + routerLink: ['/auth/login'] + }, + { + label: 'Error', + icon: 'pi pi-fw pi-times-circle', + routerLink: ['/auth/error'] + }, + { + label: 'Access Denied', + icon: 'pi pi-fw pi-lock', + routerLink: ['/auth/access'] + } + ] + }, + { + label: 'Crud', + icon: 'pi pi-fw pi-pencil', + routerLink: ['/pages/crud'] + }, + { + label: 'Not Found', + icon: 'pi pi-fw pi-exclamation-circle', + routerLink: ['/pages/notfound'] + }, + { + label: 'Empty', + icon: 'pi pi-fw pi-circle-off', + routerLink: ['/pages/empty'] + } + ] + }, + { + label: 'Hierarchy', + items: [ + { + label: 'Submenu 1', + icon: 'pi pi-fw pi-bookmark', + items: [ + { + label: 'Submenu 1.1', + icon: 'pi pi-fw pi-bookmark', + items: [ + { label: 'Submenu 1.1.1', icon: 'pi pi-fw pi-bookmark' }, + { label: 'Submenu 1.1.2', icon: 'pi pi-fw pi-bookmark' }, + { label: 'Submenu 1.1.3', icon: 'pi pi-fw pi-bookmark' } + ] + }, + { + label: 'Submenu 1.2', + icon: 'pi pi-fw pi-bookmark', + items: [{ label: 'Submenu 1.2.1', icon: 'pi pi-fw pi-bookmark' }] + } + ] + }, + { + label: 'Submenu 2', + icon: 'pi pi-fw pi-bookmark', + items: [ + { + label: 'Submenu 2.1', + icon: 'pi pi-fw pi-bookmark', + items: [ + { label: 'Submenu 2.1.1', icon: 'pi pi-fw pi-bookmark' }, + { label: 'Submenu 2.1.2', icon: 'pi pi-fw pi-bookmark' } + ] + }, + { + label: 'Submenu 2.2', + icon: 'pi pi-fw pi-bookmark', + items: [{ label: 'Submenu 2.2.1', icon: 'pi pi-fw pi-bookmark' }] + } + ] + } + ] + }, + { + label: 'Get Started', + items: [ + { + label: 'Documentation', + icon: 'pi pi-fw pi-book', + routerLink: ['/documentation'] + }, + { + label: 'View Source', + icon: 'pi pi-fw pi-github', + url: 'https://github.com/primefaces/sakai-ng', + target: '_blank' + } + ] + } + ]; + } +} diff --git a/src/app/layout/component/app.menuitem.ts b/src/app/layout/component/app.menuitem.ts new file mode 100644 index 0000000..92d9498 --- /dev/null +++ b/src/app/layout/component/app.menuitem.ts @@ -0,0 +1,178 @@ +import { Component, HostBinding, Input } from '@angular/core'; +import { NavigationEnd, Router, RouterModule } from '@angular/router'; +import { animate, state, style, transition, trigger } from '@angular/animations'; +import { Subscription } from 'rxjs'; +import { filter } from 'rxjs/operators'; +import { CommonModule } from '@angular/common'; +import { RippleModule } from 'primeng/ripple'; +import { MenuItem } from 'primeng/api'; +import { LayoutService } from '../service/layout.service'; +import { HasRolePipe } from '@/pipes/has-role-pipe'; + +@Component({ + // eslint-disable-next-line @angular-eslint/component-selector + selector: '[app-menuitem]', + imports: [CommonModule, RouterModule, RippleModule, HasRolePipe], + template: ` + +
{{ item.label }}
+ + + {{ item.label }} + + + + + {{ item.label }} + + + +
    + + @if (child['roles']) { + @if (child['roles'] | hasRole: 'any') { +
  • + } + } + @if (!child['roles']) { +
  • + } +
    +
+
+ `, + animations: [ + trigger('children', [ + state( + 'collapsed', + style({ + height: '0' + }) + ), + state( + 'expanded', + style({ + height: '*' + }) + ), + transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')) + ]) + ], + providers: [LayoutService] +}) +export class AppMenuitem { + @Input() item!: MenuItem; + + @Input() index!: number; + + @Input() @HostBinding('class.layout-root-menuitem') root!: boolean; + + @Input() parentKey!: string; + + active = false; + + menuSourceSubscription: Subscription; + + menuResetSubscription: Subscription; + + key: string = ''; + + constructor( + public router: Router, + private layoutService: LayoutService + ) { + this.menuSourceSubscription = this.layoutService.menuSource$.subscribe((value) => { + Promise.resolve(null).then(() => { + if (value.routeEvent) { + this.active = value.key === this.key || value.key.startsWith(this.key + '-') ? true : false; + } else { + if (value.key !== this.key && !value.key.startsWith(this.key + '-')) { + this.active = false; + } + } + }); + }); + + this.menuResetSubscription = this.layoutService.resetSource$.subscribe(() => { + this.active = false; + }); + + this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((params) => { + if (this.item.routerLink) { + this.updateActiveStateFromRoute(); + } + }); + } + + ngOnInit() { + this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index); + + if (this.item.routerLink) { + this.updateActiveStateFromRoute(); + } + } + + updateActiveStateFromRoute() { + let activeRoute = this.router.isActive(this.item.routerLink[0], { paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }); + + if (activeRoute) { + this.layoutService.onMenuStateChange({ key: this.key, routeEvent: true }); + } + } + + itemClick(event: Event) { + // avoid processing disabled items + if (this.item.disabled) { + event.preventDefault(); + return; + } + + // execute command + if (this.item.command) { + this.item.command({ originalEvent: event, item: this.item }); + } + + // toggle active state + if (this.item.items) { + this.active = !this.active; + } + + this.layoutService.onMenuStateChange({ key: this.key }); + } + + get submenuAnimation() { + return this.root ? 'expanded' : this.active ? 'expanded' : 'collapsed'; + } + + @HostBinding('class.active-menuitem') + get activeClass() { + return this.active && !this.root; + } + + ngOnDestroy() { + if (this.menuSourceSubscription) { + this.menuSourceSubscription.unsubscribe(); + } + + if (this.menuResetSubscription) { + this.menuResetSubscription.unsubscribe(); + } + } +} diff --git a/src/app/layout/component/app.sidebar.ts b/src/app/layout/component/app.sidebar.ts new file mode 100644 index 0000000..0aba02f --- /dev/null +++ b/src/app/layout/component/app.sidebar.ts @@ -0,0 +1,14 @@ +import { Component, ElementRef } from '@angular/core'; +import { AppMenu } from './app.menu'; + +@Component({ + selector: 'app-sidebar', + standalone: true, + imports: [AppMenu], + template: `
+ +
` +}) +export class AppSidebar { + constructor(public el: ElementRef) {} +} diff --git a/src/app/layout/component/app.topbar.ts b/src/app/layout/component/app.topbar.ts new file mode 100644 index 0000000..204457d --- /dev/null +++ b/src/app/layout/component/app.topbar.ts @@ -0,0 +1,152 @@ +import { Component, inject } from '@angular/core'; +import { MenuItem } from 'primeng/api'; +import { RouterModule } from '@angular/router'; +import { CommonModule } from '@angular/common'; +import { StyleClassModule } from 'primeng/styleclass'; +import { AppConfigurator } from './app.configurator'; +import { LayoutService } from '../service/layout.service'; +import { Popover } from 'primeng/popover'; +import Keycloak from 'keycloak-js'; +import { KEYCLOAK_EVENT_SIGNAL } from 'keycloak-angular'; +import { Button } from 'primeng/button'; +import { Tag } from 'primeng/tag'; + +@Component({ + selector: 'app-topbar', + standalone: true, + imports: [RouterModule, CommonModule, StyleClassModule, AppConfigurator, Popover, Button, Tag], + template: ` +
+
+ + + + @if (keycloak.authenticated) { + + + @for (item of keycloak.realmAccess?.roles; track $index) { + + } + } + @if (!keycloak.authenticated) { + + } +
+ +
+
+ +
+ + +
+
+ + + + +
+
` +}) +export class AppTopbar { + items!: MenuItem[]; + + protected keycloak = inject(Keycloak); + private keycloakSignal = inject(KEYCLOAK_EVENT_SIGNAL); + public loggedIn: boolean = false; + public firstName?: string = 'unknown'; + public lastName?: string = 'unknown'; + + constructor(public layoutService: LayoutService) { + if (this.keycloak.authenticated) { + this.loggedIn = true; + + this.keycloak.loadUserProfile().then((userProfile) => { + this.firstName = userProfile.firstName; + this.lastName = userProfile.lastName; + }); + } + } + + logout() { + this.keycloak.logout(); + } + + toggleDarkMode() { + this.layoutService.layoutConfig.update((state) => ({ ...state, darkTheme: !state.darkTheme })); + } +} diff --git a/src/app/layout/service/layout.service.ts b/src/app/layout/service/layout.service.ts new file mode 100644 index 0000000..923d052 --- /dev/null +++ b/src/app/layout/service/layout.service.ts @@ -0,0 +1,178 @@ +import { Injectable, effect, signal, computed } from '@angular/core'; +import { Subject } from 'rxjs'; + +export interface layoutConfig { + preset?: string; + primary?: string; + surface?: string | undefined | null; + darkTheme?: boolean; + menuMode?: string; +} + +interface LayoutState { + staticMenuDesktopInactive?: boolean; + overlayMenuActive?: boolean; + configSidebarVisible?: boolean; + staticMenuMobileActive?: boolean; + menuHoverActive?: boolean; +} + +interface MenuChangeEvent { + key: string; + routeEvent?: boolean; +} + +@Injectable({ + providedIn: 'root' +}) +export class LayoutService { + _config: layoutConfig = { + preset: 'Aura', + primary: 'emerald', + surface: null, + darkTheme: false, + menuMode: 'static' + }; + + _state: LayoutState = { + staticMenuDesktopInactive: false, + overlayMenuActive: false, + configSidebarVisible: false, + staticMenuMobileActive: false, + menuHoverActive: false + }; + + layoutConfig = signal(this._config); + + layoutState = signal(this._state); + + private configUpdate = new Subject(); + + private overlayOpen = new Subject(); + + private menuSource = new Subject(); + + private resetSource = new Subject(); + + menuSource$ = this.menuSource.asObservable(); + + resetSource$ = this.resetSource.asObservable(); + + configUpdate$ = this.configUpdate.asObservable(); + + overlayOpen$ = this.overlayOpen.asObservable(); + + theme = computed(() => (this.layoutConfig()?.darkTheme ? 'light' : 'dark')); + + isSidebarActive = computed(() => this.layoutState().overlayMenuActive || this.layoutState().staticMenuMobileActive); + + isDarkTheme = computed(() => this.layoutConfig().darkTheme); + + getPrimary = computed(() => this.layoutConfig().primary); + + getSurface = computed(() => this.layoutConfig().surface); + + isOverlay = computed(() => this.layoutConfig().menuMode === 'overlay'); + + transitionComplete = signal(false); + + private initialized = false; + + constructor() { + effect(() => { + const config = this.layoutConfig(); + if (config) { + this.onConfigUpdate(); + } + }); + + effect(() => { + const config = this.layoutConfig(); + + if (!this.initialized || !config) { + this.initialized = true; + return; + } + + this.handleDarkModeTransition(config); + }); + } + + private handleDarkModeTransition(config: layoutConfig): void { + if ((document as any).startViewTransition) { + this.startViewTransition(config); + } else { + this.toggleDarkMode(config); + this.onTransitionEnd(); + } + } + + private startViewTransition(config: layoutConfig): void { + const transition = (document as any).startViewTransition(() => { + this.toggleDarkMode(config); + }); + + transition.ready + .then(() => { + this.onTransitionEnd(); + }) + .catch(() => {}); + } + + toggleDarkMode(config?: layoutConfig): void { + const _config = config || this.layoutConfig(); + if (_config.darkTheme) { + document.documentElement.classList.add('app-dark'); + } else { + document.documentElement.classList.remove('app-dark'); + } + } + + private onTransitionEnd() { + this.transitionComplete.set(true); + setTimeout(() => { + this.transitionComplete.set(false); + }); + } + + onMenuToggle() { + if (this.isOverlay()) { + this.layoutState.update((prev) => ({ ...prev, overlayMenuActive: !this.layoutState().overlayMenuActive })); + + if (this.layoutState().overlayMenuActive) { + this.overlayOpen.next(null); + } + } + + if (this.isDesktop()) { + this.layoutState.update((prev) => ({ ...prev, staticMenuDesktopInactive: !this.layoutState().staticMenuDesktopInactive })); + } else { + this.layoutState.update((prev) => ({ ...prev, staticMenuMobileActive: !this.layoutState().staticMenuMobileActive })); + + if (this.layoutState().staticMenuMobileActive) { + this.overlayOpen.next(null); + } + } + } + + isDesktop() { + return window.innerWidth > 991; + } + + isMobile() { + return !this.isDesktop(); + } + + onConfigUpdate() { + this._config = { ...this.layoutConfig() }; + this.configUpdate.next(this.layoutConfig()); + } + + onMenuStateChange(event: MenuChangeEvent) { + this.menuSource.next(event); + } + + reset() { + this.resetSource.next(true); + } +} diff --git a/src/app/pages/auth/access.ts b/src/app/pages/auth/access.ts new file mode 100644 index 0000000..4c62f2d --- /dev/null +++ b/src/app/pages/auth/access.ts @@ -0,0 +1,32 @@ +import { Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { ButtonModule } from 'primeng/button'; +import { RippleModule } from 'primeng/ripple'; +import { AppFloatingConfigurator } from '../../layout/component/app.floatingconfigurator'; + +@Component({ + selector: 'app-access', + standalone: true, + imports: [ButtonModule, RouterModule, RippleModule, AppFloatingConfigurator, ButtonModule], + template: ` +
+
+
+
+
+
+ +
+

Access Denied

+ You do not have the necessary permisions. Please contact admins. + Access denied +
+ +
+
+
+
+
+
` +}) +export class Access {} diff --git a/src/app/pages/auth/auth.routes.ts b/src/app/pages/auth/auth.routes.ts new file mode 100644 index 0000000..c1a6fc2 --- /dev/null +++ b/src/app/pages/auth/auth.routes.ts @@ -0,0 +1,10 @@ +import { Routes } from '@angular/router'; +import { Access } from './access'; +import { Login } from './login'; +import { Error } from './error'; + +export default [ + { path: 'access', component: Access }, + { path: 'error', component: Error }, + { path: 'login', component: Login } +] as Routes; diff --git a/src/app/pages/auth/error.ts b/src/app/pages/auth/error.ts new file mode 100644 index 0000000..d3fc6f2 --- /dev/null +++ b/src/app/pages/auth/error.ts @@ -0,0 +1,32 @@ +import { Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { ButtonModule } from 'primeng/button'; +import { RippleModule } from 'primeng/ripple'; +import { AppFloatingConfigurator } from '../../layout/component/app.floatingconfigurator'; + +@Component({ + selector: 'app-error', + imports: [ButtonModule, RippleModule, RouterModule, AppFloatingConfigurator, ButtonModule], + standalone: true, + template: ` +
+
+
+
+
+
+ +
+

Error Occured

+ Requested resource is not available. + Error +
+ +
+
+
+
+
+
` +}) +export class Error {} diff --git a/src/app/pages/auth/login.ts b/src/app/pages/auth/login.ts new file mode 100644 index 0000000..0b48f0a --- /dev/null +++ b/src/app/pages/auth/login.ts @@ -0,0 +1,71 @@ +import { Component } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; +import { ButtonModule } from 'primeng/button'; +import { CheckboxModule } from 'primeng/checkbox'; +import { InputTextModule } from 'primeng/inputtext'; +import { PasswordModule } from 'primeng/password'; +import { RippleModule } from 'primeng/ripple'; +import { AppFloatingConfigurator } from '../../layout/component/app.floatingconfigurator'; + +@Component({ + selector: 'app-login', + standalone: true, + imports: [ButtonModule, CheckboxModule, InputTextModule, PasswordModule, FormsModule, RouterModule, RippleModule, AppFloatingConfigurator], + template: ` + +
+
+
+
+
+ + + + + + + + + +
Welcome to PrimeLand!
+ Sign in to continue +
+ +
+ + + + + + +
+
+ + +
+ Forgot password? +
+ +
+
+
+
+
+ ` +}) +export class Login { + email: string = ''; + + password: string = ''; + + checked: boolean = false; +} diff --git a/src/app/pages/contacts/contacts.html b/src/app/pages/contacts/contacts.html new file mode 100644 index 0000000..c3fdf3d --- /dev/null +++ b/src/app/pages/contacts/contacts.html @@ -0,0 +1,353 @@ +
+
+
+

Contacts

+

Verwalten Sie Personen und Organisationen in Ihrem Netzwerk

+
+
+ +
+ + + + download + + + + + + person_add + + + +
+
+ + + + + +
+ +
+
+ + + + + +
+
+ +
+
+ + + + + + {{ item.icon }} + {{ item.label }} + + + +
+
+
+ +
+ +
+ + +
+ + Amy Elsner +
+
+ +
+
+ +
+
+ + + mail + + + + + phone + + + + + delete + + +
+
+
+ + Person + +

+ mailj.boedige@gzm-mainz.de +

+

+ phone 0171 3150850 +

+
+
+ +
+ + +
+ + Amy Elsner +
+
+ +
+
+ +
+
+ + + mail + + + + + phone + + + + + delete + + +
+
+
+ + Person + +

+ mailj.boedige@gzm-mainz.de +

+

+ phone 0171 3150850 +

+
+
+ +
+ + +
+ + Amy Elsner +
+
+ +
+
+ +
+
+ + + mail + + + + + phone + + + + + delete + + +
+
+
+ + Person + +

+ mailj.boedige@gzm-mainz.de +

+

+ phone 0171 3150850 +

+
+
+ +
+ + +
+ + Amy Elsner +
+
+ +
+
+ +
+
+ + + mail + + + + + phone + + + + + delete + + +
+
+
+ + Person + +

+ mailj.boedige@gzm-mainz.de +

+

+ phone 0171 3150850 +

+
+
+ +
+ + +
+ + Amy Elsner +
+
+ +
+
+ +
+
+ + + mail + + + + + phone + + + + + delete + + +
+
+
+ + Person + +

+ mailj.boedige@gzm-mainz.de +

+

+ phone 0171 3150850 +

+
+
+ +
+ + + + + +
+ +
+
+ +
+ contact_phone +
+ + +
+ 1 + Contacts total +
+
+
+ +
+
+ +
+ group +
+ + +
+ 0 + Persons +
+
+
+ +
+
+ +
+ corporate_fare +
+ + +
+ 0 + Organisations +
+
+
+ +
+
+ +
+ note_alt +
+ + +
+ 12 + With notes +
+
+
+ +
diff --git a/src/app/pages/contacts/contacts.scss b/src/app/pages/contacts/contacts.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/contacts/contacts.spec.ts b/src/app/pages/contacts/contacts.spec.ts new file mode 100644 index 0000000..dbc62fd --- /dev/null +++ b/src/app/pages/contacts/contacts.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Contacts } from './contacts'; + +describe('Contacts', () => { + let component: Contacts; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Contacts] + }) + .compileComponents(); + + fixture = TestBed.createComponent(Contacts); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/contacts/contacts.ts b/src/app/pages/contacts/contacts.ts new file mode 100644 index 0000000..96ed9be --- /dev/null +++ b/src/app/pages/contacts/contacts.ts @@ -0,0 +1,27 @@ +import { Component } from '@angular/core'; +import { Button } from 'primeng/button'; +import { IconField } from 'primeng/iconfield'; +import { InputIcon } from 'primeng/inputicon'; +import { InputText } from 'primeng/inputtext'; +import { PrimeTemplate } from 'primeng/api'; +import { SelectButton } from 'primeng/selectbutton'; +import { FormsModule } from '@angular/forms'; +import { MatIcon } from '@angular/material/icon'; +import { Panel } from 'primeng/panel'; +import { Chip } from 'primeng/chip'; +import { Avatar } from 'primeng/avatar'; + +@Component({ + selector: 'app-contacts', + imports: [Button, IconField, InputIcon, InputText, MatIcon, PrimeTemplate, SelectButton, FormsModule, Panel, Chip, Avatar], + templateUrl: './contacts.html', + styleUrl: './contacts.scss' +}) +export class Contacts { + protected filterBy = 'all'; + filterOptions: any[] = [ + { label: 'All', value: 'all', icon: 'all_inclusive' }, + { label: 'Persons', value: 'persons', icon: 'group' }, + { label: 'Organisations', value: 'organisations', icon: 'corporate_fare' } + ]; +} diff --git a/src/app/pages/crud/crud.ts b/src/app/pages/crud/crud.ts new file mode 100644 index 0000000..02e74c1 --- /dev/null +++ b/src/app/pages/crud/crud.ts @@ -0,0 +1,387 @@ +import { Component, OnInit, signal, ViewChild } from '@angular/core'; +import { ConfirmationService, MessageService } from 'primeng/api'; +import { Table, TableModule } from 'primeng/table'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { ButtonModule } from 'primeng/button'; +import { RippleModule } from 'primeng/ripple'; +import { ToastModule } from 'primeng/toast'; +import { ToolbarModule } from 'primeng/toolbar'; +import { RatingModule } from 'primeng/rating'; +import { InputTextModule } from 'primeng/inputtext'; +import { TextareaModule } from 'primeng/textarea'; +import { SelectModule } from 'primeng/select'; +import { RadioButtonModule } from 'primeng/radiobutton'; +import { InputNumberModule } from 'primeng/inputnumber'; +import { DialogModule } from 'primeng/dialog'; +import { TagModule } from 'primeng/tag'; +import { InputIconModule } from 'primeng/inputicon'; +import { IconFieldModule } from 'primeng/iconfield'; +import { ConfirmDialogModule } from 'primeng/confirmdialog'; +import { Property, ProductService } from '../service/product.service'; + +interface Column { + field: string; + header: string; + customExportHeader?: string; +} + +interface ExportColumn { + title: string; + dataKey: string; +} + +@Component({ + selector: 'app-crud', + standalone: true, + imports: [ + CommonModule, + TableModule, + FormsModule, + ButtonModule, + RippleModule, + ToastModule, + ToolbarModule, + RatingModule, + InputTextModule, + TextareaModule, + SelectModule, + RadioButtonModule, + InputNumberModule, + DialogModule, + TagModule, + InputIconModule, + IconFieldModule, + ConfirmDialogModule + ], + template: ` + + + + + + + + + + + + + +
+
Manage Products
+ + + + +
+
+ + + + + + Code + + Name + + + Image + + Price + + + + Category + + + + Reviews + + + + Status + + + + + + + + + + + {{ product.code }} + {{ product.name }} + + + + {{ product.price | currency: 'USD' }} + {{ product.category }} + + + + + + + + + + + + +
+ + + +
+ +
+ + + Name is required. +
+
+ + +
+ +
+ + +
+ +
+ Category +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+
+ + +
+
+ + +
+
+
+
+ + + + + +
+ + + `, + providers: [MessageService, ProductService, ConfirmationService] +}) +export class Crud implements OnInit { + productDialog: boolean = false; + + products = signal([]); + + product!: Property; + + selectedProducts!: Property[] | null; + + submitted: boolean = false; + + statuses!: any[]; + + @ViewChild('dt') dt!: Table; + + exportColumns!: ExportColumn[]; + + cols!: Column[]; + + constructor( + private productService: ProductService, + private messageService: MessageService, + private confirmationService: ConfirmationService + ) {} + + exportCSV() { + this.dt.exportCSV(); + } + + ngOnInit() { + this.loadDemoData(); + } + + loadDemoData() { + this.productService.getProducts().then((data) => { + this.products.set(data); + }); + + this.statuses = [ + { label: 'INSTOCK', value: 'instock' }, + { label: 'LOWSTOCK', value: 'lowstock' }, + { label: 'OUTOFSTOCK', value: 'outofstock' } + ]; + + this.cols = [ + { field: 'code', header: 'Code', customExportHeader: 'Product Code' }, + { field: 'name', header: 'Name' }, + { field: 'image', header: 'Image' }, + { field: 'price', header: 'Price' }, + { field: 'category', header: 'Category' } + ]; + + this.exportColumns = this.cols.map((col) => ({ title: col.header, dataKey: col.field })); + } + + onGlobalFilter(table: Table, event: Event) { + table.filterGlobal((event.target as HTMLInputElement).value, 'contains'); + } + + openNew() { + this.product = {}; + this.submitted = false; + this.productDialog = true; + } + + editProduct(product: Property) { + this.product = { ...product }; + this.productDialog = true; + } + + deleteSelectedProducts() { + this.confirmationService.confirm({ + message: 'Are you sure you want to delete the selected products?', + header: 'Confirm', + icon: 'pi pi-exclamation-triangle', + accept: () => { + this.products.set(this.products().filter((val) => !this.selectedProducts?.includes(val))); + this.selectedProducts = null; + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Products Deleted', + life: 3000 + }); + } + }); + } + + hideDialog() { + this.productDialog = false; + this.submitted = false; + } + + deleteProduct(product: Property) { + this.confirmationService.confirm({ + message: 'Are you sure you want to delete ' + product.name + '?', + header: 'Confirm', + icon: 'pi pi-exclamation-triangle', + accept: () => { + this.products.set(this.products().filter((val) => val.id !== product.id)); + this.product = {}; + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Product Deleted', + life: 3000 + }); + } + }); + } + + findIndexById(id: string): number { + let index = -1; + for (let i = 0; i < this.products().length; i++) { + if (this.products()[i].id === id) { + index = i; + break; + } + } + + return index; + } + + createId(): string { + let id = ''; + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + for (var i = 0; i < 5; i++) { + id += chars.charAt(Math.floor(Math.random() * chars.length)); + } + return id; + } + + getSeverity(status: string) { + switch (status) { + case 'INSTOCK': + return 'success'; + case 'LOWSTOCK': + return 'warn'; + case 'OUTOFSTOCK': + return 'danger'; + default: + return 'info'; + } + } + + saveProduct() { + this.submitted = true; + let _products = this.products(); + if (this.product.name?.trim()) { + if (this.product.id) { + _products[this.findIndexById(this.product.id)] = this.product; + this.products.set([..._products]); + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Product Updated', + life: 3000 + }); + } else { + this.product.id = this.createId(); + this.product.image = 'product-placeholder.svg'; + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Product Created', + life: 3000 + }); + this.products.set([..._products, this.product]); + } + + this.productDialog = false; + this.product = {}; + } + } +} diff --git a/src/app/pages/dashboard/components/activities-widget.component.ts b/src/app/pages/dashboard/components/activities-widget.component.ts new file mode 100644 index 0000000..c707c7e --- /dev/null +++ b/src/app/pages/dashboard/components/activities-widget.component.ts @@ -0,0 +1,81 @@ +import { Component } from '@angular/core'; +import { ButtonModule } from 'primeng/button'; +import { MenuModule } from 'primeng/menu'; + +@Component({ + standalone: true, + selector: 'app-activities-widget', + imports: [ButtonModule, MenuModule], + template: `
+
+
Letzte Aktivitäten
+
+ + +
+
+ + HEUTE +
    +
  • +
    + +
    + +
    +

    Ereignis "vor Ort Aufnahme " hinzugefügt

    +

    Ein neues Ereignis wurde zu Projekt "Heizungsmodernisierung " hinzugefügt

    +

    01.09.2025

    +
    +
  • + +
  • +
    + +
    + +
    +

    Ereignis "Antrag Bafa iSFP" hinzugefügt

    +

    Ein neues Ereignis wurde zu Projekt "Heizungsmodernisierung " hinzugefügt

    +

    01.09.2025

    +
    +
  • +
+ + GESTERN +
    +
  • +
    + +
    + +
    +

    Eier gekrault

    +

    kwt

    +

    01.09.2025

    +
    +
  • +
+ + LETZTE WOCHE +
    +
  • +
    + +
    + +
    +

    Lorem Ipsum

    +

    yadda yadda yadda

    +

    01.09.2025

    +
    +
  • +
+
` +}) +export class ActivitiesWidget { + items = [ + { label: 'Add New', icon: 'pi pi-fw pi-plus' }, + { label: 'Remove', icon: 'pi pi-fw pi-trash' } + ]; +} diff --git a/src/app/pages/dashboard/components/current-projects-widget.component.ts b/src/app/pages/dashboard/components/current-projects-widget.component.ts new file mode 100644 index 0000000..170a10b --- /dev/null +++ b/src/app/pages/dashboard/components/current-projects-widget.component.ts @@ -0,0 +1,60 @@ +import { Component } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ButtonModule } from 'primeng/button'; +import { MenuModule } from 'primeng/menu'; +import { Panel } from 'primeng/panel'; +import { ProgressBar } from 'primeng/progressbar'; + +@Component({ + standalone: true, + selector: 'app-current-projects-widget', + imports: [CommonModule, ButtonModule, MenuModule, Panel, ProgressBar], + template: ` +
+
+
Aktuelle Projekte
+
+ + +
+
+ + + +
+ EnB Bvh Rheinallee 191 +
+
+ +
+
+ Erstellt: 01.09.1025 +
+ Bis: 22.12.2026 +
+
+ + + + + +

+ Nicht-Wohngebäude mit Mischnutzung +

+

+ Fortschritt: + +

+
+
` +}) +export class CurrentProjectsWidget { + menu = null; + + items = [ + { label: 'Add New', icon: 'pi pi-fw pi-plus' }, + { label: 'Remove', icon: 'pi pi-fw pi-trash' } + ]; +} diff --git a/src/app/pages/dashboard/components/recentsaleswidget.ts b/src/app/pages/dashboard/components/recentsaleswidget.ts new file mode 100644 index 0000000..afc2c34 --- /dev/null +++ b/src/app/pages/dashboard/components/recentsaleswidget.ts @@ -0,0 +1,47 @@ +import { Component } from '@angular/core'; +import { RippleModule } from 'primeng/ripple'; +import { TableModule } from 'primeng/table'; +import { ButtonModule } from 'primeng/button'; +import { CommonModule } from '@angular/common'; +import { Property, ProductService } from '../../service/product.service'; + +@Component({ + standalone: true, + selector: 'app-recent-sales-widget', + imports: [CommonModule, TableModule, ButtonModule, RippleModule], + template: `
+
Recent Sales
+ + + + Image + Name + Price + View + + + + + + {{ product.name }} + + {{ product.name }} + {{ product.price | currency: 'USD' }} + + + + + + +
`, + providers: [ProductService] +}) +export class RecentSalesWidget { + products!: Property[]; + + constructor(private productService: ProductService) {} + + ngOnInit() { + this.productService.getProductsSmall().then((data) => (this.products = data)); + } +} diff --git a/src/app/pages/dashboard/components/revenuestreamwidget.ts b/src/app/pages/dashboard/components/revenuestreamwidget.ts new file mode 100644 index 0000000..afff2df --- /dev/null +++ b/src/app/pages/dashboard/components/revenuestreamwidget.ts @@ -0,0 +1,113 @@ +import { Component } from '@angular/core'; +import { ChartModule } from 'primeng/chart'; +import { debounceTime, Subscription } from 'rxjs'; +import { LayoutService } from '../../../layout/service/layout.service'; + +@Component({ + standalone: true, + selector: 'app-revenue-stream-widget', + imports: [ChartModule], + template: `
+
Revenue Stream
+ +
` +}) +export class RevenueStreamWidget { + chartData: any; + + chartOptions: any; + + subscription!: Subscription; + + constructor(public layoutService: LayoutService) { + this.subscription = this.layoutService.configUpdate$.pipe(debounceTime(25)).subscribe(() => { + this.initChart(); + }); + } + + ngOnInit() { + this.initChart(); + } + + initChart() { + const documentStyle = getComputedStyle(document.documentElement); + const textColor = documentStyle.getPropertyValue('--text-color'); + const borderColor = documentStyle.getPropertyValue('--surface-border'); + const textMutedColor = documentStyle.getPropertyValue('--text-color-secondary'); + + this.chartData = { + labels: ['Q1', 'Q2', 'Q3', 'Q4'], + datasets: [ + { + type: 'bar', + label: 'Subscriptions', + backgroundColor: documentStyle.getPropertyValue('--p-primary-400'), + data: [4000, 10000, 15000, 4000], + barThickness: 32 + }, + { + type: 'bar', + label: 'Advertising', + backgroundColor: documentStyle.getPropertyValue('--p-primary-300'), + data: [2100, 8400, 2400, 7500], + barThickness: 32 + }, + { + type: 'bar', + label: 'Affiliate', + backgroundColor: documentStyle.getPropertyValue('--p-primary-200'), + data: [4100, 5200, 3400, 7400], + borderRadius: { + topLeft: 8, + topRight: 8, + bottomLeft: 0, + bottomRight: 0 + }, + borderSkipped: false, + barThickness: 32 + } + ] + }; + + this.chartOptions = { + maintainAspectRatio: false, + aspectRatio: 0.8, + plugins: { + legend: { + labels: { + color: textColor + } + } + }, + scales: { + x: { + stacked: true, + ticks: { + color: textMutedColor + }, + grid: { + color: 'transparent', + borderColor: 'transparent' + } + }, + y: { + stacked: true, + ticks: { + color: textMutedColor + }, + grid: { + color: borderColor, + borderColor: 'transparent', + drawTicks: false + } + } + } + }; + } + + ngOnDestroy() { + if (this.subscription) { + this.subscription.unsubscribe(); + } + } +} diff --git a/src/app/pages/dashboard/components/statswidget.ts b/src/app/pages/dashboard/components/statswidget.ts new file mode 100644 index 0000000..af0cae7 --- /dev/null +++ b/src/app/pages/dashboard/components/statswidget.ts @@ -0,0 +1,65 @@ +import { Component } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +@Component({ + standalone: true, + selector: 'app-stats-widget', + imports: [CommonModule], + template: `
+
+
+
+ Gebäude verwaltet +
152
+
+
+ +
+
+ Gesamt im Portfolio +
+
+
+
+
+
+ Aktive Projekte +
12
+
+
+ +
+
+ von 73 insgesamt +
+
+
+
+
+
+ Kontakte +
28441
+
+
+ +
+
+ Personen & Unternehmen +
+
+
+
+
+
+ Projekte abgeschlossen +
152
+
+
+ +
+
+ Erfolgreich beendet +
+
` +}) +export class StatsWidget {} diff --git a/src/app/pages/dashboard/dashboard.ts b/src/app/pages/dashboard/dashboard.ts new file mode 100644 index 0000000..8d24812 --- /dev/null +++ b/src/app/pages/dashboard/dashboard.ts @@ -0,0 +1,26 @@ +import { Component } from '@angular/core'; +import { ActivitiesWidget } from './components/activities-widget.component'; +import { StatsWidget } from './components/statswidget'; +import { CurrentProjectsWidget } from './components/current-projects-widget.component'; + +@Component({ + selector: 'app-dashboard', + imports: [StatsWidget, CurrentProjectsWidget, ActivitiesWidget], + template: ` +
+

Dashboard

+

Willkommen zurück! Hier ist ein Überblick über Ihr Portfolio.

+
+ +
+ +
+ +
+
+ +
+
+ ` +}) +export class Dashboard {} diff --git a/src/app/pages/documentation/documentation.ts b/src/app/pages/documentation/documentation.ts new file mode 100644 index 0000000..06cbcca --- /dev/null +++ b/src/app/pages/documentation/documentation.ts @@ -0,0 +1,73 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-documentation', + standalone: true, + imports: [CommonModule], + template: ` +
+
Documentation
+
Get Started
+

Sakai is an application template for Angular and is distributed as a CLI project. Current versions is Angular v20 with PrimeNG v20. In case CLI is not installed already, use the command below to set it up.

+
+npm install -g @angular/cli
+

+ Once CLI is ready in your system, extract the contents of the zip file distribution, cd to the directory, install the libraries from npm and then execute "ng serve" to run the application in your local environment. +

+
+git clone https://github.com/primefaces/sakai-ng
+npm install
+ng serve
+ +

The application should run at http://localhost:4200/ to view the application in your local environment.

+ +
Structure
+

Templates consists of a couple folders, demos and layout have been separated so that you can easily identify what is necessary for your application.

+
    +
  • src/app/layout: Main layout files, needs to be present.
  • +
  • src/app/pages: Demo content like Dashboard.
  • +
  • src/assets/demo: Assets used in demos
  • +
  • src/assets/layout: SCSS files of the main layout
  • +
+ +
Menu
+

+ Main menu is defined at src/app/layout/component/app.menu.ts file. Update the + model property to define your own menu items. +

+ +
Layout Service
+

+ src/app/layout/service/layout.service.ts is a service that manages layout state changes, including dark mode, PrimeNG theme, menu modes, and states. +

+ +
Tailwind CSS
+

The demo pages are developed with Tailwind CSS however the core application shell uses custom CSS.

+ +
Variables
+

+ CSS variables used in the template are derived from the applied PrimeNG theme. Customize them through the CSS variables in src/assets/layout/variables. +

+
+ `, + styles: ` + @media screen and (max-width: 991px) { + .video-container { + position: relative; + width: 100%; + height: 0; + padding-bottom: 56.25%; + + iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } + } + } + ` +}) +export class Documentation {} diff --git a/src/app/pages/empty/empty.ts b/src/app/pages/empty/empty.ts new file mode 100644 index 0000000..f65e698 --- /dev/null +++ b/src/app/pages/empty/empty.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-empty', + standalone: true, + template: `
+
Empty Page
+

Use this page to start from scratch and place your custom content.

+
` +}) +export class Empty {} diff --git a/src/app/pages/landing/components/featureswidget.ts b/src/app/pages/landing/components/featureswidget.ts new file mode 100644 index 0000000..68a459f --- /dev/null +++ b/src/app/pages/landing/components/featureswidget.ts @@ -0,0 +1,139 @@ +import { Component } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +@Component({ + selector: 'features-widget', + standalone: true, + imports: [CommonModule], + template: `
+
+
+
Marvelous Features
+ Placerat in egestas erat... +
+ +
+
+
+
+ +
+
Easy to Use
+ Posuere morbi leo urna molestie. +
+
+
+ +
+
+
+
+ +
+
Fresh Design
+ Semper risus in hendrerit. +
+
+
+ +
+
+
+
+ +
+
Well Documented
+ Non arcu risus quis varius quam quisque. +
+
+
+ +
+
+
+
+ +
+
Responsive Layout
+ Nulla malesuada pellentesque elit. +
+
+
+ +
+
+
+
+ +
+
Clean Code
+ Condimentum lacinia quis vel eros. +
+
+
+ +
+
+
+
+ +
+
Dark Mode
+ Convallis tellus id interdum velit laoreet. +
+
+
+ +
+
+
+
+ +
+
Ready to Use
+ Mauris sit amet massa vitae. +
+
+
+ +
+
+
+
+ +
+
Modern Practices
+ Elementum nibh tellus molestie nunc non. +
+
+
+ +
+
+
+
+ +
+
Privacy
+ Neque egestas congue quisque. +
+
+
+ +
+
+
Joséphine Miller
+ Peak Interactive +

+ “Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.” +

+ Company logo +
+
+
+
` +}) +export class FeaturesWidget {} diff --git a/src/app/pages/landing/components/footerwidget.ts b/src/app/pages/landing/components/footerwidget.ts new file mode 100644 index 0000000..a8cbd8d --- /dev/null +++ b/src/app/pages/landing/components/footerwidget.ts @@ -0,0 +1,73 @@ +import { Component } from '@angular/core'; +import { Router, RouterModule } from '@angular/router'; + +@Component({ + selector: 'footer-widget', + imports: [RouterModule], + template: ` +
+
+ + +
+
+ + +
+

Resources

+ Get Started + Learn + Case Studies +
+ +
+

Community

+ Discord + Eventsbadge + FAQ + Blog +
+ + +
+
+
+
+ ` +}) +export class FooterWidget { + constructor(public router: Router) {} +} diff --git a/src/app/pages/landing/components/herowidget.ts b/src/app/pages/landing/components/herowidget.ts new file mode 100644 index 0000000..fbbf017 --- /dev/null +++ b/src/app/pages/landing/components/herowidget.ts @@ -0,0 +1,25 @@ +import { Component } from '@angular/core'; +import { ButtonModule } from 'primeng/button'; +import { RippleModule } from 'primeng/ripple'; + +@Component({ + selector: 'hero-widget', + imports: [ButtonModule, RippleModule], + template: ` +
+
+

Eu sem integereget magna fermentum

+

Sed blandit libero volutpat sed cras. Fames ac turpis egestas integer. Placerat in egestas erat...

+ +
+
+ Hero Image +
+
+ ` +}) +export class HeroWidget {} diff --git a/src/app/pages/landing/components/highlightswidget.ts b/src/app/pages/landing/components/highlightswidget.ts new file mode 100644 index 0000000..8e80e2d --- /dev/null +++ b/src/app/pages/landing/components/highlightswidget.ts @@ -0,0 +1,46 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'highlights-widget', + template: ` +
+
+
Powerful Everywhere
+ Amet consectetur adipiscing elit... +
+ +
+
+ mockup mobile +
+ +
+
+ +
+
Congue Quisque Egestas
+ Lectus arcu bibendum at varius vel pharetra vel turpis nunc. Eget aliquet nibh praesent tristique magna sit amet purus gravida. Sit amet mattis vulputate enim nulla aliquet. +
+
+ +
+
+
+ +
+
Celerisque Eu Ultrices
+ Adipiscing commodo elit at imperdiet dui. Viverra nibh cras pulvinar mattis nunc sed blandit libero. Suspendisse in est ante in. Mauris pharetra et ultrices neque ornare aenean euismod elementum nisi. +
+ +
+ mockup +
+
+
+ ` +}) +export class HighlightsWidget {} diff --git a/src/app/pages/landing/components/pricingwidget.ts b/src/app/pages/landing/components/pricingwidget.ts new file mode 100644 index 0000000..f091a2c --- /dev/null +++ b/src/app/pages/landing/components/pricingwidget.ts @@ -0,0 +1,119 @@ +import { Component } from '@angular/core'; +import { ButtonModule } from 'primeng/button'; +import { DividerModule } from 'primeng/divider'; +import { RippleModule } from 'primeng/ripple'; + +@Component({ + selector: 'pricing-widget', + imports: [DividerModule, ButtonModule, RippleModule], + template: ` +
+
+
Matchless Pricing
+ Amet consectetur adipiscing elit... +
+ +
+
+
+
Free
+ free +
+
+ $0 + per month +
+ +
+ +
    +
  • + + Responsive Layout +
  • +
  • + + Unlimited Push Messages +
  • +
  • + + 50 Support Ticket +
  • +
  • + + Free Shipping +
  • +
+
+
+ +
+
+
Startup
+ startup +
+
+ $1 + per month +
+ +
+ +
    +
  • + + Responsive Layout +
  • +
  • + + Unlimited Push Messages +
  • +
  • + + 50 Support Ticket +
  • +
  • + + Free Shipping +
  • +
+
+
+ +
+
+
Enterprise
+ enterprise +
+
+ $5 + per month +
+ +
+ +
    +
  • + + Responsive Layout +
  • +
  • + + Unlimited Push Messages +
  • +
  • + + 50 Support Ticket +
  • +
  • + + Free Shipping +
  • +
+
+
+
+
+ ` +}) +export class PricingWidget {} diff --git a/src/app/pages/landing/components/topbarwidget.component.ts b/src/app/pages/landing/components/topbarwidget.component.ts new file mode 100644 index 0000000..879c0a0 --- /dev/null +++ b/src/app/pages/landing/components/topbarwidget.component.ts @@ -0,0 +1,68 @@ +import { Component } from '@angular/core'; +import { StyleClassModule } from 'primeng/styleclass'; +import { Router, RouterModule } from '@angular/router'; +import { RippleModule } from 'primeng/ripple'; +import { ButtonModule } from 'primeng/button'; +import {AppFloatingConfigurator} from "@/layout/component/app.floatingconfigurator"; + +@Component({ + selector: 'topbar-widget', + imports: [RouterModule, StyleClassModule, ButtonModule, RippleModule, AppFloatingConfigurator], + template: ` + + + + + + + + + + SAKAI + + + + + + + ` +}) +export class TopbarWidget { + constructor(public router: Router) {} +} diff --git a/src/app/pages/landing/landing.ts b/src/app/pages/landing/landing.ts new file mode 100644 index 0000000..56d3e46 --- /dev/null +++ b/src/app/pages/landing/landing.ts @@ -0,0 +1,31 @@ +import { Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { RippleModule } from 'primeng/ripple'; +import { StyleClassModule } from 'primeng/styleclass'; +import { ButtonModule } from 'primeng/button'; +import { DividerModule } from 'primeng/divider'; +import { TopbarWidget } from './components/topbarwidget.component'; +import { HeroWidget } from './components/herowidget'; +import { FeaturesWidget } from './components/featureswidget'; +import { HighlightsWidget } from './components/highlightswidget'; +import { PricingWidget } from './components/pricingwidget'; +import { FooterWidget } from './components/footerwidget'; + +@Component({ + selector: 'app-landing', + standalone: true, + imports: [RouterModule, TopbarWidget, HeroWidget, FeaturesWidget, HighlightsWidget, PricingWidget, FooterWidget, RippleModule, StyleClassModule, ButtonModule, DividerModule], + template: ` +
+
+ + + + + + +
+
+ ` +}) +export class Landing {} diff --git a/src/app/pages/notfound/notfound.ts b/src/app/pages/notfound/notfound.ts new file mode 100644 index 0000000..07ef44a --- /dev/null +++ b/src/app/pages/notfound/notfound.ts @@ -0,0 +1,68 @@ +import { Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { ButtonModule } from 'primeng/button'; +import { AppFloatingConfigurator } from '../../layout/component/app.floatingconfigurator'; + +@Component({ + selector: 'app-notfound', + standalone: true, + imports: [RouterModule, AppFloatingConfigurator, ButtonModule], + template: ` + ` +}) +export class Notfound {} diff --git a/src/app/pages/pages.routes.ts b/src/app/pages/pages.routes.ts new file mode 100644 index 0000000..6561edc --- /dev/null +++ b/src/app/pages/pages.routes.ts @@ -0,0 +1,11 @@ +import { Routes } from '@angular/router'; +import { Documentation } from './documentation/documentation'; +import { Crud } from './crud/crud'; +import { Empty } from './empty/empty'; + +export default [ + { path: 'documentation', component: Documentation }, + { path: 'crud', component: Crud }, + { path: 'empty', component: Empty }, + { path: '**', redirectTo: '/notfound' } +] as Routes; diff --git a/src/app/pages/project-details/project-details.html b/src/app/pages/project-details/project-details.html new file mode 100644 index 0000000..9fd18ff --- /dev/null +++ b/src/app/pages/project-details/project-details.html @@ -0,0 +1,131 @@ +
+
+
+

Projekt Details

+

{{ projectDetailsDTO?.name }}

+

Erstellt: {{ projectDetailsDTO?.createdAt | date: 'dd.MM.yyyy HH:mm' }}

+
+
+ + + edit_document + + +
+ + +
+
+ + +
+ apartment + Projektinformationen +
+
+ + +
+
+
+ Projektname +

{{ projectDetailsDTO?.name }}

+
+ +
+ Status +

{{ projectDetailsDTO?.status }}

+
+ +
+ Beantragte Summe +

{{ projectDetailsDTO?.amountRequested | currency: 'EUR' }}

+
+ +
+ Startdatum +

calendar_today {{ projectDetailsDTO?.startDate | date }}

+
+
+ +
+
+ Vorgangsnummer +

{{ projectDetailsDTO?.eventNumber }}

+
+ +
+ Projekt Typ +

{{ projectDetailsDTO?.projectType }}

+
+ +
+ Gebäude +

location_on {{ projectDetailsDTO?.address }}

+
+ +
+ Enddatum +

calendar_today {{ projectDetailsDTO?.endDate | date }}

+
+
+
+ + + +
+

Beschreibung

+

+
+ +
+ + + +
+ apartment + Notizen & Dokumente +
+
+ + + Hier können Projektnotizen und Dokumente verwaltet werden. + +
+
+ +
+
+ + + + @if (event.timelineEventType.icon != null && event.timelineEventType.icon != "") { + + } + @if (event.timelineEventType.icon == null) { + + } + + + + + + + @if (event?.description) { +

{{ event?.description }}

+ } + + @if (event?.documents.length > 0) { + + + search + + + } +
+
+
+
+
+ +
diff --git a/src/app/pages/project-details/project-details.scss b/src/app/pages/project-details/project-details.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/project-details/project-details.spec.ts b/src/app/pages/project-details/project-details.spec.ts new file mode 100644 index 0000000..e8d86af --- /dev/null +++ b/src/app/pages/project-details/project-details.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProjectDetails } from './project-details'; + +describe('ProjectDetails', () => { + let component: ProjectDetails; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ProjectDetails] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ProjectDetails); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/project-details/project-details.ts b/src/app/pages/project-details/project-details.ts new file mode 100644 index 0000000..7973891 --- /dev/null +++ b/src/app/pages/project-details/project-details.ts @@ -0,0 +1,74 @@ +import { Component, OnInit } from '@angular/core'; +import { Button } from 'primeng/button'; +import { Panel } from 'primeng/panel'; +import { Timeline } from 'primeng/timeline'; +import { Card } from 'primeng/card'; +import { Divider } from 'primeng/divider'; +import { ProjectService } from '@/pages/service/project.service'; +import { ActivatedRoute } from '@angular/router'; +import { CurrencyPipe, DatePipe } from '@angular/common'; +import { SafeHtmlPipe } from '@/pipes/safe-html-pipe'; +import { ProjectType } from '@/pages/service/project-type.service'; + +export interface ProjectTimelineEventDTO { + id?: string; // UUID + date?: Date; + description?: string; + documents?: string[]; + + + projectEventType?: string; // impact on icon and color + title?: string; +} + +export interface ProjectDetailsDTO { + id?: string; // UUID + address: string; + amountRequested: number; + endDate?: Date; + eventNumber?: string; + name?: string; + projectType?: ProjectType; + startDate?: Date; + status?: string; + timelineEvents: ProjectTimelineEventDTO[]; + description?: string; + createdAt?: Date; +} + +@Component({ + selector: 'app-project-details', + imports: [Button, Panel, Timeline, Card, Divider, CurrencyPipe, DatePipe, SafeHtmlPipe, SafeHtmlPipe], + templateUrl: './project-details.html', + styleUrl: './project-details.scss' +}) +export class ProjectDetails implements OnInit { + events: any[] = []; + projectDetailsDTO: ProjectDetailsDTO | undefined; + + constructor( + private projectService: ProjectService, + private route: ActivatedRoute + ) {} + + ngOnInit() { + this.projectService.getProject(this.route.snapshot.paramMap.get('id') ?? '').subscribe((project: ProjectDetailsDTO) => { + this.projectDetailsDTO = project; + + console.debug('Edit project ', this.projectDetailsDTO); + }); + + this.events = [ + { title: 'Geplantes Ende', date: '22.12.2026 01:00', description: null, document: null, icon: 'pi pi-shopping-cart', color: '#9C27B0' }, + { title: 'Vor-ort-Aufnahme', date: '01.09.2025 17:51', description: 'War ok sind nicht in den Keller gekommen.', document: null, icon: 'pi pi-cog', color: '#673AB7' }, + { title: 'Antrag Bafa iSFP', date: '01.09.2025 16:31', description: 'Antragsstellung in Vollmacht Bafa vor Ort Beratung', document: ['/path/to/document.pdf'], icon: 'pi pi-shopping-cart', color: '#FF9800' }, + { title: 'Delivevor Ort Aufnahmered', date: '01.09.2025 15:41', description: 'Alles in Ordnung', document: ['/path/to/document.pdf'], icon: 'pi pi-check', color: '#607D8B' }, + { title: 'Projekt erstellt', date: '01.09.2025 15:41', description: null, document: null, icon: 'pi pi-check', color: '#607D8B' }, + { title: 'Projekt gestartet', date: '11.04.2025 02:00', description: null, document: null, icon: 'pi pi-check', color: '#607D8B' } + ]; + } + + protected readonly event = event; +} + + diff --git a/src/app/pages/projects/projects.html b/src/app/pages/projects/projects.html new file mode 100644 index 0000000..7fece79 --- /dev/null +++ b/src/app/pages/projects/projects.html @@ -0,0 +1,497 @@ +
+
+
+

Projekte

+

Übersicht und Verwaltung aller Sanierungsprojekte

+
+
+ +
+ + + + analytics + + + + + + add + + + +
+
+ + + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + +
+
{{ selectedItem.label }}
+
+
+ +
+
{{ item.label }}
+
+
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + + + + +
+
+ + +
+ + +
+
+ +
+ +
+
+ + + + + +
+
+ +
+
+ + + + + + {{ item.icon }} + {{ item.label }} + + + +
+
+ +
+
+ + + +
+
{{ selectedOption.label }}
+
+
+ +
+
{{ status.label }}
+
+
+
+
+
+ +
+
+ + + +
+
{{ selectedOption.label }}
+
+
+ +
+
{{ measures.label }}
+
+
+
+
+
+ +
+ +@if (viewMode === 'kanban') { +
+
+ + +
+ Vorbereitung +
+
+

+ + +

+ EnB Bvh Rheinallee 191 +
+ + +
+ + +
+
+ +

+ Modul 2 +

+

+ Rheinallee 191, Mainz +

+
+

+ +

+ + +

+ EnB Bvh Rheinallee 191 +
+ + +
+ + +
+
+ +

+ Modul 2 +

+

+ Rheinallee 191, Mainz +

+ +

+ +
+
+ + +
+ Aktiv +
+
+ +

+ + +

+ EnB Bvh Rheinallee 191 +
+ + +
+ + +
+
+ +

+ Modul 2 +

+

+ Rheinallee 191, Mainz +

+
+

+ +

+ el2 +

+ +
+
+ + +
+ Abgeschlossen +
+
+ +

+ el1 +

+ +

+ el2 +

+
+
+
+ + +
+ Problem +
+
+ +

+ el1 +

+ +

+ el2 +

+
+
+
+} + +@if (viewMode === 'grid') { +
+ + @for (project of projects; track project.id) { +
+ + +
+ + {{ project.name }} {{ project.property?.street }} {{ project.property?.houseNumber }} + +
+
+ +
+
+ Erstellt: {{ project.createdAt | date:'dd.MM.yyyy HH:mm'}} +
+ + + + + search + Details + + + +
+
+ +
+ @switch (project?.status?.name) { + @case ('preparation') { + + } + @case ('active') { + + } + @case ('completed') { + + } + @case ('problem') { + + } + } + + @switch (project?.projectType?.name) { + @case ('energy_consulting_wg') { + + } + @case ('energy_consulting_nwg') { + + } + @case ('individual_measures') { + + } + @case ('efficiency_house_renovation') { + + } + @case ('efficiency_house_new_construction') { + + } + @case ('energy_performance_certificate') { + + } + @case ('specialist_planning_for_building_physics') { + + } + @case ('specialist_planning_for_heating') { + + } + @case ('certification') { + + } + } + +
+
+ +

Module 2

+

+ {{ project.property?.street }} {{ project.property?.houseNumber }}, {{ project.property?.zipCode }} {{ project.property?.city }} +

+

+
+
+ } + +
+} + + +
+
+
+ +
+ list +
+ + +
+ {{ projectsStatsCountTotal }} + Projekte insgesamt +
+
+
+ +
+
+ +
+ schedule +
+ + +
+ {{ projectsStatsCountActive }} + Aktiv +
+
+
+ +
+
+ +
+ checklist +
+ + +
+ {{ projectsStatsCountCompleted }} + Abgeschlossen +
+
+
+ +
+
+ +
+ attach_money +
+ + +
+ {{ projectsStatsAmountRequestedInTotal| currency: 'EUR' }} + Beantragte Summe +
+
+
+ + +
diff --git a/src/app/pages/projects/projects.scss b/src/app/pages/projects/projects.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/projects/projects.spec.ts b/src/app/pages/projects/projects.spec.ts new file mode 100644 index 0000000..599bc01 --- /dev/null +++ b/src/app/pages/projects/projects.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Projects } from './projects'; + +describe('Projects', () => { + let component: Projects; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Projects] + }) + .compileComponents(); + + fixture = TestBed.createComponent(Projects); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/projects/projects.ts b/src/app/pages/projects/projects.ts new file mode 100644 index 0000000..a1e07b0 --- /dev/null +++ b/src/app/pages/projects/projects.ts @@ -0,0 +1,235 @@ +import { Component, OnInit } from '@angular/core'; +import { IconField } from 'primeng/iconfield'; +import { InputIcon } from 'primeng/inputicon'; +import { InputText } from 'primeng/inputtext'; +import { SelectButton } from 'primeng/selectbutton'; +import { FormsModule } from '@angular/forms'; +import { MessageService, PrimeTemplate } from 'primeng/api'; +import { MatIcon } from '@angular/material/icon'; +import { Select } from 'primeng/select'; +import { Panel } from 'primeng/panel'; +import { Button } from 'primeng/button'; +import { Chip } from 'primeng/chip'; +import { Router } from '@angular/router'; +import { Dialog } from 'primeng/dialog'; +import { DatePicker } from 'primeng/datepicker'; +import { InputGroup } from 'primeng/inputgroup'; +import { InputGroupAddon } from 'primeng/inputgroupaddon'; +import { Editor } from 'primeng/editor'; +import { InputNumber } from 'primeng/inputnumber'; +import { PropertyService } from '@/pages/service/property.service'; +import { Project, ProjectService} from '@/pages/service/project.service'; +import { CurrencyPipe, DatePipe } from '@angular/common'; +import { SafeHtmlPipe } from '@/pipes/safe-html-pipe'; +import { ProjectType, ProjectTypeService } from '@/pages/service/project-type.service'; +import { ProjectStatus, ProjectStatusService } from '@/pages/service/project-status.service'; + +@Component({ + selector: 'app-projects', + imports: [ + IconField, + InputIcon, + InputText, + SelectButton, + FormsModule, + PrimeTemplate, + MatIcon, + Select, + Panel, + Button, + Chip, + Dialog, + DatePicker, + InputGroup, + InputGroupAddon, + Editor, + InputNumber, + DatePipe, + SafeHtmlPipe, + SafeHtmlPipe, + SafeHtmlPipe, + SafeHtmlPipe, + CurrencyPipe + ], + templateUrl: './projects.html', + styleUrl: './projects.scss', + providers: [MessageService] +}) +export class Projects implements OnInit { + protected viewMode = 'grid'; + stateOptions: any[] = [ + { label: 'Kachel', value: 'grid', icon: 'view_comfy_alt' }, + { label: 'Kanban', value: 'kanban', icon: 'view_kanban' } + ]; + + projects: Project[] = []; + projectTypes: ProjectType[]= []; + projectStatuses: ProjectStatus[]= []; + + statuses: any; + measures: any; + selectedStatus: any; + selectedMeasures: any; + addNewProjectDialogVisible: boolean = false; + + // for stats + projectsStatsCountTotal: number = 0; + projectsStatsCountActive: number = 0; + projectsStatsCountCompleted: number = 0; + projectsStatsAmountRequestedInTotal: number = 0; + + // for new project dialog + projectTypeOptionsForNewProject: any = []; + projectStatusOptionsForNewProject: any = []; + propertyOptionsForNewProject: any = []; + newProjectName: string | undefined; + newProjectEventNumber: string | undefined; + newProjectDescription: string | undefined; + newProjectProjectType: string | undefined; + newProjectStatus: string | undefined; + newProjectPropertyId: string | undefined; + newProjectStartDate: Date | undefined; + newProjectEndDate: Date | undefined; + newProjectAmountRequested: number | undefined; + + constructor( + private router: Router, + private propertyService: PropertyService, + private projectService: ProjectService, + private projectTypeService: ProjectTypeService, + private projectStatusService: ProjectStatusService, + private messageService: MessageService + ) {} + + ngOnInit(): void { + this.statuses = [{ label: 'Alle', value: 'all' }, ...this.projectStatuses]; + + this.measures = [{ label: 'Alle', value: 'all' }, ...this.projectTypes]; + + this.projectService.getProjects().subscribe((projects) => { + console.debug('Projects', projects); + this.projects = projects; + }); + + this.projectTypeService.getProjectTypes().subscribe((projectTypes) => { + console.debug('ProjectTypes', projectTypes); + this.projectTypes = projectTypes; + }); + + this.projectStatusService.getProjectStatuses().subscribe((projectStatuses) => { + console.debug('ProjectStatuses', projectStatuses); + this.projectStatuses = projectStatuses; + }); + + this.projectService.getStats().subscribe((stats) => { + this.projectsStatsCountTotal = stats.projectsCountTotal ?? 0; + this.projectsStatsCountActive = stats.projectsCountActive ?? 0; + this.projectsStatsCountCompleted = stats.projectsCountCompleted ?? 0; + this.projectsStatsAmountRequestedInTotal = stats.amountRequestedInTotal ?? 0; + }); + } + + navigateToDetails(id: string | undefined) { + this.router.navigate(['/projects', id]); + } + + deleteMe_getStatusOptionsForNewProject() { + return [ + { label: 'Vorbereitung', value: 'preparation' }, + { label: 'Aktiv', value: 'active' }, + { label: 'Abgeschlossen', value: 'completed' }, + { label: 'Problem', value: 'problem' } + ]; + } + + deleteMe_getProjectTypeOptionsForNewProject() { + return [ + { label: 'Energieberatung WG (iSFP)', value: 'energy_consulting_wg' }, + { label: 'Energieberatung NWG (Modul2)', value: 'energy_consulting_nwg' }, + { label: 'Einzelmaßnahmen', value: 'individual_measures' }, + { label: 'Effizienzhaus Sanierung', value: 'efficiency_house_renovation' }, + { label: 'Effizienzhaus Neubau', value: 'efficiency_house_new_construction' }, + { label: 'Energieausweis', value: 'energy_performance_certificate' }, + { label: 'Fachplanung Bauphysik', value: 'specialist_planning_for_building_physics' }, + { label: 'Fachplanung Heizung', value: 'specialist_planning_for_heating' }, + { label: 'Zertifizierung', value: 'certification' } + ]; + } + + showDialog() { + this.propertyService.getProperties().subscribe((properties) => { + this.propertyOptionsForNewProject = []; + properties.forEach((property) => { + this.propertyOptionsForNewProject.push({ + value: property.id, + label: property.name + }); + }); + + + this.projectTypeOptionsForNewProject = []; + this.projectTypes.forEach((projectType) => { + this.projectTypeOptionsForNewProject.push({ + value: projectType.id, + label: projectType.name + }); + }); + + this.projectStatusOptionsForNewProject = []; + this.projectStatuses.forEach((projectStatus) => { + this.projectStatusOptionsForNewProject.push({ + value: projectStatus.id, + label: projectStatus.name + }); + }); + }); + + this.projectStatusOptionsForNewProject = this.projectStatuses; + this.projectTypeOptionsForNewProject = this.projectTypes; + this.addNewProjectDialogVisible = true; + } + + createNewProject() { + let newProject = this.projectService.getProjectInstance( + this.newProjectName, + this.newProjectEventNumber, + this.newProjectDescription, + this.newProjectProjectType, + this.newProjectStatus, + this.newProjectPropertyId, + this.newProjectStartDate, + this.newProjectEndDate, + this.newProjectAmountRequested + ); + + this.projectService.create(newProject).subscribe({ + next: (arg) => { + this.messageService.add({ + severity: 'success', + summary: 'Erfolgreich', + detail: 'Projekt erfolgreich angelegt', + life: 3000 + }); + + this.projects.push(newProject); + this.projectsStatsCountTotal++; + this.projectsStatsCountCompleted += this.newProjectStatus == 'completed' ? 1 : 0; + this.projectsStatsAmountRequestedInTotal += this.newProjectAmountRequested ?? 0; + this.projectsStatsCountActive += this.newProjectStatus == 'active' ? 1 : 0; + + this.addNewProjectDialogVisible = false; + }, + error: (err) => { + this.messageService.add({ + severity: 'danger', + summary: 'Fehler', + detail: 'Beim Anlegen des Projekts ist ein Fehler aufgetreten.', + life: 3000 + }); + console.log('Error while creating project -- Error: ' + err + ' -- Project: ', newProject); + } + }); + } +} + + diff --git a/src/app/pages/properties/properties.html b/src/app/pages/properties/properties.html new file mode 100644 index 0000000..4e46139 --- /dev/null +++ b/src/app/pages/properties/properties.html @@ -0,0 +1,114 @@ +
+
Properties
+ + +
+ + + + + + + +
+
+ + + +
+ Street + + +
+ + +
+ Number + + +
+ + +
+ Zip Code + + +
+ + +
+ City + + +
+ + +
+ Country + + +
+ + + +
+ + + + {{ property.street }} + + + {{ property.houseNumber }} + + + {{ property.zipCode }} + + + {{ property.city }} + + +
+ + {{ property.country.name }} +
+ + +
+ + + +
+ + +
+ + + No properties found. + + + + + Loading properties data. Please wait. + + +
+
diff --git a/src/app/pages/properties/properties.scss b/src/app/pages/properties/properties.scss new file mode 100644 index 0000000..1c75c34 --- /dev/null +++ b/src/app/pages/properties/properties.scss @@ -0,0 +1,7 @@ +.p-datatable-frozen-tbody { + font-weight: bold; +} + +.p-datatable-scrollable .p-frozen-column { + font-weight: bold; +} diff --git a/src/app/pages/properties/properties.spec.ts b/src/app/pages/properties/properties.spec.ts new file mode 100644 index 0000000..1fa7f85 --- /dev/null +++ b/src/app/pages/properties/properties.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Properties } from './properties'; + +describe('Properties', () => { + let component: Properties; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Properties] + }) + .compileComponents(); + + fixture = TestBed.createComponent(Properties); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/properties/properties.ts b/src/app/pages/properties/properties.ts new file mode 100644 index 0000000..4b2b9bc --- /dev/null +++ b/src/app/pages/properties/properties.ts @@ -0,0 +1,84 @@ +import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { ButtonDirective, ButtonModule } from 'primeng/button'; +import { CommonModule, CurrencyPipe, DatePipe } from '@angular/common'; +import { IconField, IconFieldModule } from 'primeng/iconfield'; +import { InputIcon, InputIconModule } from 'primeng/inputicon'; +import { InputText, InputTextModule } from 'primeng/inputtext'; +import { MultiSelect, MultiSelectModule } from 'primeng/multiselect'; +import { ProgressBar, ProgressBarModule } from 'primeng/progressbar'; +import { Select, SelectModule } from 'primeng/select'; +import { Slider, SliderModule } from 'primeng/slider'; +import { Table, TableModule } from 'primeng/table'; +import { Tag, TagModule } from 'primeng/tag'; +import { ToggleButtonModule } from 'primeng/togglebutton'; +import { ToastModule } from 'primeng/toast'; +import { FormsModule } from '@angular/forms'; +import { RatingModule } from 'primeng/rating'; +import { RippleModule } from 'primeng/ripple'; +import { Property, PropertyService } from '@/pages/service/property.service'; +import { RouterLink } from '@angular/router'; + +interface expandedRows { + [key: string]: boolean; +} + +@Component({ + selector: 'app-properties', + standalone: true, + imports: [ + ButtonDirective, + IconField, + InputIcon, + InputText, + TableModule, + + TableModule, + MultiSelectModule, + SelectModule, + InputIconModule, + TagModule, + InputTextModule, + SliderModule, + ProgressBarModule, + ToggleButtonModule, + ToastModule, + CommonModule, + FormsModule, + ButtonModule, + RatingModule, + RippleModule, + IconFieldModule, + RouterLink + ], + templateUrl: './properties.html', + styleUrl: './properties.scss', + providers: [PropertyService] +}) +export class Properties implements OnInit { + properties: Property[] = []; + + statuses: any[] = []; + + loading: boolean = true; + + @ViewChild('filter') filter!: ElementRef; + + constructor(private propertyService: PropertyService) {} + + ngOnInit() { + this.propertyService.getProperties().subscribe((properties) => { + // this.properties = properties; + console.log(properties); + this.loading = false; + }); + } + + onGlobalFilter(table: Table, event: Event) { + table.filterGlobal((event.target as HTMLInputElement).value, 'contains'); + } + + clear(table: Table) { + table.clear(); + this.filter.nativeElement.value = ''; + } +} diff --git a/src/app/pages/property-details/property-details.html b/src/app/pages/property-details/property-details.html new file mode 100644 index 0000000..8c91a15 --- /dev/null +++ b/src/app/pages/property-details/property-details.html @@ -0,0 +1,3 @@ +

property-details works!

+ +

Property ID: {{ propertyId() }}

diff --git a/src/app/pages/property-details/property-details.scss b/src/app/pages/property-details/property-details.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/property-details/property-details.spec.ts b/src/app/pages/property-details/property-details.spec.ts new file mode 100644 index 0000000..d03828b --- /dev/null +++ b/src/app/pages/property-details/property-details.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PropertyDetails } from './property-details'; + +describe('PropertyDetails', () => { + let component: PropertyDetails; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [PropertyDetails] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PropertyDetails); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/property-details/property-details.ts b/src/app/pages/property-details/property-details.ts new file mode 100644 index 0000000..42d04c0 --- /dev/null +++ b/src/app/pages/property-details/property-details.ts @@ -0,0 +1,19 @@ +import { Component, inject, signal } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +@Component({ + selector: 'app-property-details', + imports: [], + templateUrl: './property-details.html', + styleUrl: './property-details.scss' +}) +export class PropertyDetails { + propertyId = signal(''); + private activatedRoute = inject(ActivatedRoute); + + constructor() { + this.activatedRoute.params.subscribe(params => { + this.propertyId.set(params['id']); + }) + } +} diff --git a/src/app/pages/property-manager/property-manager.html b/src/app/pages/property-manager/property-manager.html new file mode 100644 index 0000000..a6cbc55 --- /dev/null +++ b/src/app/pages/property-manager/property-manager.html @@ -0,0 +1,252 @@ + + + + + + + + + + + + + +
+
Verwalte Liegenschaften
+ + + + +
+
+ + + + + + + + Nr. + + + + Name + + + + Eigentümer + + + + Straße + + + + Hausnummer + + + + Postleitzahl + + + + Stadt + + + + Bundesland + + + + Einheiten + + + + Status + + + + Projekte + + + + Labels + + + + Land + + + + + + + + + + + Nr... + {{ property.name }} + Eigentümer... + {{ property.street }} + {{ property.houseNumber }} + {{ property.zipCode }} + {{ property.city }} + Bundesland... + Einheiten... + Status... + Projekte... + Labels... + +
+ + {{ property.country?.name }} +
+ + + + + + +
+
+ + + + +
+ +
+ + + @if (submitted && !property().name) { + Name is required. + } +
+ + +
+
+ + + @if (submitted && !property().street) { + Street is required. + } +
+
+ + + @if (submitted && !property().houseNumber) { + House number is required. + } +
+
+ + +
+
+ + + @if (submitted && !property().zipCode) { + Zip code is required. + } +
+
+ + + @if (submitted && !property().city) { + City is required. + } +
+
+ + +
+ + + + @if (selectedOption) { +
+ +
{{ selectedOption.name }}
+
+ } +
+ +
+ +
{{ country.name }}
+
+
+ + + +
+
+ + +
+ + + +
+ + + @if (property().id) { +
+ + + +
+ @for (attachment of property().attachments; track attachment.id) { + + + + } +
+ + + + +
Drag and drop files to here to upload.
+
+
+
+
+ } + +
+
+ + + + + +
+ + diff --git a/src/app/pages/property-manager/property-manager.scss b/src/app/pages/property-manager/property-manager.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/property-manager/property-manager.spec.ts b/src/app/pages/property-manager/property-manager.spec.ts new file mode 100644 index 0000000..8ec2c4b --- /dev/null +++ b/src/app/pages/property-manager/property-manager.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PropertyManager } from './property-manager'; + +describe('PropertyManager', () => { + let component: PropertyManager; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [PropertyManager] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PropertyManager); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/property-manager/property-manager.ts b/src/app/pages/property-manager/property-manager.ts new file mode 100644 index 0000000..deb1571 --- /dev/null +++ b/src/app/pages/property-manager/property-manager.ts @@ -0,0 +1,292 @@ +import { Component, OnInit, signal, ViewChild } from '@angular/core'; +import { Button } from 'primeng/button'; +import { ConfirmDialog } from 'primeng/confirmdialog'; +import { LowerCasePipe } from '@angular/common'; +import { Dialog } from 'primeng/dialog'; +import { FormsModule } from '@angular/forms'; +import { IconField } from 'primeng/iconfield'; +import { InputIcon } from 'primeng/inputicon'; +import { InputText } from 'primeng/inputtext'; +import { Table, TableModule } from 'primeng/table'; +import { Toolbar } from 'primeng/toolbar'; +import { ConfirmationService, MessageService } from 'primeng/api'; +import { Country, Property, PropertyService } from '@/pages/service/property.service'; +import { Editor } from 'primeng/editor'; +import { Select } from 'primeng/select'; +import { CountryService } from '@/pages/service/country.service'; +import { FileUpload, FileUploadEvent } from 'primeng/fileupload'; +import { Fieldset } from 'primeng/fieldset'; +import { Chip } from 'primeng/chip'; +import { Attachment, AttachmentService } from '@/pages/service/attachment.service'; +import { environment } from '../../../environments/environments'; + +interface Column { + field: string; + header: string; + customExportHeader?: string; +} + +interface ExportColumn { + title: string; + dataKey: string; +} + +@Component({ + selector: 'app-property-manager', + imports: [Button, ConfirmDialog, Dialog, FormsModule, IconField, InputIcon, InputText, TableModule, Toolbar, LowerCasePipe, Editor, Select, FileUpload, Fieldset, Chip], + templateUrl: './property-manager.html', + styleUrl: './property-manager.scss', + providers: [MessageService, ConfirmationService, PropertyService, CountryService, AttachmentService] +}) +export class PropertyManager implements OnInit { + propertyDialog: boolean = false; + + properties = signal([]); + + property = signal({}); + + selectedProperties!: Property[] | null; + + submitted: boolean = false; + + statuses!: any[]; + + @ViewChild('dt') dt!: Table; + + exportColumns!: ExportColumn[]; + + cols!: Column[]; + countries: Country[] = []; + + constructor( + private messageService: MessageService, + private confirmationService: ConfirmationService, + private propertyService: PropertyService, + private countryService: CountryService, + private attachmentService: AttachmentService, + ) {} + + exportCSV() { + // this.dt.exportCSV(); + console.debug(this, ' -- ', this.dt); + } + + ngOnInit() { + this.selectedProperties = []; + + this.propertyService.getProperties().subscribe((properties) => { + console.log('Properties', properties); + this.properties.set(properties); + }); + + this.countryService.getCountries().then((countries) => { + this.countries = countries; + }); + } + + loadDemoData() { + this.statuses = [ + { label: 'INSTOCK', value: 'instock' }, + { label: 'LOWSTOCK', value: 'lowstock' }, + { label: 'OUTOFSTOCK', value: 'outofstock' } + ]; + + this.cols = [ + { field: 'code', header: 'Code', customExportHeader: 'Product Code' }, + { field: 'name', header: 'Name' }, + { field: 'image', header: 'Image' }, + { field: 'price', header: 'Price' }, + { field: 'category', header: 'Category' } + ]; + + this.exportColumns = this.cols.map((col) => ({ title: col.header, dataKey: col.field })); + } + + onGlobalFilter(table: Table, event: Event) { + table.filterGlobal((event.target as HTMLInputElement).value, 'contains'); + } + + openNew() { + this.property.set({}); + this.submitted = false; + this.propertyDialog = true; + } + + editProperty(property: Property) { + this.property.set({ ...property }); + this.propertyDialog = true; + } + + deleteSelected() { + this.confirmationService.confirm({ + message: 'Are you sure you want to delete the selected properties?', + header: 'Confirm', + icon: 'pi pi-exclamation-triangle', + accept: () => { + console.log('properties to delete', this.selectedProperties); + + if (this.selectedProperties === null) { + return; + } + + this.propertyService.deleteProperties(this.selectedProperties).subscribe({ + next: () => { + this.properties.set(this.properties().filter((val) => !this.selectedProperties?.includes(val))); + this.selectedProperties = null; + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Properties Deleted', + life: 3000 + }); + }, + error: (err) => { + console.log('Error while deletting properties -- Error: ' + err + ' -- Properties: ', this.selectedProperties); + } + }); + } + }); + } + + hideDialog() { + this.propertyDialog = false; + this.submitted = false; + } + + deleteProperty(property: Property) { + this.confirmationService.confirm({ + message: 'Are you sure you want to delete ' + property.name + '?', + header: 'Confirm', + icon: 'pi pi-exclamation-triangle', + accept: () => { + this.propertyService.deleteProperty(property).subscribe({ + next: () => { + this.properties.set(this.properties().filter((val) => val.id !== property.id)); + this.property.set({}); + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Property Deleted', + life: 3000 + }); + }, + error: (err) => { + console.log('Error while updating property -- Error: ' + err + ' -- Property: ', property); + } + }); + } + }); + } + + findIndexById(id?: string): number { + let index = -1; + // console.log("Looking for id " + id); + for (let i = 0; i < this.properties().length; i++) { + // console.log("current item id: " + this.properties()[i].id) + if (this.properties()[i].id === id) { + // console.log("Index", this.properties()[i].id, i); + index = i; + break; + } + } + + return index; + } + + saveProperty() { + this.submitted = true; + let _property = this.property(); + let _properties = this.properties(); + + console.log('Saving Property', _property); + + if (this.property.name?.trim()) { + if (_property.id) { + // update + this.propertyService.updateProperty(_property).subscribe({ + next: (arg) => { + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Property Updated', + life: 3000 + }); + _properties[this.findIndexById(_property.id)] = _property; + this.properties.set([..._properties]); + }, + error: (err) => { + console.log('Error while updating property -- Error: ' + err + ' -- Property: ', _property); + } + }); + } else { + this.propertyService.createProperty(_property).subscribe({ + next: (arg) => { + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Property Created', + life: 3000 + }); + this.properties.set([..._properties, arg]); + }, + error: (err) => { + console.log('Error while creating property -- Error: ' + err + ' -- Property: ', _property); + } + }); + } + + this.propertyDialog = false; + this.property.set({}); + } + } + + onUpload($event: FileUploadEvent) { + console.debug(this, $event); + this.messageService.add({ severity: 'info', summary: 'Success', detail: 'Upload was successful.' }); + } + + confirmRemoveAttachment(event: Event, property: Property, attachment: Attachment) { + this.confirmationService.confirm({ + target: event.target as EventTarget, + message: 'Do you want to remvoe this attachment?', + header: 'Please confirm', + icon: 'pi pi-info-circle', + rejectLabel: 'Cancel', + rejectButtonProps: { + label: 'Cancel', + severity: 'secondary', + outlined: true, + }, + acceptButtonProps: { + label: 'Delete', + severity: 'danger', + }, + + accept: () => { + this.attachmentService.deleteAttachment(attachment).subscribe({ + next: () => { + // @ts-ignore + property.attachments = property.attachments.filter(a => a.id !== attachment.id); + + this.messageService.add({ + severity: 'success', + summary: 'Successful', + detail: 'Attachment Deleted', + life: 3000 + }); + }, + error: (err) => { + console.log('Error while deleting attachment -- Error: ' + err + ' -- Attachment: ', property); + } + }) + + }, + reject: () => { + console.debug("Deletion aborted."); + // this.messageService.add({ severity: 'error', summary: 'Rejected', detail: 'You have rejected' }); + }, + }); + } + + protected readonly environment = environment; +} diff --git a/src/app/pages/service/attachment.service.spec.ts b/src/app/pages/service/attachment.service.spec.ts new file mode 100644 index 0000000..750f4ac --- /dev/null +++ b/src/app/pages/service/attachment.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { AttachmentService } from './attachment.service'; + +describe('AttachmentService', () => { + let service: AttachmentService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(AttachmentService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/pages/service/attachment.service.ts b/src/app/pages/service/attachment.service.ts new file mode 100644 index 0000000..822fd1f --- /dev/null +++ b/src/app/pages/service/attachment.service.ts @@ -0,0 +1,29 @@ +import { inject, Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { Property } from '@/pages/service/property.service'; +import { environment } from '../../../environments/environments'; + +export interface Attachment { + id?: string; + storagePath?: string; + fileName?: string; + createdAt?: Date; +} + +@Injectable({ + providedIn: 'root' +}) +export class AttachmentService { + url: string = environment.apiBaseUrl; + private http = inject(HttpClient); + + + constructor() {} + + deleteAttachment(attachment: Attachment): Observable { + console.debug(this + " -- args: ", arguments); + + return this.http.delete(this.url + "/attachments/" + attachment.id) + } +} diff --git a/src/app/pages/service/country.service.ts b/src/app/pages/service/country.service.ts new file mode 100644 index 0000000..ea7abe8 --- /dev/null +++ b/src/app/pages/service/country.service.ts @@ -0,0 +1,255 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class CountryService { + getData() { + return [ + { name: 'Afghanistan', code: 'AF' }, + { name: 'Albania', code: 'AL' }, + { name: 'Algeria', code: 'DZ' }, + { name: 'American Samoa', code: 'AS' }, + { name: 'Andorra', code: 'AD' }, + { name: 'Angola', code: 'AO' }, + { name: 'Anguilla', code: 'AI' }, + { name: 'Antarctica', code: 'AQ' }, + { name: 'Antigua and Barbuda', code: 'AG' }, + { name: 'Argentina', code: 'AR' }, + { name: 'Armenia', code: 'AM' }, + { name: 'Aruba', code: 'AW' }, + { name: 'Australia', code: 'AU' }, + { name: 'Austria', code: 'AT' }, + { name: 'Azerbaijan', code: 'AZ' }, + { name: 'Bahamas', code: 'BS' }, + { name: 'Bahrain', code: 'BH' }, + { name: 'Bangladesh', code: 'BD' }, + { name: 'Barbados', code: 'BB' }, + { name: 'Belarus', code: 'BY' }, + { name: 'Belgium', code: 'BE' }, + { name: 'Belize', code: 'BZ' }, + { name: 'Benin', code: 'BJ' }, + { name: 'Bermuda', code: 'BM' }, + { name: 'Bhutan', code: 'BT' }, + { name: 'Bolivia', code: 'BO' }, + { name: 'Bosnia and Herzegovina', code: 'BA' }, + { name: 'Botswana', code: 'BW' }, + { name: 'Bouvet Island', code: 'BV' }, + { name: 'Brazil', code: 'BR' }, + { name: 'British Indian Ocean Territory', code: 'IO' }, + { name: 'Brunei Darussalam', code: 'BN' }, + { name: 'Bulgaria', code: 'BG' }, + { name: 'Burkina Faso', code: 'BF' }, + { name: 'Burundi', code: 'BI' }, + { name: 'Cambodia', code: 'KH' }, + { name: 'Cameroon', code: 'CM' }, + { name: 'Canada', code: 'CA' }, + { name: 'Cape Verde', code: 'CV' }, + { name: 'Cayman Islands', code: 'KY' }, + { name: 'Central African Republic', code: 'CF' }, + { name: 'Chad', code: 'TD' }, + { name: 'Chile', code: 'CL' }, + { name: 'China', code: 'CN' }, + { name: 'Christmas Island', code: 'CX' }, + { name: 'Cocos (Keeling) Islands', code: 'CC' }, + { name: 'Colombia', code: 'CO' }, + { name: 'Comoros', code: 'KM' }, + { name: 'Congo', code: 'CG' }, + { name: 'Congo, The Democratic Republic of the', code: 'CD' }, + { name: 'Cook Islands', code: 'CK' }, + { name: 'Costa Rica', code: 'CR' }, + { name: 'Cote D"Ivoire', code: 'CI' }, + { name: 'Croatia', code: 'HR' }, + { name: 'Cuba', code: 'CU' }, + { name: 'Cyprus', code: 'CY' }, + { name: 'Czech Republic', code: 'CZ' }, + { name: 'Denmark', code: 'DK' }, + { name: 'Djibouti', code: 'DJ' }, + { name: 'Dominica', code: 'DM' }, + { name: 'Dominican Republic', code: 'DO' }, + { name: 'Ecuador', code: 'EC' }, + { name: 'Egypt', code: 'EG' }, + { name: 'El Salvador', code: 'SV' }, + { name: 'Equatorial Guinea', code: 'GQ' }, + { name: 'Eritrea', code: 'ER' }, + { name: 'Estonia', code: 'EE' }, + { name: 'Ethiopia', code: 'ET' }, + { name: 'Falkland Islands (Malvinas)', code: 'FK' }, + { name: 'Faroe Islands', code: 'FO' }, + { name: 'Fiji', code: 'FJ' }, + { name: 'Finland', code: 'FI' }, + { name: 'France', code: 'FR' }, + { name: 'French Guiana', code: 'GF' }, + { name: 'French Polynesia', code: 'PF' }, + { name: 'French Southern Territories', code: 'TF' }, + { name: 'Gabon', code: 'GA' }, + { name: 'Gambia', code: 'GM' }, + { name: 'Georgia', code: 'GE' }, + { name: 'Germany', code: 'DE' }, + { name: 'Ghana', code: 'GH' }, + { name: 'Gibraltar', code: 'GI' }, + { name: 'Greece', code: 'GR' }, + { name: 'Greenland', code: 'GL' }, + { name: 'Grenada', code: 'GD' }, + { name: 'Guadeloupe', code: 'GP' }, + { name: 'Guam', code: 'GU' }, + { name: 'Guatemala', code: 'GT' }, + { name: 'Guernsey', code: 'GG' }, + { name: 'Guinea', code: 'GN' }, + { name: 'Guinea-Bissau', code: 'GW' }, + { name: 'Guyana', code: 'GY' }, + { name: 'Haiti', code: 'HT' }, + { name: 'Heard Island and Mcdonald Islands', code: 'HM' }, + { name: 'Holy See (Vatican City State)', code: 'VA' }, + { name: 'Honduras', code: 'HN' }, + { name: 'Hong Kong', code: 'HK' }, + { name: 'Hungary', code: 'HU' }, + { name: 'Iceland', code: 'IS' }, + { name: 'India', code: 'IN' }, + { name: 'Indonesia', code: 'ID' }, + { name: 'Iran, Islamic Republic Of', code: 'IR' }, + { name: 'Iraq', code: 'IQ' }, + { name: 'Ireland', code: 'IE' }, + { name: 'Isle of Man', code: 'IM' }, + { name: 'Israel', code: 'IL' }, + { name: 'Italy', code: 'IT' }, + { name: 'Jamaica', code: 'JM' }, + { name: 'Japan', code: 'JP' }, + { name: 'Jersey', code: 'JE' }, + { name: 'Jordan', code: 'JO' }, + { name: 'Kazakhstan', code: 'KZ' }, + { name: 'Kenya', code: 'KE' }, + { name: 'Kiribati', code: 'KI' }, + { name: 'Korea, Democratic People"S Republic of', code: 'KP' }, + { name: 'Korea, Republic of', code: 'KR' }, + { name: 'Kuwait', code: 'KW' }, + { name: 'Kyrgyzstan', code: 'KG' }, + { name: 'Lao People"S Democratic Republic', code: 'LA' }, + { name: 'Latvia', code: 'LV' }, + { name: 'Lebanon', code: 'LB' }, + { name: 'Lesotho', code: 'LS' }, + { name: 'Liberia', code: 'LR' }, + { name: 'Libyan Arab Jamahiriya', code: 'LY' }, + { name: 'Liechtenstein', code: 'LI' }, + { name: 'Lithuania', code: 'LT' }, + { name: 'Luxembourg', code: 'LU' }, + { name: 'Macao', code: 'MO' }, + { name: 'Macedonia, The Former Yugoslav Republic of', code: 'MK' }, + { name: 'Madagascar', code: 'MG' }, + { name: 'Malawi', code: 'MW' }, + { name: 'Malaysia', code: 'MY' }, + { name: 'Maldives', code: 'MV' }, + { name: 'Mali', code: 'ML' }, + { name: 'Malta', code: 'MT' }, + { name: 'Marshall Islands', code: 'MH' }, + { name: 'Martinique', code: 'MQ' }, + { name: 'Mauritania', code: 'MR' }, + { name: 'Mauritius', code: 'MU' }, + { name: 'Mayotte', code: 'YT' }, + { name: 'Mexico', code: 'MX' }, + { name: 'Micronesia, Federated States of', code: 'FM' }, + { name: 'Moldova, Republic of', code: 'MD' }, + { name: 'Monaco', code: 'MC' }, + { name: 'Mongolia', code: 'MN' }, + { name: 'Montserrat', code: 'MS' }, + { name: 'Morocco', code: 'MA' }, + { name: 'Mozambique', code: 'MZ' }, + { name: 'Myanmar', code: 'MM' }, + { name: 'Namibia', code: 'NA' }, + { name: 'Nauru', code: 'NR' }, + { name: 'Nepal', code: 'NP' }, + { name: 'Netherlands', code: 'NL' }, + { name: 'Netherlands Antilles', code: 'AN' }, + { name: 'New Caledonia', code: 'NC' }, + { name: 'New Zealand', code: 'NZ' }, + { name: 'Nicaragua', code: 'NI' }, + { name: 'Niger', code: 'NE' }, + { name: 'Nigeria', code: 'NG' }, + { name: 'Niue', code: 'NU' }, + { name: 'Norfolk Island', code: 'NF' }, + { name: 'Northern Mariana Islands', code: 'MP' }, + { name: 'Norway', code: 'NO' }, + { name: 'Oman', code: 'OM' }, + { name: 'Pakistan', code: 'PK' }, + { name: 'Palau', code: 'PW' }, + { name: 'Palestinian Territory, Occupied', code: 'PS' }, + { name: 'Panama', code: 'PA' }, + { name: 'Papua New Guinea', code: 'PG' }, + { name: 'Paraguay', code: 'PY' }, + { name: 'Peru', code: 'PE' }, + { name: 'Philippines', code: 'PH' }, + { name: 'Pitcairn', code: 'PN' }, + { name: 'Poland', code: 'PL' }, + { name: 'Portugal', code: 'PT' }, + { name: 'Puerto Rico', code: 'PR' }, + { name: 'Qatar', code: 'QA' }, + { name: 'Reunion', code: 'RE' }, + { name: 'Romania', code: 'RO' }, + { name: 'Russian Federation', code: 'RU' }, + { name: 'RWANDA', code: 'RW' }, + { name: 'Saint Helena', code: 'SH' }, + { name: 'Saint Kitts and Nevis', code: 'KN' }, + { name: 'Saint Lucia', code: 'LC' }, + { name: 'Saint Pierre and Miquelon', code: 'PM' }, + { name: 'Saint Vincent and the Grenadines', code: 'VC' }, + { name: 'Samoa', code: 'WS' }, + { name: 'San Marino', code: 'SM' }, + { name: 'Sao Tome and Principe', code: 'ST' }, + { name: 'Saudi Arabia', code: 'SA' }, + { name: 'Senegal', code: 'SN' }, + { name: 'Serbia and Montenegro', code: 'CS' }, + { name: 'Seychelles', code: 'SC' }, + { name: 'Sierra Leone', code: 'SL' }, + { name: 'Singapore', code: 'SG' }, + { name: 'Slovakia', code: 'SK' }, + { name: 'Slovenia', code: 'SI' }, + { name: 'Solomon Islands', code: 'SB' }, + { name: 'Somalia', code: 'SO' }, + { name: 'South Africa', code: 'ZA' }, + { name: 'South Georgia and the South Sandwich Islands', code: 'GS' }, + { name: 'Spain', code: 'ES' }, + { name: 'Sri Lanka', code: 'LK' }, + { name: 'Sudan', code: 'SD' }, + { name: 'Suriname', code: 'SR' }, + { name: 'Svalbard and Jan Mayen', code: 'SJ' }, + { name: 'Swaziland', code: 'SZ' }, + { name: 'Sweden', code: 'SE' }, + { name: 'Switzerland', code: 'CH' }, + { name: 'Syrian Arab Republic', code: 'SY' }, + { name: 'Taiwan, Province of China', code: 'TW' }, + { name: 'Tajikistan', code: 'TJ' }, + { name: 'Tanzania, United Republic of', code: 'TZ' }, + { name: 'Thailand', code: 'TH' }, + { name: 'Timor-Leste', code: 'TL' }, + { name: 'Togo', code: 'TG' }, + { name: 'Tokelau', code: 'TK' }, + { name: 'Tonga', code: 'TO' }, + { name: 'Trinidad and Tobago', code: 'TT' }, + { name: 'Tunisia', code: 'TN' }, + { name: 'Turkey', code: 'TR' }, + { name: 'Turkmenistan', code: 'TM' }, + { name: 'Turks and Caicos Islands', code: 'TC' }, + { name: 'Tuvalu', code: 'TV' }, + { name: 'Uganda', code: 'UG' }, + { name: 'Ukraine', code: 'UA' }, + { name: 'United Arab Emirates', code: 'AE' }, + { name: 'United Kingdom', code: 'GB' }, + { name: 'United States', code: 'US' }, + { name: 'United States Minor Outlying Islands', code: 'UM' }, + { name: 'Uruguay', code: 'UY' }, + { name: 'Uzbekistan', code: 'UZ' }, + { name: 'Vanuatu', code: 'VU' }, + { name: 'Venezuela', code: 'VE' }, + { name: 'Viet Nam', code: 'VN' }, + { name: 'Virgin Islands, British', code: 'VG' }, + { name: 'Virgin Islands, U.S.', code: 'VI' }, + { name: 'Wallis and Futuna', code: 'WF' }, + { name: 'Western Sahara', code: 'EH' }, + { name: 'Yemen', code: 'YE' }, + { name: 'Zambia', code: 'ZM' }, + { name: 'Zimbabwe', code: 'ZW' } + ]; + } + + getCountries() { + return Promise.resolve(this.getData()); + } +} diff --git a/src/app/pages/service/customer.service.ts b/src/app/pages/service/customer.service.ts new file mode 100644 index 0000000..a5dff62 --- /dev/null +++ b/src/app/pages/service/customer.service.ts @@ -0,0 +1,9055 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Country } from '@/pages/service/property.service'; + + + +export interface Representative { + name?: string; + image?: string; +} + +export interface Customer { + id?: number; + name?: string; + country?: Country; + company?: string; + date?: string; + status?: string; + activity?: number; + representative?: Representative; +} + +@Injectable() +export class CustomerService { + getData() { + return [ + { + id: 1000, + name: 'James Butt', + country: { + name: 'Algeria', + code: 'dz' + }, + company: 'Benton, John B Jr', + date: '2015-09-13', + status: 'unqualified', + verified: true, + activity: 17, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 70663 + }, + { + id: 1001, + name: 'Josephine Darakjy', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Chanay, Jeffrey A Esq', + date: '2019-02-09', + status: 'negotiation', + verified: true, + activity: 0, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 82429 + }, + { + id: 1002, + name: 'Art Venere', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Chemel, James L Cpa', + date: '2017-05-13', + status: 'qualified', + verified: false, + activity: 63, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 28334 + }, + { + id: 1003, + name: 'Lenna Paprocki', + country: { + name: 'Slovenia', + code: 'si' + }, + company: 'Feltz Printing Service', + date: '2020-09-15', + status: 'new', + verified: false, + activity: 37, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 88521 + }, + { + id: 1004, + name: 'Donette Foller', + country: { + name: 'South Africa', + code: 'za' + }, + company: 'Printing Dimensions', + date: '2016-05-20', + status: 'negotiation', + verified: true, + activity: 33, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 93905 + }, + { + id: 1005, + name: 'Simona Morasca', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Chapman, Ross E Esq', + date: '2018-02-16', + status: 'qualified', + verified: false, + activity: 68, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 50041 + }, + { + id: 1006, + name: 'Mitsue Tollner', + country: { + name: 'Paraguay', + code: 'py' + }, + company: 'Morlong Associates', + date: '2018-02-19', + status: 'renewal', + verified: true, + activity: 54, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 58706 + }, + { + id: 1007, + name: 'Leota Dilliard', + country: { + name: 'Serbia', + code: 'rs' + }, + company: 'Commercial Press', + date: '2019-08-13', + status: 'renewal', + verified: true, + activity: 69, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 26640 + }, + { + id: 1008, + name: 'Sage Wieser', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Truhlar And Truhlar Attys', + date: '2018-11-21', + status: 'unqualified', + verified: true, + activity: 76, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 65369 + }, + { + id: 1009, + name: 'Kris Marrier', + country: { + name: 'Mexico', + code: 'mx' + }, + company: 'King, Christopher A Esq', + date: '2015-07-07', + status: 'negotiation', + verified: false, + activity: 3, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 63451 + }, + { + id: 1010, + name: 'Minna Amigon', + country: { + name: 'Romania', + code: 'ro' + }, + company: 'Dorl, James J Esq', + date: '2018-11-07', + status: 'qualified', + verified: false, + activity: 38, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 71169 + }, + { + id: 1011, + name: 'Abel Maclead', + country: { + name: 'Singapore', + code: 'sg' + }, + company: 'Rangoni Of Florence', + date: '2017-03-11', + status: 'qualified', + verified: true, + activity: 87, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 96842 + }, + { + id: 1012, + name: 'Kiley Caldarera', + country: { + name: 'Serbia', + code: 'rs' + }, + company: 'Feiner Bros', + date: '2015-10-20', + status: 'unqualified', + verified: false, + activity: 80, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 92734 + }, + { + id: 1013, + name: 'Graciela Ruta', + country: { + name: 'Chile', + code: 'cl' + }, + company: 'Buckley Miller & Wright', + date: '2016-07-25', + status: 'negotiation', + verified: false, + activity: 59, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 45250 + }, + { + id: 1014, + name: 'Cammy Albares', + country: { + name: 'Philippines', + code: 'ph' + }, + company: 'Rousseaux, Michael Esq', + date: '2019-06-25', + status: 'new', + verified: true, + activity: 90, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 30236 + }, + { + id: 1015, + name: 'Mattie Poquette', + country: { + name: 'Venezuela', + code: 've' + }, + company: 'Century Communications', + date: '2017-12-12', + status: 'negotiation', + verified: false, + activity: 52, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 64533 + }, + { + id: 1016, + name: 'Meaghan Garufi', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'Bolton, Wilbur Esq', + date: '2018-07-04', + status: 'unqualified', + verified: false, + activity: 31, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 37279 + }, + { + id: 1017, + name: 'Gladys Rim', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'T M Byxbee Company Pc', + date: '2020-02-27', + status: 'renewal', + verified: true, + activity: 48, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 27381 + }, + { + id: 1018, + name: 'Yuki Whobrey', + country: { + name: 'Israel', + code: 'il' + }, + company: 'Farmers Insurance Group', + date: '2017-12-21', + status: 'negotiation', + verified: true, + activity: 16, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 9257 + }, + { + id: 1019, + name: 'Fletcher Flosi', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'Post Box Services Plus', + date: '2016-01-04', + status: 'renewal', + verified: true, + activity: 19, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 67783 + }, + { + id: 1020, + name: 'Bette Nicka', + country: { + name: 'Paraguay', + code: 'py' + }, + company: 'Sport En Art', + date: '2016-10-21', + status: 'renewal', + verified: false, + activity: 100, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 4609 + }, + { + id: 1021, + name: 'Veronika Inouye', + country: { + name: 'Ecuador', + code: 'ec' + }, + company: 'C 4 Network Inc', + date: '2017-03-24', + status: 'renewal', + verified: false, + activity: 72, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 26565 + }, + { + id: 1022, + name: 'Willard Kolmetz', + country: { + name: 'Tunisia', + code: 'tn' + }, + company: 'Ingalls, Donald R Esq', + date: '2017-04-15', + status: 'renewal', + verified: true, + activity: 94, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 75876 + }, + { + id: 1023, + name: 'Maryann Royster', + country: { + name: 'Belarus', + code: 'by' + }, + company: 'Franklin, Peter L Esq', + date: '2017-03-11', + status: 'qualified', + verified: false, + activity: 56, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 41121 + }, + { + id: 1024, + name: 'Alisha Slusarski', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Wtlz Power 107 Fm', + date: '2018-03-27', + status: 'qualified', + verified: true, + activity: 7, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 91691 + }, + { + id: 1025, + name: 'Allene Iturbide', + country: { + name: 'Italy', + code: 'it' + }, + company: 'Ledecky, David Esq', + date: '2016-02-20', + status: 'qualified', + verified: true, + activity: 1, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 40137 + }, + { + id: 1026, + name: 'Chanel Caudy', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'Professional Image Inc', + date: '2018-06-24', + status: 'new', + verified: true, + activity: 26, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 21304 + }, + { + id: 1027, + name: 'Ezekiel Chui', + country: { + name: 'Ireland', + code: 'ie' + }, + company: 'Sider, Donald C Esq', + date: '2016-09-24', + status: 'new', + verified: false, + activity: 76, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 60454 + }, + { + id: 1028, + name: 'Willow Kusko', + country: { + name: 'Romania', + code: 'ro' + }, + company: 'U Pull It', + date: '2020-04-11', + status: 'qualified', + verified: true, + activity: 7, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 17565 + }, + { + id: 1029, + name: 'Bernardo Figeroa', + country: { + name: 'Israel', + code: 'il' + }, + company: 'Clark, Richard Cpa', + date: '2018-04-11', + status: 'renewal', + verified: true, + activity: 81, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 17774 + }, + { + id: 1030, + name: 'Ammie Corrio', + country: { + name: 'Hungary', + code: 'hu' + }, + company: 'Moskowitz, Barry S', + date: '2016-06-11', + status: 'negotiation', + verified: true, + activity: 56, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 49201 + }, + { + id: 1031, + name: 'Francine Vocelka', + country: { + name: 'Honduras', + code: 'hn' + }, + company: 'Cascade Realty Advisors Inc', + date: '2017-08-02', + status: 'qualified', + verified: true, + activity: 94, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 67126 + }, + { + id: 1032, + name: 'Ernie Stenseth', + country: { + name: 'Australia', + code: 'au' + }, + company: 'Knwz Newsradio', + date: '2018-06-06', + status: 'renewal', + verified: true, + activity: 68, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 76017 + }, + { + id: 1033, + name: 'Albina Glick', + country: { + name: 'Ukraine', + code: 'ua' + }, + company: 'Giampetro, Anthony D', + date: '2019-08-08', + status: 'negotiation', + verified: true, + activity: 85, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 91201 + }, + { + id: 1034, + name: 'Alishia Sergi', + country: { + name: 'Qatar', + code: 'qa' + }, + company: 'Milford Enterprises Inc', + date: '2018-05-19', + status: 'negotiation', + verified: false, + activity: 46, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 12237 + }, + { + id: 1035, + name: 'Solange Shinko', + country: { + name: 'Cameroon', + code: 'cm' + }, + company: 'Mosocco, Ronald A', + date: '2015-02-12', + status: 'qualified', + verified: true, + activity: 32, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 34072 + }, + { + id: 1036, + name: 'Jose Stockham', + country: { + name: 'Italy', + code: 'it' + }, + company: 'Tri State Refueler Co', + date: '2018-04-25', + status: 'qualified', + verified: true, + activity: 77, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 94909 + }, + { + id: 1037, + name: 'Rozella Ostrosky', + country: { + name: 'Venezuela', + code: 've' + }, + company: 'Parkway Company', + date: '2016-02-27', + status: 'unqualified', + verified: true, + activity: 66, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 57245 + }, + { + id: 1038, + name: 'Valentine Gillian', + country: { + name: 'Paraguay', + code: 'py' + }, + company: 'Fbs Business Finance', + date: '2019-09-17', + status: 'qualified', + verified: true, + activity: 25, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 75502 + }, + { + id: 1039, + name: 'Kati Rulapaugh', + country: { + name: 'Puerto Rico', + code: 'pr' + }, + company: 'Eder Assocs Consltng Engrs Pc', + date: '2016-12-03', + status: 'renewal', + verified: false, + activity: 51, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 82075 + }, + { + id: 1040, + name: 'Youlanda Schemmer', + country: { + name: 'Bolivia', + code: 'bo' + }, + company: 'Tri M Tool Inc', + date: '2017-12-15', + status: 'negotiation', + verified: true, + activity: 49, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 19208 + }, + { + id: 1041, + name: 'Dyan Oldroyd', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'International Eyelets Inc', + date: '2017-02-02', + status: 'qualified', + verified: false, + activity: 5, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 50194 + }, + { + id: 1042, + name: 'Roxane Campain', + country: { + name: 'France', + code: 'fr' + }, + company: 'Rapid Trading Intl', + date: '2018-12-25', + status: 'unqualified', + verified: false, + activity: 100, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 77714 + }, + { + id: 1043, + name: 'Lavera Perin', + country: { + name: 'Vietnam', + code: 'vn' + }, + company: 'Abc Enterprises Inc', + date: '2018-04-10', + status: 'qualified', + verified: false, + activity: 71, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 35740 + }, + { + id: 1044, + name: 'Erick Ferencz', + country: { + name: 'Belgium', + code: 'be' + }, + company: 'Cindy Turner Associates', + date: '2018-05-06', + status: 'unqualified', + verified: true, + activity: 54, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 30790 + }, + { + id: 1045, + name: 'Fatima Saylors', + country: { + name: 'Canada', + code: 'ca' + }, + company: 'Stanton, James D Esq', + date: '2019-07-10', + status: 'renewal', + verified: true, + activity: 93, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 52343 + }, + { + id: 1046, + name: 'Jina Briddick', + country: { + name: 'Mexico', + code: 'mx' + }, + company: 'Grace Pastries Inc', + date: '2018-02-19', + status: 'unqualified', + verified: false, + activity: 97, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 53966 + }, + { + id: 1047, + name: 'Kanisha Waycott', + country: { + name: 'Ecuador', + code: 'ec' + }, + company: 'Schroer, Gene E Esq', + date: '2019-11-27', + status: 'new', + verified: false, + activity: 80, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 9920 + }, + { + id: 1048, + name: 'Emerson Bowley', + country: { + name: 'Finland', + code: 'fi' + }, + company: 'Knights Inn', + date: '2018-11-24', + status: 'new', + verified: false, + activity: 63, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 78069 + }, + { + id: 1049, + name: 'Blair Malet', + country: { + name: 'Finland', + code: 'fi' + }, + company: 'Bollinger Mach Shp & Shipyard', + date: '2018-04-19', + status: 'new', + verified: true, + activity: 92, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 65005 + }, + { + id: 1050, + name: 'Brock Bolognia', + country: { + name: 'Bolivia', + code: 'bo' + }, + company: 'Orinda News', + date: '2019-09-06', + status: 'renewal', + verified: true, + activity: 72, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 51038 + }, + { + id: 1051, + name: 'Lorrie Nestle', + country: { + name: 'Germany', + code: 'de' + }, + company: 'Ballard Spahr Andrews', + date: '2018-04-26', + status: 'renewal', + verified: false, + activity: 36, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 28218 + }, + { + id: 1052, + name: 'Sabra Uyetake', + country: { + name: 'Peru', + code: 'pe' + }, + company: 'Lowy Limousine Service', + date: '2018-04-12', + status: 'new', + verified: false, + activity: 31, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 78527 + }, + { + id: 1053, + name: 'Marjory Mastella', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'Vicon Corporation', + date: '2018-01-24', + status: 'negotiation', + verified: false, + activity: 89, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 23381 + }, + { + id: 1054, + name: 'Karl Klonowski', + country: { + name: 'Saudi Arabia', + code: 'sa' + }, + company: 'Rossi, Michael M', + date: '2017-04-17', + status: 'unqualified', + verified: true, + activity: 27, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 64821 + }, + { + id: 1055, + name: 'Tonette Wenner', + country: { + name: 'Australia', + code: 'au' + }, + company: 'Northwest Publishing', + date: '2019-04-14', + status: 'qualified', + verified: false, + activity: 27, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 55334 + }, + { + id: 1056, + name: 'Amber Monarrez', + country: { + name: 'Sweden', + code: 'se' + }, + company: 'Branford Wire & Mfg Co', + date: '2019-09-09', + status: 'new', + verified: false, + activity: 79, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 83391 + }, + { + id: 1057, + name: 'Shenika Seewald', + country: { + name: 'Australia', + code: 'au' + }, + company: 'East Coast Marketing', + date: '2017-02-18', + status: 'renewal', + verified: true, + activity: 39, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 31580 + }, + { + id: 1058, + name: 'Delmy Ahle', + country: { + name: 'Belgium', + code: 'be' + }, + company: 'Wye Technologies Inc', + date: '2020-10-05', + status: 'unqualified', + verified: false, + activity: 55, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 11723 + }, + { + id: 1059, + name: 'Deeanna Juhas', + country: { + name: 'Sweden', + code: 'se' + }, + company: 'Healy, George W Iv', + date: '2018-09-28', + status: 'negotiation', + verified: false, + activity: 79, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 8454 + }, + { + id: 1060, + name: 'Blondell Pugh', + country: { + name: 'Ireland', + code: 'ie' + }, + company: 'Alpenlite Inc', + date: '2016-06-16', + status: 'renewal', + verified: false, + activity: 49, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 99235 + }, + { + id: 1061, + name: 'Jamal Vanausdal', + country: { + name: 'Morocco', + code: 'ma' + }, + company: 'Hubbard, Bruce Esq', + date: '2017-05-25', + status: 'negotiation', + verified: true, + activity: 87, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 15656 + }, + { + id: 1062, + name: 'Cecily Hollack', + country: { + name: 'Bolivia', + code: 'bo' + }, + company: 'Arthur A Oliver & Son Inc', + date: '2020-05-09', + status: 'negotiation', + verified: true, + activity: 5, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 60586 + }, + { + id: 1063, + name: 'Carmelina Lindall', + country: { + name: 'Puerto Rico', + code: 'pr' + }, + company: 'George Jessop Carter Jewelers', + date: '2019-09-07', + status: 'qualified', + verified: true, + activity: 77, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 86239 + }, + { + id: 1064, + name: 'Maurine Yglesias', + country: { + name: 'Taiwan', + code: 'tw' + }, + company: 'Schultz, Thomas C Md', + date: '2015-08-10', + status: 'renewal', + verified: false, + activity: 94, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 15621 + }, + { + id: 1065, + name: 'Tawna Buvens', + country: { + name: 'Indonesia', + code: 'id' + }, + company: 'H H H Enterprises Inc', + date: '2018-03-20', + status: 'new', + verified: false, + activity: 25, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 77248 + }, + { + id: 1066, + name: 'Penney Weight', + country: { + name: 'South Africa', + code: 'za' + }, + company: 'Hawaiian King Hotel', + date: '2020-03-03', + status: 'qualified', + verified: false, + activity: 96, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 478 + }, + { + id: 1067, + name: 'Elly Morocco', + country: { + name: 'Thailand', + code: 'th' + }, + company: 'Killion Industries', + date: '2018-09-18', + status: 'qualified', + verified: true, + activity: 38, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 62505 + }, + { + id: 1068, + name: 'Ilene Eroman', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'Robinson, William J Esq', + date: '2019-06-08', + status: 'new', + verified: true, + activity: 49, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 91480 + }, + { + id: 1069, + name: 'Vallie Mondella', + country: { + name: 'Latvia', + code: 'lv' + }, + company: 'Private Properties', + date: '2018-12-06', + status: 'new', + verified: false, + activity: 16, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 21671 + }, + { + id: 1070, + name: 'Kallie Blackwood', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Rowley Schlimgen Inc', + date: '2017-04-05', + status: 'unqualified', + verified: false, + activity: 25, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 13775 + }, + { + id: 1071, + name: 'Johnetta Abdallah', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'Forging Specialties', + date: '2015-02-02', + status: 'new', + verified: false, + activity: 16, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 60253 + }, + { + id: 1072, + name: 'Bobbye Rhym', + country: { + name: 'Ukraine', + code: 'ua' + }, + company: 'Smits, Patricia Garity', + date: '2018-08-17', + status: 'qualified', + verified: true, + activity: 85, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 75225 + }, + { + id: 1073, + name: 'Micaela Rhymes', + country: { + name: 'France', + code: 'fr' + }, + company: 'H Lee Leonard Attorney At Law', + date: '2018-09-08', + status: 'renewal', + verified: true, + activity: 92, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 3308 + }, + { + id: 1074, + name: 'Tamar Hoogland', + country: { + name: 'Guatemala', + code: 'gt' + }, + company: 'A K Construction Co', + date: '2018-11-13', + status: 'negotiation', + verified: true, + activity: 22, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 19711 + }, + { + id: 1075, + name: 'Moon Parlato', + country: { + name: 'Czech Republic', + code: 'cz' + }, + company: 'Ambelang, Jessica M Md', + date: '2019-08-18', + status: 'renewal', + verified: false, + activity: 64, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 55110 + }, + { + id: 1076, + name: 'Laurel Reitler', + country: { + name: 'United Kingdom', + code: 'gb' + }, + company: 'Q A Service', + date: '2015-04-02', + status: 'negotiation', + verified: false, + activity: 80, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 62392 + }, + { + id: 1077, + name: 'Delisa Crupi', + country: { + name: 'Taiwan', + code: 'tw' + }, + company: 'Wood & Whitacre Contractors', + date: '2017-09-15', + status: 'unqualified', + verified: false, + activity: 70, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 76530 + }, + { + id: 1078, + name: 'Viva Toelkes', + country: { + name: 'United States', + code: 'us' + }, + company: 'Mark Iv Press Ltd', + date: '2017-03-27', + status: 'qualified', + verified: false, + activity: 16, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 7460 + }, + { + id: 1079, + name: 'Elza Lipke', + country: { + name: 'Ireland', + code: 'ie' + }, + company: 'Museum Of Science & Industry', + date: '2017-06-01', + status: 'negotiation', + verified: true, + activity: 90, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 42251 + }, + { + id: 1080, + name: 'Devorah Chickering', + country: { + name: 'Spain', + code: 'es' + }, + company: 'Garrison Ind', + date: '2017-03-14', + status: 'negotiation', + verified: true, + activity: 96, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 36435 + }, + { + id: 1081, + name: 'Timothy Mulqueen', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'Saronix Nymph Products', + date: '2018-07-09', + status: 'renewal', + verified: true, + activity: 77, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 39197 + }, + { + id: 1082, + name: 'Arlette Honeywell', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Smc Inc', + date: '2018-09-11', + status: 'negotiation', + verified: true, + activity: 46, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 72707 + }, + { + id: 1083, + name: 'Dominque Dickerson', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'E A I Electronic Assocs Inc', + date: '2017-11-12', + status: 'qualified', + verified: true, + activity: 83, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 97965 + }, + { + id: 1084, + name: 'Lettie Isenhower', + country: { + name: 'Canada', + code: 'ca' + }, + company: 'Conte, Christopher A Esq', + date: '2016-03-01', + status: 'qualified', + verified: true, + activity: 83, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 5823 + }, + { + id: 1085, + name: 'Myra Munns', + country: { + name: 'Lithuania', + code: 'lt' + }, + company: 'Anker Law Office', + date: '2016-05-21', + status: 'unqualified', + verified: true, + activity: 49, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 96471 + }, + { + id: 1086, + name: 'Stephaine Barfield', + country: { + name: 'Belgium', + code: 'be' + }, + company: 'Beutelschies & Company', + date: '2016-01-22', + status: 'new', + verified: true, + activity: 34, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 33710 + }, + { + id: 1087, + name: 'Lai Gato', + country: { + name: 'Nigeria', + code: 'ng' + }, + company: 'Fligg, Kenneth I Jr', + date: '2016-07-26', + status: 'unqualified', + verified: false, + activity: 64, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 30611 + }, + { + id: 1088, + name: 'Stephen Emigh', + country: { + name: 'Cuba', + code: 'cu' + }, + company: 'Sharp, J Daniel Esq', + date: '2020-07-24', + status: 'renewal', + verified: false, + activity: 51, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 32960 + }, + { + id: 1089, + name: 'Tyra Shields', + country: { + name: 'Honduras', + code: 'hn' + }, + company: 'Assink, Anne H Esq', + date: '2019-11-10', + status: 'negotiation', + verified: false, + activity: 11, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 57423 + }, + { + id: 1090, + name: 'Tammara Wardrip', + country: { + name: 'Saudi Arabia', + code: 'sa' + }, + company: 'Jewel My Shop Inc', + date: '2016-06-05', + status: 'renewal', + verified: true, + activity: 64, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 23027 + }, + { + id: 1091, + name: 'Cory Gibes', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'Chinese Translation Resources', + date: '2016-02-28', + status: 'new', + verified: false, + activity: 44, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 84182 + }, + { + id: 1092, + name: 'Danica Bruschke', + country: { + name: 'Taiwan', + code: 'tw' + }, + company: 'Stevens, Charles T', + date: '2018-12-13', + status: 'unqualified', + verified: true, + activity: 62, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 25237 + }, + { + id: 1093, + name: 'Wilda Giguere', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Mclaughlin, Luther W Cpa', + date: '2017-06-16', + status: 'new', + verified: true, + activity: 79, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 87736 + }, + { + id: 1094, + name: 'Elvera Benimadho', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'Tree Musketeers', + date: '2019-02-17', + status: 'negotiation', + verified: true, + activity: 50, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 38674 + }, + { + id: 1095, + name: 'Carma Vanheusen', + country: { + name: 'Turkey', + code: 'tr' + }, + company: 'Springfield Div Oh Edison Co', + date: '2019-11-26', + status: 'renewal', + verified: false, + activity: 84, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 67762 + }, + { + id: 1096, + name: 'Malinda Hochard', + country: { + name: 'Serbia', + code: 'rs' + }, + company: 'Logan Memorial Hospital', + date: '2016-07-06', + status: 'new', + verified: false, + activity: 88, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 81299 + }, + { + id: 1097, + name: 'Natalie Fern', + country: { + name: 'Canada', + code: 'ca' + }, + company: 'Kelly, Charles G Esq', + date: '2019-10-02', + status: 'negotiation', + verified: true, + activity: 44, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 64794 + }, + { + id: 1098, + name: 'Lisha Centini', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'Industrial Paper Shredders Inc', + date: '2018-07-05', + status: 'new', + verified: true, + activity: 7, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 7815 + }, + { + id: 1099, + name: 'Arlene Klusman', + country: { + name: 'Jamaica', + code: 'jm' + }, + company: 'Beck Horizon Builders', + date: '2018-05-14', + status: 'negotiation', + verified: true, + activity: 99, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 37976 + }, + { + id: 1100, + name: 'Alease Buemi', + country: { + name: 'Costa Rica', + code: 'cr' + }, + company: 'Porto Cayo At Hawks Cay', + date: '2018-03-14', + status: 'unqualified', + verified: true, + activity: 0, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 59594 + }, + { + id: 1101, + name: 'Louisa Cronauer', + country: { + name: 'Costa Rica', + code: 'cr' + }, + company: 'Pacific Grove Museum Ntrl Hist', + date: '2018-09-23', + status: 'qualified', + verified: false, + activity: 3, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 92528 + }, + { + id: 1102, + name: 'Angella Cetta', + country: { + name: 'Vietnam', + code: 'vn' + }, + company: 'Bender & Hatley Pc', + date: '2018-04-10', + status: 'qualified', + verified: false, + activity: 88, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 58964 + }, + { + id: 1103, + name: 'Cyndy Goldammer', + country: { + name: 'Burkina Faso', + code: 'bf' + }, + company: 'Di Cristina J & Son', + date: '2017-09-18', + status: 'unqualified', + verified: false, + activity: 92, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 65860 + }, + { + id: 1104, + name: 'Rosio Cork', + country: { + name: 'Singapore', + code: 'sg' + }, + company: 'Green Goddess', + date: '2017-08-19', + status: 'negotiation', + verified: true, + activity: 19, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 63863 + }, + { + id: 1105, + name: 'Celeste Korando', + country: { + name: 'Costa Rica', + code: 'cr' + }, + company: 'American Arts & Graphics', + date: '2020-06-18', + status: 'negotiation', + verified: true, + activity: 21, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 37510 + }, + { + id: 1106, + name: 'Twana Felger', + country: { + name: 'Croatia', + code: 'hr' + }, + company: 'Opryland Hotel', + date: '2016-11-18', + status: 'negotiation', + verified: false, + activity: 97, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 63876 + }, + { + id: 1107, + name: 'Estrella Samu', + country: { + name: 'Vietnam', + code: 'vn' + }, + company: 'Marking Devices Pubg Co', + date: '2017-06-25', + status: 'unqualified', + verified: false, + activity: 27, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 93263 + }, + { + id: 1108, + name: 'Donte Kines', + country: { + name: 'Slovakia', + code: 'sk' + }, + company: 'W Tc Industries Inc', + date: '2019-02-16', + status: 'new', + verified: true, + activity: 35, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 57198 + }, + { + id: 1109, + name: 'Tiffiny Steffensmeier', + country: { + name: 'Pakistan', + code: 'pk' + }, + company: 'Whitehall Robbins Labs Divsn', + date: '2018-03-11', + status: 'new', + verified: true, + activity: 81, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 89147 + }, + { + id: 1110, + name: 'Edna Miceli', + country: { + name: 'France', + code: 'fr' + }, + company: 'Sampler', + date: '2017-10-15', + status: 'renewal', + verified: true, + activity: 54, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 41466 + }, + { + id: 1111, + name: 'Sue Kownacki', + country: { + name: 'Jamaica', + code: 'jm' + }, + company: 'Juno Chefs Incorporated', + date: '2017-03-17', + status: 'negotiation', + verified: false, + activity: 31, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 38918 + }, + { + id: 1112, + name: 'Jesusa Shin', + country: { + name: 'Ukraine', + code: 'ua' + }, + company: 'Carroccio, A Thomas Esq', + date: '2017-04-06', + status: 'renewal', + verified: false, + activity: 28, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 11397 + }, + { + id: 1113, + name: 'Rolland Francescon', + country: { + name: 'United Kingdom', + code: 'gb' + }, + company: 'Stanley, Richard L Esq', + date: '2019-02-03', + status: 'qualified', + verified: false, + activity: 45, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 40930 + }, + { + id: 1114, + name: 'Pamella Schmierer', + country: { + name: 'Belgium', + code: 'be' + }, + company: 'K Cs Cstm Mouldings Windows', + date: '2016-09-22', + status: 'unqualified', + verified: true, + activity: 34, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 40847 + }, + { + id: 1115, + name: 'Glory Kulzer', + country: { + name: 'Croatia', + code: 'hr' + }, + company: 'Comfort Inn', + date: '2017-09-27', + status: 'unqualified', + verified: true, + activity: 36, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 27832 + }, + { + id: 1116, + name: 'Shawna Palaspas', + country: { + name: 'Estonia', + code: 'ee' + }, + company: 'Windsor, James L Esq', + date: '2017-06-25', + status: 'unqualified', + verified: true, + activity: 69, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 89060 + }, + { + id: 1117, + name: 'Brandon Callaro', + country: { + name: 'Romania', + code: 'ro' + }, + company: 'Jackson Shields Yeiser', + date: '2016-07-13', + status: 'negotiation', + verified: true, + activity: 55, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 52474 + }, + { + id: 1118, + name: 'Scarlet Cartan', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Box, J Calvin Esq', + date: '2018-09-13', + status: 'renewal', + verified: false, + activity: 1, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 19094 + }, + { + id: 1119, + name: 'Oretha Menter', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Custom Engineering Inc', + date: '2017-09-11', + status: 'renewal', + verified: false, + activity: 8, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 93756 + }, + { + id: 1120, + name: 'Ty Smith', + country: { + name: 'United States', + code: 'us' + }, + company: 'Bresler Eitel Framg Gllry Ltd', + date: '2019-07-06', + status: 'unqualified', + verified: false, + activity: 50, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 77388 + }, + { + id: 1121, + name: 'Xuan Rochin', + country: { + name: 'Colombia', + code: 'co' + }, + company: 'Carol, Drake Sparks Esq', + date: '2018-05-22', + status: 'negotiation', + verified: true, + activity: 77, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 48759 + }, + { + id: 1122, + name: 'Lindsey Dilello', + country: { + name: 'Austria', + code: 'at' + }, + company: 'Biltmore Investors Bank', + date: '2017-07-18', + status: 'renewal', + verified: true, + activity: 65, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 37568 + }, + { + id: 1123, + name: 'Devora Perez', + country: { + name: 'Uruguay', + code: 'uy' + }, + company: 'Desco Equipment Corp', + date: '2017-10-09', + status: 'unqualified', + verified: true, + activity: 30, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 4477 + }, + { + id: 1124, + name: 'Herman Demesa', + country: { + name: 'Paraguay', + code: 'py' + }, + company: 'Merlin Electric Co', + date: '2019-05-23', + status: 'negotiation', + verified: true, + activity: 10, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 13764 + }, + { + id: 1125, + name: 'Rory Papasergi', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Bailey Cntl Co Div Babcock', + date: '2019-03-02', + status: 'qualified', + verified: false, + activity: 22, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 68222 + }, + { + id: 1126, + name: 'Talia Riopelle', + country: { + name: 'Guatemala', + code: 'gt' + }, + company: 'Ford Brothers Wholesale Inc', + date: '2017-02-18', + status: 'new', + verified: false, + activity: 69, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 29164 + }, + { + id: 1127, + name: 'Van Shire', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'Cambridge Inn', + date: '2020-05-12', + status: 'new', + verified: false, + activity: 4, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 61651 + }, + { + id: 1128, + name: 'Lucina Lary', + country: { + name: 'Switzerland', + code: 'ch' + }, + company: 'Matricciani, Albert J Jr', + date: '2019-11-20', + status: 'negotiation', + verified: true, + activity: 11, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 79938 + }, + { + id: 1129, + name: 'Bok Isaacs', + country: { + name: 'Chile', + code: 'cl' + }, + company: 'Nelson Hawaiian Ltd', + date: '2016-11-10', + status: 'negotiation', + verified: true, + activity: 41, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 44037 + }, + { + id: 1130, + name: 'Rolande Spickerman', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Neland Travel Agency', + date: '2016-07-11', + status: 'renewal', + verified: true, + activity: 84, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 89918 + }, + { + id: 1131, + name: 'Howard Paulas', + country: { + name: 'Indonesia', + code: 'id' + }, + company: 'Asendorf, J Alan Esq', + date: '2017-07-17', + status: 'negotiation', + verified: false, + activity: 22, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 32372 + }, + { + id: 1132, + name: 'Kimbery Madarang', + country: { + name: 'Senegal', + code: 'sn' + }, + company: 'Silberman, Arthur L Esq', + date: '2018-08-19', + status: 'negotiation', + verified: true, + activity: 63, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 46478 + }, + { + id: 1133, + name: 'Thurman Manno', + country: { + name: 'Colombia', + code: 'co' + }, + company: 'Honey Bee Breeding Genetics &', + date: '2016-05-02', + status: 'qualified', + verified: true, + activity: 47, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 30674 + }, + { + id: 1134, + name: 'Becky Mirafuentes', + country: { + name: 'Serbia', + code: 'rs' + }, + company: 'Wells Kravitz Schnitzer', + date: '2018-04-13', + status: 'unqualified', + verified: true, + activity: 62, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 47714 + }, + { + id: 1135, + name: 'Beatriz Corrington', + country: { + name: 'South Africa', + code: 'za' + }, + company: 'Prohab Rehabilitation Servs', + date: '2020-01-04', + status: 'renewal', + verified: true, + activity: 55, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 14307 + }, + { + id: 1136, + name: 'Marti Maybury', + country: { + name: 'Thailand', + code: 'th' + }, + company: 'Eldridge, Kristin K Esq', + date: '2016-02-05', + status: 'unqualified', + verified: false, + activity: 3, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 82069 + }, + { + id: 1137, + name: 'Nieves Gotter', + country: { + name: 'Latvia', + code: 'lv' + }, + company: 'Vlahos, John J Esq', + date: '2017-03-12', + status: 'negotiation', + verified: false, + activity: 3, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 11182 + }, + { + id: 1138, + name: 'Leatha Hagele', + country: { + name: 'Ukraine', + code: 'ua' + }, + company: 'Ninas Indian Grs & Videos', + date: '2019-03-27', + status: 'unqualified', + verified: false, + activity: 67, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 17126 + }, + { + id: 1139, + name: 'Valentin Klimek', + country: { + name: 'Ivory Coast', + code: 'ci' + }, + company: 'Schmid, Gayanne K Esq', + date: '2019-08-06', + status: 'unqualified', + verified: true, + activity: 14, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 19724 + }, + { + id: 1140, + name: 'Melissa Wiklund', + country: { + name: 'Japan', + code: 'jp' + }, + company: 'Moapa Valley Federal Credit Un', + date: '2018-03-20', + status: 'qualified', + verified: true, + activity: 8, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 91888 + }, + { + id: 1141, + name: 'Sheridan Zane', + country: { + name: 'Croatia', + code: 'hr' + }, + company: 'Kentucky Tennessee Clay Co', + date: '2016-02-15', + status: 'qualified', + verified: true, + activity: 17, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 15016 + }, + { + id: 1142, + name: 'Bulah Padilla', + country: { + name: 'Philippines', + code: 'ph' + }, + company: 'Admiral Party Rentals & Sales', + date: '2016-02-10', + status: 'negotiation', + verified: false, + activity: 58, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 23118 + }, + { + id: 1143, + name: 'Audra Kohnert', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'Nelson, Karolyn King Esq', + date: '2019-07-16', + status: 'unqualified', + verified: false, + activity: 82, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 90560 + }, + { + id: 1144, + name: 'Daren Weirather', + country: { + name: 'Israel', + code: 'il' + }, + company: 'Panasystems', + date: '2015-07-23', + status: 'negotiation', + verified: false, + activity: 96, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 34155 + }, + { + id: 1145, + name: 'Fernanda Jillson', + country: { + name: 'Mexico', + code: 'mx' + }, + company: 'Shank, Edward L Esq', + date: '2017-07-02', + status: 'unqualified', + verified: true, + activity: 92, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 6350 + }, + { + id: 1146, + name: 'Gearldine Gellinger', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Megibow & Edwards', + date: '2019-08-17', + status: 'negotiation', + verified: true, + activity: 18, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 77641 + }, + { + id: 1147, + name: 'Chau Kitzman', + country: { + name: 'Paraguay', + code: 'py' + }, + company: 'Benoff, Edward Esq', + date: '2019-07-04', + status: 'new', + verified: true, + activity: 9, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 43289 + }, + { + id: 1148, + name: 'Theola Frey', + country: { + name: 'Vietnam', + code: 'vn' + }, + company: 'Woodbridge Free Public Library', + date: '2020-03-14', + status: 'unqualified', + verified: true, + activity: 44, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 85657 + }, + { + id: 1149, + name: 'Cheryl Haroldson', + country: { + name: 'France', + code: 'fr' + }, + company: 'New York Life John Thune', + date: '2018-04-03', + status: 'new', + verified: false, + activity: 55, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 82733 + }, + { + id: 1150, + name: 'Laticia Merced', + country: { + name: 'Burkina Faso', + code: 'bf' + }, + company: 'Alinabal Inc', + date: '2017-03-04', + status: 'unqualified', + verified: false, + activity: 21, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 38004 + }, + { + id: 1151, + name: 'Carissa Batman', + country: { + name: 'Greece', + code: 'gr' + }, + company: 'Poletto, Kim David Esq', + date: '2016-05-05', + status: 'negotiation', + verified: true, + activity: 91, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 29038 + }, + { + id: 1152, + name: 'Lezlie Craghead', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Chang, Carolyn Esq', + date: '2019-05-28', + status: 'renewal', + verified: false, + activity: 30, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 75123 + }, + { + id: 1153, + name: 'Ozell Shealy', + country: { + name: 'Pakistan', + code: 'pk' + }, + company: 'Silver Bros Inc', + date: '2016-08-19', + status: 'negotiation', + verified: true, + activity: 14, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 33214 + }, + { + id: 1154, + name: 'Arminda Parvis', + country: { + name: 'Indonesia', + code: 'id' + }, + company: 'Newtec Inc', + date: '2020-02-09', + status: 'negotiation', + verified: true, + activity: 77, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 80651 + }, + { + id: 1155, + name: 'Reita Leto', + country: { + name: 'Belgium', + code: 'be' + }, + company: 'Creative Business Systems', + date: '2020-04-03', + status: 'unqualified', + verified: true, + activity: 58, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 5085 + }, + { + id: 1156, + name: 'Yolando Luczki', + country: { + name: 'France', + code: 'fr' + }, + company: 'Dal Tile Corporation', + date: '2015-01-27', + status: 'renewal', + verified: true, + activity: 78, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 93021 + }, + { + id: 1157, + name: 'Lizette Stem', + country: { + name: 'Slovakia', + code: 'sk' + }, + company: 'Edward S Katz', + date: '2018-08-06', + status: 'new', + verified: false, + activity: 67, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 37287 + }, + { + id: 1158, + name: 'Gregoria Pawlowicz', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Oh My Goodknits Inc', + date: '2020-02-20', + status: 'renewal', + verified: false, + activity: 29, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 73070 + }, + { + id: 1159, + name: 'Carin Deleo', + country: { + name: 'China', + code: 'cn' + }, + company: 'Redeker, Debbie', + date: '2015-05-28', + status: 'qualified', + verified: true, + activity: 13, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 64422 + }, + { + id: 1160, + name: 'Chantell Maynerich', + country: { + name: 'Estonia', + code: 'ee' + }, + company: 'Desert Sands Motel', + date: '2016-09-05', + status: 'unqualified', + verified: true, + activity: 75, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 36826 + }, + { + id: 1161, + name: 'Dierdre Yum', + country: { + name: 'Czech Republic', + code: 'cz' + }, + company: 'Cummins Southern Plains Inc', + date: '2016-12-20', + status: 'negotiation', + verified: true, + activity: 1, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 93101 + }, + { + id: 1162, + name: 'Larae Gudroe', + country: { + name: 'Slovenia', + code: 'si' + }, + company: 'Lehigh Furn Divsn Lehigh', + date: '2015-11-28', + status: 'unqualified', + verified: false, + activity: 13, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 60177 + }, + { + id: 1163, + name: 'Latrice Tolfree', + country: { + name: 'Jamaica', + code: 'jm' + }, + company: 'United Van Lines Agent', + date: '2018-11-11', + status: 'renewal', + verified: false, + activity: 73, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 47198 + }, + { + id: 1164, + name: 'Kerry Theodorov', + country: { + name: 'Romania', + code: 'ro' + }, + company: 'Capitol Reporters', + date: '2016-11-05', + status: 'unqualified', + verified: true, + activity: 76, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 71305 + }, + { + id: 1165, + name: 'Dorthy Hidvegi', + country: { + name: 'Poland', + code: 'pl' + }, + company: 'Kwik Kopy Printing', + date: '2020-08-13', + status: 'qualified', + verified: true, + activity: 60, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 17526 + }, + { + id: 1166, + name: 'Fannie Lungren', + country: { + name: 'Belarus', + code: 'by' + }, + company: 'Centro Inc', + date: '2015-07-06', + status: 'negotiation', + verified: true, + activity: 24, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 16596 + }, + { + id: 1167, + name: 'Evangelina Radde', + country: { + name: 'Ivory Coast', + code: 'ci' + }, + company: 'Campbell, Jan Esq', + date: '2020-02-25', + status: 'unqualified', + verified: true, + activity: 93, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 56870 + }, + { + id: 1168, + name: 'Novella Degroot', + country: { + name: 'Slovenia', + code: 'si' + }, + company: 'Evans, C Kelly Esq', + date: '2017-12-19', + status: 'unqualified', + verified: false, + activity: 30, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 82928 + }, + { + id: 1169, + name: 'Clay Hoa', + country: { + name: 'Paraguay', + code: 'py' + }, + company: 'Scat Enterprises', + date: '2016-02-22', + status: 'negotiation', + verified: false, + activity: 93, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 64181 + }, + { + id: 1170, + name: 'Jennifer Fallick', + country: { + name: 'Australia', + code: 'au' + }, + company: 'Nagle, Daniel J Esq', + date: '2016-12-24', + status: 'unqualified', + verified: true, + activity: 88, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 30561 + }, + { + id: 1171, + name: 'Irma Wolfgramm', + country: { + name: 'Belgium', + code: 'be' + }, + company: 'Serendiquity Bed & Breakfast', + date: '2020-10-18', + status: 'negotiation', + verified: true, + activity: 70, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 24617 + }, + { + id: 1172, + name: 'Eun Coody', + country: { + name: 'Taiwan', + code: 'tw' + }, + company: 'Ray Carolyne Realty', + date: '2018-02-12', + status: 'qualified', + verified: true, + activity: 61, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 77860 + }, + { + id: 1173, + name: 'Sylvia Cousey', + country: { + name: 'Ireland', + code: 'ie' + }, + company: 'Berg, Charles E', + date: '2018-06-10', + status: 'unqualified', + verified: false, + activity: 91, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 25664 + }, + { + id: 1174, + name: 'Nana Wrinkles', + country: { + name: 'Austria', + code: 'at' + }, + company: 'Ray, Milbern D', + date: '2017-04-11', + status: 'renewal', + verified: true, + activity: 98, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 98113 + }, + { + id: 1175, + name: 'Layla Springe', + country: { + name: 'South Africa', + code: 'za' + }, + company: 'Chadds Ford Winery', + date: '2019-07-27', + status: 'unqualified', + verified: true, + activity: 97, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 14763 + }, + { + id: 1176, + name: 'Joesph Degonia', + country: { + name: 'Serbia', + code: 'rs' + }, + company: 'A R Packaging', + date: '2020-04-23', + status: 'renewal', + verified: true, + activity: 56, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 31317 + }, + { + id: 1177, + name: 'Annabelle Boord', + country: { + name: 'Guatemala', + code: 'gt' + }, + company: 'Corn Popper', + date: '2020-09-16', + status: 'negotiation', + verified: true, + activity: 76, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 30883 + }, + { + id: 1178, + name: 'Stephaine Vinning', + country: { + name: 'Australia', + code: 'au' + }, + company: 'Birite Foodservice Distr', + date: '2016-05-14', + status: 'negotiation', + verified: true, + activity: 43, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 93785 + }, + { + id: 1179, + name: 'Nelida Sawchuk', + country: { + name: 'South Africa', + code: 'za' + }, + company: 'Anchorage Museum Of Hist & Art', + date: '2018-06-22', + status: 'qualified', + verified: true, + activity: 58, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 68380 + }, + { + id: 1180, + name: 'Marguerita Hiatt', + country: { + name: 'United Kingdom', + code: 'gb' + }, + company: 'Haber, George D Md', + date: '2018-10-25', + status: 'qualified', + verified: false, + activity: 72, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 93454 + }, + { + id: 1181, + name: 'Carmela Cookey', + country: { + name: 'France', + code: 'fr' + }, + company: 'Royal Pontiac Olds Inc', + date: '2018-07-19', + status: 'negotiation', + verified: false, + activity: 24, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 30570 + }, + { + id: 1182, + name: 'Junita Brideau', + country: { + name: 'Indonesia', + code: 'id' + }, + company: 'Leonards Antiques Inc', + date: '2015-03-15', + status: 'negotiation', + verified: true, + activity: 86, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 79506 + }, + { + id: 1183, + name: 'Claribel Varriano', + country: { + name: 'Ecuador', + code: 'ec' + }, + company: 'Meca', + date: '2017-04-14', + status: 'unqualified', + verified: true, + activity: 15, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 8654 + }, + { + id: 1184, + name: 'Benton Skursky', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Nercon Engineering & Mfg Inc', + date: '2015-02-19', + status: 'negotiation', + verified: true, + activity: 9, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 13368 + }, + { + id: 1185, + name: 'Hillary Skulski', + country: { + name: 'France', + code: 'fr' + }, + company: 'Replica I', + date: '2016-03-25', + status: 'unqualified', + verified: true, + activity: 82, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 92631 + }, + { + id: 1186, + name: 'Merilyn Bayless', + country: { + name: 'Jamaica', + code: 'jm' + }, + company: '20 20 Printing Inc', + date: '2020-10-13', + status: 'unqualified', + verified: true, + activity: 13, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 4989 + }, + { + id: 1187, + name: 'Teri Ennaco', + country: { + name: 'Pakistan', + code: 'pk' + }, + company: 'Publishers Group West', + date: '2019-12-21', + status: 'unqualified', + verified: true, + activity: 57, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 77668 + }, + { + id: 1188, + name: 'Merlyn Lawler', + country: { + name: 'Germany', + code: 'de' + }, + company: 'Nischwitz, Jeffrey L Esq', + date: '2016-02-26', + status: 'renewal', + verified: true, + activity: 45, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 3525 + }, + { + id: 1189, + name: 'Georgene Montezuma', + country: { + name: 'Senegal', + code: 'sn' + }, + company: 'Payne Blades & Wellborn Pa', + date: '2018-10-11', + status: 'new', + verified: true, + activity: 64, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 45838 + }, + { + id: 1190, + name: 'Jettie Mconnell', + country: { + name: 'Denmark', + code: 'dk' + }, + company: 'Coldwell Bnkr Wright Real Est', + date: '2015-10-18', + status: 'negotiation', + verified: false, + activity: 74, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 49148 + }, + { + id: 1191, + name: 'Lemuel Latzke', + country: { + name: 'Colombia', + code: 'co' + }, + company: 'Computer Repair Service', + date: '2016-02-13', + status: 'negotiation', + verified: false, + activity: 79, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 96709 + }, + { + id: 1192, + name: 'Melodie Knipp', + country: { + name: 'Finland', + code: 'fi' + }, + company: 'Fleetwood Building Block Inc', + date: '2018-03-08', + status: 'negotiation', + verified: false, + activity: 19, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 23253 + }, + { + id: 1193, + name: 'Candida Corbley', + country: { + name: 'Poland', + code: 'pl' + }, + company: 'Colts Neck Medical Assocs Inc', + date: '2017-12-02', + status: 'negotiation', + verified: true, + activity: 11, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 40836 + }, + { + id: 1194, + name: 'Karan Karpin', + country: { + name: 'Estonia', + code: 'ee' + }, + company: 'New England Taxidermy', + date: '2019-01-07', + status: 'negotiation', + verified: true, + activity: 4, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 60719 + }, + { + id: 1195, + name: 'Andra Scheyer', + country: { + name: 'Romania', + code: 'ro' + }, + company: 'Ludcke, George O Esq', + date: '2016-08-14', + status: 'qualified', + verified: true, + activity: 62, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 17419 + }, + { + id: 1196, + name: 'Felicidad Poullion', + country: { + name: 'Greece', + code: 'gr' + }, + company: 'Mccorkle, Tom S Esq', + date: '2016-03-05', + status: 'renewal', + verified: true, + activity: 64, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 94052 + }, + { + id: 1197, + name: 'Belen Strassner', + country: { + name: 'Ivory Coast', + code: 'ci' + }, + company: 'Eagle Software Inc', + date: '2015-12-14', + status: 'qualified', + verified: true, + activity: 91, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 54241 + }, + { + id: 1198, + name: 'Gracia Melnyk', + country: { + name: 'Costa Rica', + code: 'cr' + }, + company: 'Juvenile & Adult Super', + date: '2019-06-01', + status: 'unqualified', + verified: true, + activity: 40, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 87668 + }, + { + id: 1199, + name: 'Jolanda Hanafan', + country: { + name: 'Cameroon', + code: 'cm' + }, + company: 'Perez, Joseph J Esq', + date: '2015-12-09', + status: 'qualified', + verified: true, + activity: 27, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 99417 + }, + { + id: 1200, + name: 'Barrett Toyama', + country: { + name: 'Thailand', + code: 'th' + }, + company: 'Case Foundation Co', + date: '2019-08-16', + status: 'new', + verified: true, + activity: 82, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 89792 + }, + { + id: 1201, + name: 'Helga Fredicks', + country: { + name: 'Guatemala', + code: 'gt' + }, + company: 'Eis Environmental Engrs Inc', + date: '2018-06-20', + status: 'new', + verified: true, + activity: 33, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 42356 + }, + { + id: 1202, + name: 'Ashlyn Pinilla', + country: { + name: 'Japan', + code: 'jp' + }, + company: 'Art Crafters', + date: '2018-04-11', + status: 'unqualified', + verified: true, + activity: 5, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 90979 + }, + { + id: 1203, + name: 'Fausto Agramonte', + country: { + name: 'Belgium', + code: 'be' + }, + company: 'Marriott Hotels Resorts Suites', + date: '2019-06-25', + status: 'new', + verified: false, + activity: 22, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 45082 + }, + { + id: 1204, + name: 'Ronny Caiafa', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'Remaco Inc', + date: '2020-07-21', + status: 'new', + verified: true, + activity: 61, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 9871 + }, + { + id: 1205, + name: 'Marge Limmel', + country: { + name: 'Cameroon', + code: 'cm' + }, + company: 'Bjork, Robert D Jr', + date: '2015-03-12', + status: 'unqualified', + verified: true, + activity: 90, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 47043 + }, + { + id: 1206, + name: 'Norah Waymire', + country: { + name: 'United States', + code: 'us' + }, + company: 'Carmichael, Jeffery L Esq', + date: '2019-06-11', + status: 'renewal', + verified: true, + activity: 48, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 92763 + }, + { + id: 1207, + name: 'Aliza Baltimore', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'Andrews, J Robert Esq', + date: '2020-11-25', + status: 'unqualified', + verified: true, + activity: 59, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 18075 + }, + { + id: 1208, + name: 'Mozell Pelkowski', + country: { + name: 'Latvia', + code: 'lv' + }, + company: 'Winship \u0026 Byrne', + date: '2018-04-13', + status: 'unqualified', + verified: true, + activity: 94, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 34393 + }, + { + id: 1209, + name: 'Viola Bitsuie', + country: { + name: 'Denmark', + code: 'dk' + }, + company: 'Burton \u0026 Davis', + date: '2018-07-07', + status: 'new', + verified: true, + activity: 94, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 16410 + }, + { + id: 1210, + name: 'Franklyn Emard', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Olympic Graphic Arts', + date: '2018-02-25', + status: 'qualified', + verified: true, + activity: 95, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 1017 + }, + { + id: 1211, + name: 'Willodean Konopacki', + country: { + name: 'Hong Kong', + code: 'hk' + }, + company: 'Magnuson', + date: '2017-10-03', + status: 'renewal', + verified: false, + activity: 20, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 77843 + }, + { + id: 1212, + name: 'Beckie Silvestrini', + country: { + name: 'Poland', + code: 'pl' + }, + company: 'A All American Travel Inc', + date: '2016-11-26', + status: 'renewal', + verified: true, + activity: 81, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 30549 + }, + { + id: 1213, + name: 'Rebecka Gesick', + country: { + name: 'Philippines', + code: 'ph' + }, + company: 'Polykote Inc', + date: '2019-06-22', + status: 'renewal', + verified: true, + activity: 45, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 51738 + }, + { + id: 1214, + name: 'Frederica Blunk', + country: { + name: 'Lithuania', + code: 'lt' + }, + company: 'Jets Cybernetics', + date: '2019-06-07', + status: 'renewal', + verified: true, + activity: 56, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 13111 + }, + { + id: 1215, + name: 'Glen Bartolet', + country: { + name: 'Germany', + code: 'de' + }, + company: 'Metlab Testing Services', + date: '2015-02-13', + status: 'negotiation', + verified: true, + activity: 99, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 85802 + }, + { + id: 1216, + name: 'Freeman Gochal', + country: { + name: 'Slovenia', + code: 'si' + }, + company: 'Kellermann, William T Esq', + date: '2019-08-27', + status: 'negotiation', + verified: false, + activity: 2, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 89221 + }, + { + id: 1217, + name: 'Vincent Meinerding', + country: { + name: 'United States', + code: 'us' + }, + company: 'Arturi, Peter D Esq', + date: '2018-06-18', + status: 'new', + verified: true, + activity: 58, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 32661 + }, + { + id: 1218, + name: 'Rima Bevelacqua', + country: { + name: 'Taiwan', + code: 'tw' + }, + company: 'Mcauley Mfg Co', + date: '2019-05-18', + status: 'new', + verified: true, + activity: 31, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 18809 + }, + { + id: 1219, + name: 'Glendora Sarbacher', + country: { + name: 'Lithuania', + code: 'lt' + }, + company: 'Defur Voran Hanley Radcliff', + date: '2018-04-21', + status: 'new', + verified: true, + activity: 79, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 94374 + }, + { + id: 1220, + name: 'Avery Steier', + country: { + name: 'Mexico', + code: 'mx' + }, + company: 'Dill Dill Carr \u0026 Stonbraker Pc', + date: '2017-07-27', + status: 'negotiation', + verified: true, + activity: 63, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 45436 + }, + { + id: 1221, + name: 'Cristy Lother', + country: { + name: 'Burkina Faso', + code: 'bf' + }, + company: 'Kleensteel', + date: '2018-05-19', + status: 'renewal', + verified: true, + activity: 55, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 72645 + }, + { + id: 1222, + name: 'Nicolette Brossart', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Goulds Pumps Inc Slurry Pump', + date: '2015-05-26', + status: 'new', + verified: false, + activity: 25, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 61023 + }, + { + id: 1223, + name: 'Tracey Modzelewski', + country: { + name: 'Denmark', + code: 'dk' + }, + company: 'Kansas City Insurance Report', + date: '2019-07-02', + status: 'renewal', + verified: true, + activity: 4, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 13685 + }, + { + id: 1224, + name: 'Virgina Tegarden', + country: { + name: 'Cameroon', + code: 'cm' + }, + company: 'Berhanu International Foods', + date: '2017-10-09', + status: 'qualified', + verified: true, + activity: 62, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 84436 + }, + { + id: 1225, + name: 'Tiera Frankel', + country: { + name: 'India', + code: 'in' + }, + company: 'Roland Ashcroft', + date: '2018-03-27', + status: 'unqualified', + verified: true, + activity: 90, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 61860 + }, + { + id: 1226, + name: 'Alaine Bergesen', + country: { + name: 'Peru', + code: 'pe' + }, + company: 'Hispanic Magazine', + date: '2017-08-10', + status: 'qualified', + verified: true, + activity: 34, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 76679 + }, + { + id: 1227, + name: 'Earleen Mai', + country: { + name: 'Italy', + code: 'it' + }, + company: 'Little Sheet Metal Co', + date: '2016-06-22', + status: 'negotiation', + verified: true, + activity: 38, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 14959 + }, + { + id: 1228, + name: 'Leonida Gobern', + country: { + name: 'Cuba', + code: 'cu' + }, + company: 'Holmes, Armstead J Esq', + date: '2020-02-24', + status: 'renewal', + verified: true, + activity: 96, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 14174 + }, + { + id: 1229, + name: 'Ressie Auffrey', + country: { + name: 'Japan', + code: 'jp' + }, + company: 'Faw, James C Cpa', + date: '2016-10-21', + status: 'negotiation', + verified: false, + activity: 28, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 80328 + }, + { + id: 1230, + name: 'Justine Mugnolo', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'Evans Rule Company', + date: '2016-02-21', + status: 'negotiation', + verified: true, + activity: 83, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 56392 + }, + { + id: 1231, + name: 'Eladia Saulter', + country: { + name: 'Switzerland', + code: 'ch' + }, + company: 'Tyee Productions Inc', + date: '2016-03-10', + status: 'new', + verified: true, + activity: 16, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 17176 + }, + { + id: 1232, + name: 'Chaya Malvin', + country: { + name: 'Cuba', + code: 'cu' + }, + company: 'Dunnells \u0026 Duvall', + date: '2016-07-22', + status: 'renewal', + verified: true, + activity: 12, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 90141 + }, + { + id: 1233, + name: 'Gwenn Suffield', + country: { + name: 'Austria', + code: 'at' + }, + company: 'Deltam Systems Inc', + date: '2019-06-23', + status: 'qualified', + verified: true, + activity: 67, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 38187 + }, + { + id: 1234, + name: 'Salena Karpel', + country: { + name: 'Puerto Rico', + code: 'pr' + }, + company: 'Hammill Mfg Co', + date: '2016-08-02', + status: 'renewal', + verified: true, + activity: 0, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 35596 + }, + { + id: 1235, + name: 'Yoko Fishburne', + country: { + name: 'Croatia', + code: 'hr' + }, + company: 'Sams Corner Store', + date: '2017-08-06', + status: 'unqualified', + verified: true, + activity: 73, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 73926 + }, + { + id: 1236, + name: 'Taryn Moyd', + country: { + name: 'Serbia', + code: 'rs' + }, + company: 'Siskin, Mark J Esq', + date: '2016-12-18', + status: 'negotiation', + verified: true, + activity: 57, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 38375 + }, + { + id: 1237, + name: 'Katina Polidori', + country: { + name: 'Nigeria', + code: 'ng' + }, + company: 'Cape \u0026 Associates Real Estate', + date: '2016-08-25', + status: 'unqualified', + verified: true, + activity: 37, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 35932 + }, + { + id: 1238, + name: 'Rickie Plumer', + country: { + name: 'Turkey', + code: 'tr' + }, + company: 'Merrill Lynch', + date: '2018-11-04', + status: 'unqualified', + verified: true, + activity: 71, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 28331 + }, + { + id: 1239, + name: 'Alex Loader', + country: { + name: 'Italy', + code: 'it' + }, + company: 'Sublett, Scott Esq', + date: '2016-01-07', + status: 'unqualified', + verified: false, + activity: 22, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 33549 + }, + { + id: 1240, + name: 'Lashon Vizarro', + country: { + name: 'Ecuador', + code: 'ec' + }, + company: 'Sentry Signs', + date: '2019-08-02', + status: 'negotiation', + verified: true, + activity: 46, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 63860 + }, + { + id: 1241, + name: 'Lauran Burnard', + country: { + name: 'Czech Republic', + code: 'cz' + }, + company: 'Professionals Unlimited', + date: '2016-04-27', + status: 'renewal', + verified: true, + activity: 30, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 34992 + }, + { + id: 1242, + name: 'Ceola Setter', + country: { + name: 'Taiwan', + code: 'tw' + }, + company: 'Southern Steel Shelving Co', + date: '2017-05-13', + status: 'qualified', + verified: true, + activity: 43, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 97068 + }, + { + id: 1243, + name: 'My Rantanen', + country: { + name: 'Philippines', + code: 'ph' + }, + company: 'Bosco, Paul J', + date: '2017-09-11', + status: 'negotiation', + verified: true, + activity: 60, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 2316 + }, + { + id: 1244, + name: 'Lorrine Worlds', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'Longo, Nicholas J Esq', + date: '2018-05-10', + status: 'renewal', + verified: true, + activity: 51, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 89374 + }, + { + id: 1245, + name: 'Peggie Sturiale', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'Henry County Middle School', + date: '2019-11-03', + status: 'renewal', + verified: true, + activity: 41, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 51152 + }, + { + id: 1246, + name: 'Marvel Raymo', + country: { + name: 'Belgium', + code: 'be' + }, + company: 'Edison Supply \u0026 Equipment Co', + date: '2016-03-08', + status: 'renewal', + verified: true, + activity: 9, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 39848 + }, + { + id: 1247, + name: 'Daron Dinos', + country: { + name: 'Hungary', + code: 'hu' + }, + company: 'Wolf, Warren R Esq', + date: '2016-03-25', + status: 'unqualified', + verified: true, + activity: 30, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 35060 + }, + { + id: 1248, + name: 'An Fritz', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'Linguistic Systems Inc', + date: '2017-08-04', + status: 'negotiation', + verified: true, + activity: 86, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 23037 + }, + { + id: 1249, + name: 'Portia Stimmel', + country: { + name: 'Australia', + code: 'au' + }, + company: 'Peace Christian Center', + date: '2020-01-13', + status: 'qualified', + verified: true, + activity: 30, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 35637 + }, + { + id: 1250, + name: 'Rhea Aredondo', + country: { + name: 'Greece', + code: 'gr' + }, + company: 'Double B Foods Inc', + date: '2016-06-19', + status: 'qualified', + verified: true, + activity: 68, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 70379 + }, + { + id: 1251, + name: 'Benedict Sama', + country: { + name: 'Israel', + code: 'il' + }, + company: 'Alexander \u0026 Alexander Inc', + date: '2018-08-18', + status: 'negotiation', + verified: true, + activity: 79, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 99271 + }, + { + id: 1252, + name: 'Alyce Arias', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Fairbanks Scales', + date: '2018-09-14', + status: 'new', + verified: true, + activity: 77, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 69658 + }, + { + id: 1253, + name: 'Heike Berganza', + country: { + name: 'Bulgaria', + code: 'bg' + }, + company: 'Cali Sportswear Cutting Dept', + date: '2019-01-21', + status: 'unqualified', + verified: true, + activity: 95, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 78159 + }, + { + id: 1254, + name: 'Carey Dopico', + country: { + name: 'Saudi Arabia', + code: 'sa' + }, + company: 'Garofani, John Esq', + date: '2020-05-25', + status: 'negotiation', + verified: true, + activity: 35, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 84097 + }, + { + id: 1255, + name: 'Dottie Hellickson', + country: { + name: 'Chile', + code: 'cl' + }, + company: 'Thompson Fabricating Co', + date: '2016-02-12', + status: 'qualified', + verified: true, + activity: 7, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 54606 + }, + { + id: 1256, + name: 'Deandrea Hughey', + country: { + name: 'South Africa', + code: 'za' + }, + company: 'Century 21 Krall Real Estate', + date: '2018-09-26', + status: 'unqualified', + verified: true, + activity: 96, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 2730 + }, + { + id: 1257, + name: 'Kimberlie Duenas', + country: { + name: 'Bulgaria', + code: 'bg' + }, + company: 'Mid Contntl Rlty \u0026 Prop Mgmt', + date: '2015-07-27', + status: 'qualified', + verified: true, + activity: 96, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 71836 + }, + { + id: 1258, + name: 'Martina Staback', + country: { + name: 'Luxembourg', + code: 'lu' + }, + company: 'Ace Signs Inc', + date: '2017-02-14', + status: 'new', + verified: true, + activity: 47, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 37044 + }, + { + id: 1259, + name: 'Skye Fillingim', + country: { + name: 'Belgium', + code: 'be' + }, + company: 'Rodeway Inn', + date: '2017-02-12', + status: 'new', + verified: true, + activity: 86, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 5990 + }, + { + id: 1260, + name: 'Jade Farrar', + country: { + name: 'Mexico', + code: 'mx' + }, + company: 'Bonnet \u0026 Daughter', + date: '2017-02-23', + status: 'new', + verified: true, + activity: 73, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 7878 + }, + { + id: 1261, + name: 'Charlene Hamilton', + country: { + name: 'India', + code: 'in' + }, + company: 'Oshins \u0026 Gibbons', + date: '2017-09-23', + status: 'unqualified', + verified: true, + activity: 32, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 38077 + }, + { + id: 1262, + name: 'Geoffrey Acey', + country: { + name: 'Hong Kong', + code: 'hk' + }, + company: 'Price Business Services', + date: '2019-10-11', + status: 'negotiation', + verified: true, + activity: 98, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 24537 + }, + { + id: 1263, + name: 'Stevie Westerbeck', + country: { + name: 'Lithuania', + code: 'lt' + }, + company: 'Wise, Dennis W Md', + date: '2017-08-01', + status: 'renewal', + verified: true, + activity: 57, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 19164 + }, + { + id: 1264, + name: 'Pamella Fortino', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Super 8 Motel', + date: '2018-09-03', + status: 'new', + verified: true, + activity: 100, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 21880 + }, + { + id: 1265, + name: 'Harrison Haufler', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'John Wagner Associates', + date: '2016-08-25', + status: 'qualified', + verified: true, + activity: 85, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 14975 + }, + { + id: 1266, + name: 'Johnna Engelberg', + country: { + name: 'Thailand', + code: 'th' + }, + company: 'Thrifty Oil Co', + date: '2019-06-02', + status: 'renewal', + verified: true, + activity: 1, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 28001 + }, + { + id: 1267, + name: 'Buddy Cloney', + country: { + name: 'Hungary', + code: 'hu' + }, + company: 'Larkfield Photo', + date: '2020-05-14', + status: 'qualified', + verified: true, + activity: 9, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 44811 + }, + { + id: 1268, + name: 'Dalene Riden', + country: { + name: 'Bolivia', + code: 'bo' + }, + company: 'Silverman Planetarium', + date: '2019-08-23', + status: 'renewal', + verified: true, + activity: 31, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 70963 + }, + { + id: 1269, + name: 'Jerry Zurcher', + country: { + name: 'Ukraine', + code: 'ua' + }, + company: 'J \u0026 F Lumber', + date: '2015-05-11', + status: 'renewal', + verified: true, + activity: 52, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 27808 + }, + { + id: 1270, + name: 'Haydee Denooyer', + country: { + name: 'Ivory Coast', + code: 'ci' + }, + company: 'Cleaning Station Inc', + date: '2016-04-17', + status: 'qualified', + verified: true, + activity: 80, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 41216 + }, + { + id: 1271, + name: 'Joseph Cryer', + country: { + name: 'Philippines', + code: 'ph' + }, + company: 'Ames Stationers', + date: '2019-11-26', + status: 'qualified', + verified: true, + activity: 53, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 8819 + }, + { + id: 1272, + name: 'Deonna Kippley', + country: { + name: 'South Africa', + code: 'za' + }, + company: 'Midas Muffler Shops', + date: '2017-08-26', + status: 'qualified', + verified: true, + activity: 52, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 77610 + }, + { + id: 1273, + name: 'Raymon Calvaresi', + country: { + name: 'South Africa', + code: 'za' + }, + company: 'Seaboard Securities Inc', + date: '2017-07-09', + status: 'qualified', + verified: true, + activity: 45, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 80612 + }, + { + id: 1274, + name: 'Alecia Bubash', + country: { + name: 'Poland', + code: 'pl' + }, + company: 'Petersen, James E Esq', + date: '2016-05-19', + status: 'new', + verified: false, + activity: 28, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 45311 + }, + { + id: 1275, + name: 'Ma Layous', + country: { + name: 'Latvia', + code: 'lv' + }, + company: 'Development Authority', + date: '2016-02-11', + status: 'qualified', + verified: false, + activity: 2, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 88737 + }, + { + id: 1276, + name: 'Detra Coyier', + country: { + name: 'Ivory Coast', + code: 'ci' + }, + company: 'Schott Fiber Optics Inc', + date: '2019-06-05', + status: 'negotiation', + verified: true, + activity: 95, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 13224 + }, + { + id: 1277, + name: 'Terrilyn Rodeigues', + country: { + name: 'Thailand', + code: 'th' + }, + company: 'Stuart J Agins', + date: '2016-08-04', + status: 'renewal', + verified: true, + activity: 35, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 64656 + }, + { + id: 1278, + name: 'Salome Lacovara', + country: { + name: 'Romania', + code: 'ro' + }, + company: 'Mitsumi Electronics Corp', + date: '2015-06-05', + status: 'unqualified', + verified: true, + activity: 78, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 61947 + }, + { + id: 1279, + name: 'Garry Keetch', + country: { + name: 'Luxembourg', + code: 'lu' + }, + company: 'Italian Express Franchise Corp', + date: '2015-06-20', + status: 'unqualified', + verified: true, + activity: 86, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 6380 + }, + { + id: 1280, + name: 'Matthew Neither', + country: { + name: 'United Kingdom', + code: 'gb' + }, + company: 'American Council On Sci \u0026 Hlth', + date: '2018-06-24', + status: 'qualified', + verified: true, + activity: 4, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 80112 + }, + { + id: 1281, + name: 'Theodora Restrepo', + country: { + name: 'Paraguay', + code: 'py' + }, + company: 'Kleri, Patricia S Esq', + date: '2017-08-15', + status: 'renewal', + verified: true, + activity: 66, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 42038 + }, + { + id: 1282, + name: 'Noah Kalafatis', + country: { + name: 'Saudi Arabia', + code: 'sa' + }, + company: 'Twiggs Abrams Blanchard', + date: '2020-06-24', + status: 'negotiation', + verified: true, + activity: 35, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 36052 + }, + { + id: 1283, + name: 'Carmen Sweigard', + country: { + name: 'Bolivia', + code: 'bo' + }, + company: 'Maui Research \u0026 Technology Pk', + date: '2019-08-08', + status: 'new', + verified: true, + activity: 96, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 51660 + }, + { + id: 1284, + name: 'Lavonda Hengel', + country: { + name: 'Hungary', + code: 'hu' + }, + company: 'Bradley Nameplate Corp', + date: '2019-10-25', + status: 'negotiation', + verified: true, + activity: 48, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 56142 + }, + { + id: 1285, + name: 'Junita Stoltzman', + country: { + name: 'Turkey', + code: 'tr' + }, + company: 'Geonex Martel Inc', + date: '2015-03-19', + status: 'negotiation', + verified: true, + activity: 64, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 21631 + }, + { + id: 1286, + name: 'Herminia Nicolozakes', + country: { + name: 'Venezuela', + code: 've' + }, + company: 'Sea Island Div Of Fstr Ind Inc', + date: '2019-09-09', + status: 'negotiation', + verified: true, + activity: 0, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 59171 + }, + { + id: 1287, + name: 'Casie Good', + country: { + name: 'Japan', + code: 'jp' + }, + company: 'Papay, Debbie J Esq', + date: '2016-11-27', + status: 'new', + verified: true, + activity: 87, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 97858 + }, + { + id: 1288, + name: 'Reena Maisto', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Lane Promotions', + date: '2016-08-22', + status: 'new', + verified: true, + activity: 16, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 90388 + }, + { + id: 1289, + name: 'Mirta Mallett', + country: { + name: 'Singapore', + code: 'sg' + }, + company: 'Stephen Kennerly Archts Inc Pc', + date: '2017-11-27', + status: 'renewal', + verified: true, + activity: 14, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 68632 + }, + { + id: 1290, + name: 'Cathrine Pontoriero', + country: { + name: 'Finland', + code: 'fi' + }, + company: 'Business Systems Of Wis Inc', + date: '2020-02-07', + status: 'negotiation', + verified: true, + activity: 58, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 95552 + }, + { + id: 1291, + name: 'Filiberto Tawil', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Flash, Elena Salerno Esq', + date: '2018-01-28', + status: 'negotiation', + verified: true, + activity: 0, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 39725 + }, + { + id: 1292, + name: 'Raul Upthegrove', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Neeley, Gregory W Esq', + date: '2019-11-16', + status: 'renewal', + verified: true, + activity: 59, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 62251 + }, + { + id: 1293, + name: 'Sarah Candlish', + country: { + name: 'Hong Kong', + code: 'hk' + }, + company: 'Alabama Educational Tv Comm', + date: '2019-06-09', + status: 'negotiation', + verified: true, + activity: 30, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 73523 + }, + { + id: 1294, + name: 'Lucy Treston', + country: { + name: 'Jamaica', + code: 'jm' + }, + company: 'Franz Inc', + date: '2017-02-07', + status: 'negotiation', + verified: true, + activity: 59, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 41331 + }, + { + id: 1295, + name: 'Judy Aquas', + country: { + name: 'Romania', + code: 'ro' + }, + company: 'Plantation Restaurant', + date: '2020-09-14', + status: 'renewal', + verified: true, + activity: 86, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 24208 + }, + { + id: 1296, + name: 'Yvonne Tjepkema', + country: { + name: 'United Kingdom', + code: 'gb' + }, + company: 'Radio Communications Co', + date: '2017-01-06', + status: 'renewal', + verified: true, + activity: 33, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 56409 + }, + { + id: 1297, + name: 'Kayleigh Lace', + country: { + name: 'Denmark', + code: 'dk' + }, + company: 'Dentalaw Divsn Hlth Care', + date: '2019-11-04', + status: 'negotiation', + verified: true, + activity: 70, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 70025 + }, + { + id: 1298, + name: 'Felix Hirpara', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'American Speedy Printing Ctrs', + date: '2015-03-13', + status: 'new', + verified: true, + activity: 8, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 88115 + }, + { + id: 1299, + name: 'Tresa Sweely', + country: { + name: 'Germany', + code: 'de' + }, + company: 'Grayson, Grant S Esq', + date: '2019-12-22', + status: 'negotiation', + verified: true, + activity: 22, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 69703 + }, + { + id: 1300, + name: 'Kristeen Turinetti', + country: { + name: 'Burkina Faso', + code: 'bf' + }, + company: 'Jeanerette Middle School', + date: '2017-09-28', + status: 'new', + verified: true, + activity: 67, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 10718 + }, + { + id: 1301, + name: 'Jenelle Regusters', + country: { + name: 'Hungary', + code: 'hu' + }, + company: 'Haavisto, Brian F Esq', + date: '2019-07-27', + status: 'qualified', + verified: true, + activity: 13, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 29825 + }, + { + id: 1302, + name: 'Renea Monterrubio', + country: { + name: 'Greece', + code: 'gr' + }, + company: 'Wmmt Radio Station', + date: '2016-03-28', + status: 'negotiation', + verified: true, + activity: 73, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 90351 + }, + { + id: 1303, + name: 'Olive Matuszak', + country: { + name: 'Germany', + code: 'de' + }, + company: 'Colony Paints Sales Ofc \u0026 Plnt', + date: '2018-04-15', + status: 'unqualified', + verified: true, + activity: 70, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 75682 + }, + { + id: 1304, + name: 'Ligia Reiber', + country: { + name: 'Cameroon', + code: 'cm' + }, + company: 'Floral Expressions', + date: '2017-02-02', + status: 'negotiation', + verified: true, + activity: 51, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 74935 + }, + { + id: 1305, + name: 'Christiane Eschberger', + country: { + name: 'Romania', + code: 'ro' + }, + company: 'Casco Services Inc', + date: '2018-03-27', + status: 'unqualified', + verified: true, + activity: 81, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 5254 + }, + { + id: 1306, + name: 'Goldie Schirpke', + country: { + name: 'Paraguay', + code: 'py' + }, + company: 'Reuter, Arthur C Jr', + date: '2015-04-21', + status: 'renewal', + verified: true, + activity: 8, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 37306 + }, + { + id: 1307, + name: 'Loreta Timenez', + country: { + name: 'Burkina Faso', + code: 'bf' + }, + company: 'Kaminski, Katherine Andritsaki', + date: '2015-07-17', + status: 'negotiation', + verified: true, + activity: 29, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 70520 + }, + { + id: 1308, + name: 'Fabiola Hauenstein', + country: { + name: 'Czech Republic', + code: 'cz' + }, + company: 'Sidewinder Products Corp', + date: '2015-12-12', + status: 'renewal', + verified: true, + activity: 42, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 74510 + }, + { + id: 1309, + name: 'Amie Perigo', + country: { + name: 'Russia', + code: 'ru' + }, + company: 'General Foam Corporation', + date: '2016-06-13', + status: 'new', + verified: true, + activity: 55, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 74410 + }, + { + id: 1310, + name: 'Raina Brachle', + country: { + name: 'Greece', + code: 'gr' + }, + company: 'Ikg Borden Divsn Harsco Corp', + date: '2016-11-28', + status: 'negotiation', + verified: true, + activity: 12, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 56116 + }, + { + id: 1311, + name: 'Erinn Canlas', + country: { + name: 'United Kingdom', + code: 'gb' + }, + company: 'Anchor Computer Inc', + date: '2018-12-08', + status: 'negotiation', + verified: true, + activity: 89, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 46518 + }, + { + id: 1312, + name: 'Cherry Lietz', + country: { + name: 'Bulgaria', + code: 'bg' + }, + company: 'Sebring \u0026 Co', + date: '2017-11-04', + status: 'qualified', + verified: true, + activity: 22, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 92213 + }, + { + id: 1313, + name: 'Kattie Vonasek', + country: { + name: 'Austria', + code: 'at' + }, + company: 'H A C Farm Lines Co Optv Assoc', + date: '2017-02-17', + status: 'negotiation', + verified: true, + activity: 58, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 6405 + }, + { + id: 1314, + name: 'Lilli Scriven', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Hunter, John J Esq', + date: '2017-04-15', + status: 'qualified', + verified: true, + activity: 79, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 92900 + }, + { + id: 1315, + name: 'Whitley Tomasulo', + country: { + name: 'Qatar', + code: 'qa' + }, + company: 'Freehold Fence Co', + date: '2017-11-16', + status: 'qualified', + verified: true, + activity: 6, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 86727 + }, + { + id: 1316, + name: 'Barbra Adkin', + country: { + name: 'Nigeria', + code: 'ng' + }, + company: 'Binswanger', + date: '2019-07-24', + status: 'qualified', + verified: true, + activity: 64, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 48040 + }, + { + id: 1317, + name: 'Hermila Thyberg', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'Chilton Malting Co', + date: '2016-11-05', + status: 'qualified', + verified: true, + activity: 57, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 24026 + }, + { + id: 1318, + name: 'Jesusita Flister', + country: { + name: 'Ukraine', + code: 'ua' + }, + company: 'Schoen, Edward J Jr', + date: '2017-03-03', + status: 'negotiation', + verified: true, + activity: 29, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 76388 + }, + { + id: 1319, + name: 'Caitlin Julia', + country: { + name: 'Israel', + code: 'il' + }, + company: 'Helderman, Seymour Cpa', + date: '2018-03-13', + status: 'renewal', + verified: true, + activity: 19, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 89068 + }, + { + id: 1320, + name: 'Roosevelt Hoffis', + country: { + name: 'Puerto Rico', + code: 'pr' + }, + company: 'Denbrook, Myron', + date: '2019-04-14', + status: 'new', + verified: true, + activity: 49, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 12727 + }, + { + id: 1321, + name: 'Helaine Halter', + country: { + name: 'Estonia', + code: 'ee' + }, + company: 'Lippitt, Mike', + date: '2019-09-28', + status: 'renewal', + verified: true, + activity: 62, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 83411 + }, + { + id: 1322, + name: 'Lorean Martabano', + country: { + name: 'Slovakia', + code: 'sk' + }, + company: 'Hiram, Hogg P Esq', + date: '2017-03-23', + status: 'negotiation', + verified: true, + activity: 8, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 44242 + }, + { + id: 1323, + name: 'France Buzick', + country: { + name: 'Nigeria', + code: 'ng' + }, + company: 'In Travel Agency', + date: '2016-12-14', + status: 'renewal', + verified: true, + activity: 22, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 5644 + }, + { + id: 1324, + name: 'Justine Ferrario', + country: { + name: 'Ukraine', + code: 'ua' + }, + company: 'Newhart Foods Inc', + date: '2015-09-07', + status: 'unqualified', + verified: true, + activity: 7, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 29321 + }, + { + id: 1325, + name: 'Adelina Nabours', + country: { + name: 'Mexico', + code: 'mx' + }, + company: 'Courtyard By Marriott', + date: '2018-05-26', + status: 'renewal', + verified: true, + activity: 59, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 13353 + }, + { + id: 1326, + name: 'Derick Dhamer', + country: { + name: 'Hungary', + code: 'hu' + }, + company: 'Studer, Eugene A Esq', + date: '2020-07-04', + status: 'new', + verified: true, + activity: 72, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 53454 + }, + { + id: 1327, + name: 'Jerry Dallen', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Seashore Supply Co Waretown', + date: '2015-10-23', + status: 'renewal', + verified: false, + activity: 21, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 30074 + }, + { + id: 1328, + name: 'Leota Ragel', + country: { + name: 'Qatar', + code: 'qa' + }, + company: 'Mayar Silk Inc', + date: '2019-06-15', + status: 'negotiation', + verified: true, + activity: 74, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 36310 + }, + { + id: 1329, + name: 'Jutta Amyot', + country: { + name: 'Cameroon', + code: 'cm' + }, + company: 'National Medical Excess Corp', + date: '2019-09-01', + status: 'negotiation', + verified: true, + activity: 8, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 27563 + }, + { + id: 1330, + name: 'Aja Gehrett', + country: { + name: 'Sweden', + code: 'se' + }, + company: 'Stero Company', + date: '2018-01-28', + status: 'qualified', + verified: true, + activity: 46, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 45163 + }, + { + id: 1331, + name: 'Kirk Herritt', + country: { + name: 'Morocco', + code: 'ma' + }, + company: 'Hasting, H Duane Esq', + date: '2018-10-24', + status: 'renewal', + verified: false, + activity: 2, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 52970 + }, + { + id: 1332, + name: 'Leonora Mauson', + country: { + name: 'Hong Kong', + code: 'hk' + }, + company: 'Insty Prints', + date: '2019-02-02', + status: 'negotiation', + verified: true, + activity: 8, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 18922 + }, + { + id: 1333, + name: 'Winfred Brucato', + country: { + name: 'Austria', + code: 'at' + }, + company: 'Glenridge Manor Mobile Home Pk', + date: '2019-08-16', + status: 'renewal', + verified: true, + activity: 8, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 59632 + }, + { + id: 1334, + name: 'Tarra Nachor', + country: { + name: 'Panama', + code: 'pa' + }, + company: 'Circuit Solution Inc', + date: '2019-07-10', + status: 'negotiation', + verified: true, + activity: 88, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 6733 + }, + { + id: 1335, + name: 'Corinne Loder', + country: { + name: 'Brazil', + code: 'br' + }, + company: 'Local Office', + date: '2016-05-21', + status: 'negotiation', + verified: true, + activity: 85, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 22704 + }, + { + id: 1336, + name: 'Dulce Labreche', + country: { + name: 'South Africa', + code: 'za' + }, + company: 'Lee Kilkelly Paulson \u0026 Kabaker', + date: '2019-11-10', + status: 'qualified', + verified: true, + activity: 24, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 82613 + }, + { + id: 1337, + name: 'Kate Keneipp', + country: { + name: 'Latvia', + code: 'lv' + }, + company: 'Davis, Maxon R Esq', + date: '2019-06-20', + status: 'negotiation', + verified: true, + activity: 44, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 97960 + }, + { + id: 1338, + name: 'Kaitlyn Ogg', + country: { + name: 'Tunisia', + code: 'tn' + }, + company: 'Garrison, Paul E Esq', + date: '2019-08-01', + status: 'negotiation', + verified: true, + activity: 91, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 63123 + }, + { + id: 1339, + name: 'Sherita Saras', + country: { + name: 'Taiwan', + code: 'tw' + }, + company: 'Black History Resource Center', + date: '2017-06-09', + status: 'unqualified', + verified: true, + activity: 79, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 38090 + }, + { + id: 1340, + name: 'Lashawnda Stuer', + country: { + name: 'Indonesia', + code: 'id' + }, + company: 'Rodriguez, J Christopher Esq', + date: '2018-01-08', + status: 'negotiation', + verified: true, + activity: 6, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 58826 + }, + { + id: 1341, + name: 'Ernest Syrop', + country: { + name: 'Jamaica', + code: 'jm' + }, + company: 'Grant Family Health Center', + date: '2016-10-06', + status: 'unqualified', + verified: true, + activity: 90, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 22419 + }, + { + id: 1342, + name: 'Nobuko Halsey', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'Goeman Wood Products Inc', + date: '2019-01-02', + status: 'unqualified', + verified: true, + activity: 72, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 86006 + }, + { + id: 1343, + name: 'Lavonna Wolny', + country: { + name: 'Czech Republic', + code: 'cz' + }, + company: 'Linhares, Kenneth A Esq', + date: '2019-03-09', + status: 'negotiation', + verified: true, + activity: 77, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 40641 + }, + { + id: 1344, + name: 'Lashaunda Lizama', + country: { + name: 'Ecuador', + code: 'ec' + }, + company: 'Earnhardt Printing', + date: '2016-02-16', + status: 'negotiation', + verified: true, + activity: 76, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 73493 + }, + { + id: 1345, + name: 'Mariann Bilden', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'H P G Industrys Inc', + date: '2019-12-15', + status: 'negotiation', + verified: true, + activity: 20, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 87704 + }, + { + id: 1346, + name: 'Helene Rodenberger', + country: { + name: 'Bolivia', + code: 'bo' + }, + company: 'Bailey Transportation Prod Inc', + date: '2016-09-22', + status: 'unqualified', + verified: true, + activity: 26, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 19662 + }, + { + id: 1347, + name: 'Roselle Estell', + country: { + name: 'Hungary', + code: 'hu' + }, + company: 'Mcglynn Bliss Pc', + date: '2016-11-25', + status: 'negotiation', + verified: true, + activity: 80, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 80534 + }, + { + id: 1348, + name: 'Samira Heintzman', + country: { + name: 'Vietnam', + code: 'vn' + }, + company: 'Mutual Fish Co', + date: '2019-11-26', + status: 'qualified', + verified: true, + activity: 70, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 19473 + }, + { + id: 1349, + name: 'Margart Meisel', + country: { + name: 'Serbia', + code: 'rs' + }, + company: 'Yeates, Arthur L Aia', + date: '2019-10-27', + status: 'negotiation', + verified: true, + activity: 77, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 89796 + }, + { + id: 1350, + name: 'Kristofer Bennick', + country: { + name: 'Tunisia', + code: 'tn' + }, + company: 'Logan, Ronald J Esq', + date: '2016-02-13', + status: 'negotiation', + verified: true, + activity: 5, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 54429 + }, + { + id: 1351, + name: 'Weldon Acuff', + country: { + name: 'Estonia', + code: 'ee' + }, + company: 'Advantage Martgage Company', + date: '2019-10-22', + status: 'qualified', + verified: true, + activity: 38, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 16134 + }, + { + id: 1352, + name: 'Shalon Shadrick', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Germer And Gertz Llp', + date: '2015-01-03', + status: 'negotiation', + verified: true, + activity: 66, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 9173 + }, + { + id: 1353, + name: 'Denise Patak', + country: { + name: 'Uruguay', + code: 'uy' + }, + company: 'Spence Law Offices', + date: '2016-11-03', + status: 'qualified', + verified: true, + activity: 77, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 42857 + }, + { + id: 1354, + name: 'Louvenia Beech', + country: { + name: 'Ecuador', + code: 'ec' + }, + company: 'John Ortiz Nts Therapy Center', + date: '2016-04-11', + status: 'renewal', + verified: true, + activity: 62, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 54300 + }, + { + id: 1355, + name: 'Audry Yaw', + country: { + name: 'Portugal', + code: 'pt' + }, + company: 'Mike Uchrin Htg \u0026 Air Cond Inc', + date: '2017-11-22', + status: 'unqualified', + verified: true, + activity: 12, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 94652 + }, + { + id: 1356, + name: 'Kristel Ehmann', + country: { + name: 'Israel', + code: 'il' + }, + company: 'Mccoy, Joy Reynolds Esq', + date: '2016-06-23', + status: 'new', + verified: true, + activity: 67, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 88295 + }, + { + id: 1357, + name: 'Vincenza Zepp', + country: { + name: 'Pakistan', + code: 'pk' + }, + company: 'Kbor 1600 Am', + date: '2016-01-04', + status: 'qualified', + verified: true, + activity: 25, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 92710 + }, + { + id: 1358, + name: 'Elouise Gwalthney', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'Quality Inn Northwest', + date: '2016-04-05', + status: 'negotiation', + verified: true, + activity: 14, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 25145 + }, + { + id: 1359, + name: 'Venita Maillard', + country: { + name: 'Poland', + code: 'pl' + }, + company: 'Wallace Church Assoc Inc', + date: '2016-03-23', + status: 'negotiation', + verified: true, + activity: 69, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 61630 + }, + { + id: 1360, + name: 'Kasandra Semidey', + country: { + name: 'Indonesia', + code: 'id' + }, + company: 'Can Tron', + date: '2015-09-03', + status: 'new', + verified: true, + activity: 25, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 66134 + }, + { + id: 1361, + name: 'Xochitl Discipio', + country: { + name: 'Slovakia', + code: 'sk' + }, + company: 'Ravaal Enterprises Inc', + date: '2016-11-14', + status: 'qualified', + verified: true, + activity: 47, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 14822 + }, + { + id: 1362, + name: 'Maile Linahan', + country: { + name: 'Nigeria', + code: 'ng' + }, + company: 'Thompson Steel Company Inc', + date: '2016-07-24', + status: 'new', + verified: true, + activity: 0, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 17759 + }, + { + id: 1363, + name: 'Krissy Rauser', + country: { + name: 'Thailand', + code: 'th' + }, + company: 'Anderson, Mark A Esq', + date: '2020-03-06', + status: 'renewal', + verified: true, + activity: 33, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 14922 + }, + { + id: 1364, + name: 'Pete Dubaldi', + country: { + name: 'Bolivia', + code: 'bo' + }, + company: 'Womack \u0026 Galich', + date: '2015-11-22', + status: 'unqualified', + verified: true, + activity: 31, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 96575 + }, + { + id: 1365, + name: 'Linn Paa', + country: { + name: 'Bolivia', + code: 'bo' + }, + company: 'Valerie \u0026 Company', + date: '2015-08-12', + status: 'unqualified', + verified: true, + activity: 26, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 5847 + }, + { + id: 1366, + name: 'Paris Wide', + country: { + name: 'Uruguay', + code: 'uy' + }, + company: 'Gehring Pumps Inc', + date: '2018-10-21', + status: 'negotiation', + verified: true, + activity: 90, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 22929 + }, + { + id: 1367, + name: 'Wynell Dorshorst', + country: { + name: 'Romania', + code: 'ro' + }, + company: 'Haehnel, Craig W Esq', + date: '2018-05-10', + status: 'new', + verified: true, + activity: 60, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 31837 + }, + { + id: 1368, + name: 'Quentin Birkner', + country: { + name: 'Senegal', + code: 'sn' + }, + company: 'Spoor Behrins Campbell \u0026 Young', + date: '2019-02-03', + status: 'unqualified', + verified: true, + activity: 68, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 27095 + }, + { + id: 1369, + name: 'Regenia Kannady', + country: { + name: 'Portugal', + code: 'pt' + }, + company: 'Ken Jeter Store Equipment Inc', + date: '2018-07-13', + status: 'new', + verified: true, + activity: 74, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 43696 + }, + { + id: 1370, + name: 'Sheron Louissant', + country: { + name: 'France', + code: 'fr' + }, + company: 'Potter, Brenda J Cpa', + date: '2017-01-04', + status: 'qualified', + verified: true, + activity: 86, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 79897 + }, + { + id: 1371, + name: 'Izetta Funnell', + country: { + name: 'Hong Kong', + code: 'hk' + }, + company: 'Baird Kurtz \u0026 Dobson', + date: '2019-11-05', + status: 'new', + verified: true, + activity: 67, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 27264 + }, + { + id: 1372, + name: 'Rodolfo Butzen', + country: { + name: 'Taiwan', + code: 'tw' + }, + company: 'Minor, Cynthia A Esq', + date: '2020-09-25', + status: 'negotiation', + verified: true, + activity: 17, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 16490 + }, + { + id: 1373, + name: 'Zona Colla', + country: { + name: 'Switzerland', + code: 'ch' + }, + company: 'Solove, Robert A Esq', + date: '2020-10-08', + status: 'negotiation', + verified: true, + activity: 64, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 21990 + }, + { + id: 1374, + name: 'Serina Zagen', + country: { + name: 'Paraguay', + code: 'py' + }, + company: 'Mark Ii Imports Inc', + date: '2018-07-14', + status: 'negotiation', + verified: true, + activity: 46, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 11918 + }, + { + id: 1375, + name: 'Paz Sahagun', + country: { + name: 'Colombia', + code: 'co' + }, + company: 'White Sign Div Ctrl Equip Co', + date: '2018-03-23', + status: 'negotiation', + verified: true, + activity: 49, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 13268 + }, + { + id: 1376, + name: 'Markus Lukasik', + country: { + name: 'Burkina Faso', + code: 'bf' + }, + company: 'M \u0026 M Store Fixtures Co Inc', + date: '2018-03-21', + status: 'negotiation', + verified: true, + activity: 23, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 15941 + }, + { + id: 1377, + name: 'Jaclyn Bachman', + country: { + name: 'Slovakia', + code: 'sk' + }, + company: 'Judah Caster \u0026 Wheel Co', + date: '2020-10-20', + status: 'new', + verified: true, + activity: 10, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 53132 + }, + { + id: 1378, + name: 'Cyril Daufeldt', + country: { + name: 'India', + code: 'in' + }, + company: 'Galaxy International Inc', + date: '2019-02-11', + status: 'qualified', + verified: true, + activity: 79, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 47531 + }, + { + id: 1379, + name: 'Gayla Schnitzler', + country: { + name: 'Brazil', + code: 'br' + }, + company: 'Sigma Corp Of America', + date: '2017-09-15', + status: 'new', + verified: true, + activity: 14, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 88950 + }, + { + id: 1380, + name: 'Erick Nievas', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'Soward, Anne Esq', + date: '2018-10-07', + status: 'negotiation', + verified: false, + activity: 28, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 88497 + }, + { + id: 1381, + name: 'Jennie Drymon', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'Osborne, Michelle M Esq', + date: '2016-09-14', + status: 'negotiation', + verified: true, + activity: 80, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 60634 + }, + { + id: 1382, + name: 'Mitsue Scipione', + country: { + name: 'Ecuador', + code: 'ec' + }, + company: 'Students In Free Entrprs Natl', + date: '2019-07-28', + status: 'qualified', + verified: true, + activity: 24, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 21164 + }, + { + id: 1383, + name: 'Ciara Ventura', + country: { + name: 'Sweden', + code: 'se' + }, + company: 'Johnson, Robert M Esq', + date: '2018-04-02', + status: 'renewal', + verified: false, + activity: 24, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 83645 + }, + { + id: 1384, + name: 'Galen Cantres', + country: { + name: 'Saudi Arabia', + code: 'sa' + }, + company: 'Del Charro Apartments', + date: '2020-02-16', + status: 'unqualified', + verified: true, + activity: 61, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 32433 + }, + { + id: 1385, + name: 'Truman Feichtner', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Legal Search Inc', + date: '2019-10-16', + status: 'renewal', + verified: true, + activity: 98, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 96983 + }, + { + id: 1386, + name: 'Gail Kitty', + country: { + name: 'Pakistan', + code: 'pk' + }, + company: 'Service Supply Co Inc', + date: '2020-01-15', + status: 'negotiation', + verified: true, + activity: 67, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 72211 + }, + { + id: 1387, + name: 'Dalene Schoeneck', + country: { + name: 'Latvia', + code: 'lv' + }, + company: 'Sameshima, Douglas J Esq', + date: '2019-11-27', + status: 'negotiation', + verified: true, + activity: 85, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 40262 + }, + { + id: 1388, + name: 'Gertude Witten', + country: { + name: 'Morocco', + code: 'ma' + }, + company: 'Thompson, John Randolph Jr', + date: '2017-08-13', + status: 'negotiation', + verified: true, + activity: 40, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 91139 + }, + { + id: 1389, + name: 'Lizbeth Kohl', + country: { + name: 'Serbia', + code: 'rs' + }, + company: 'E T Balancing Co Inc', + date: '2019-04-20', + status: 'qualified', + verified: true, + activity: 57, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 79659 + }, + { + id: 1390, + name: 'Glenn Berray', + country: { + name: 'Poland', + code: 'pl' + }, + company: 'Griswold, John E Esq', + date: '2017-08-13', + status: 'negotiation', + verified: true, + activity: 68, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 93576 + }, + { + id: 1391, + name: 'Lashandra Klang', + country: { + name: 'Bulgaria', + code: 'bg' + }, + company: 'Acqua Group', + date: '2016-06-08', + status: 'negotiation', + verified: true, + activity: 32, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 93576 + }, + { + id: 1392, + name: 'Lenna Newville', + country: { + name: 'Venezuela', + code: 've' + }, + company: 'Brooks, Morris J Jr', + date: '2020-09-12', + status: 'qualified', + verified: true, + activity: 82, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 93576 + }, + { + id: 1393, + name: 'Laurel Pagliuca', + country: { + name: 'Russia', + code: 'ru' + }, + company: 'Printing Images Corp', + date: '2017-05-26', + status: 'unqualified', + verified: true, + activity: 21, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 2009 + }, + { + id: 1394, + name: 'Mireya Frerking', + country: { + name: 'Belarus', + code: 'by' + }, + company: 'Roberts Supply Co Inc', + date: '2017-04-21', + status: 'renewal', + verified: true, + activity: 54, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 35341 + }, + { + id: 1395, + name: 'Annelle Tagala', + country: { + name: 'Colombia', + code: 'co' + }, + company: 'Vico Products Mfg Co', + date: '2017-10-02', + status: 'negotiation', + verified: true, + activity: 53, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 13077 + }, + { + id: 1396, + name: 'Dean Ketelsen', + country: { + name: 'Ivory Coast', + code: 'ci' + }, + company: 'J M Custom Design Millwork', + date: '2019-07-25', + status: 'negotiation', + verified: true, + activity: 98, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 83423 + }, + { + id: 1397, + name: 'Levi Munis', + country: { + name: 'Pakistan', + code: 'pk' + }, + company: 'Farrell \u0026 Johnson Office Equip', + date: '2017-06-24', + status: 'negotiation', + verified: true, + activity: 39, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 14350 + }, + { + id: 1398, + name: 'Sylvie Ryser', + country: { + name: 'India', + code: 'in' + }, + company: 'Millers Market \u0026 Deli', + date: '2016-02-23', + status: 'unqualified', + verified: true, + activity: 89, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 98864 + }, + { + id: 1399, + name: 'Sharee Maile', + country: { + name: 'Ireland', + code: 'ie' + }, + company: 'Holiday Inn Naperville', + date: '2020-07-17', + status: 'renewal', + verified: true, + activity: 0, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 29326 + }, + { + id: 1400, + name: 'Cordelia Storment', + country: { + name: 'Guatemala', + code: 'gt' + }, + company: 'Burrows, Jon H Esq', + date: '2020-02-17', + status: 'negotiation', + verified: true, + activity: 45, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 81198 + }, + { + id: 1401, + name: 'Mollie Mcdoniel', + country: { + name: 'Vietnam', + code: 'vn' + }, + company: 'Dock Seal Specialty', + date: '2017-08-13', + status: 'unqualified', + verified: true, + activity: 59, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 82391 + }, + { + id: 1402, + name: 'Brett Mccullan', + country: { + name: 'Senegal', + code: 'sn' + }, + company: 'Five Star Limousines Of Tx Inc', + date: '2015-05-21', + status: 'qualified', + verified: true, + activity: 9, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 48071 + }, + { + id: 1403, + name: 'Teddy Pedrozo', + country: { + name: 'Burkina Faso', + code: 'bf' + }, + company: 'Barkan, Neal J Esq', + date: '2019-02-19', + status: 'negotiation', + verified: true, + activity: 38, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 14593 + }, + { + id: 1404, + name: 'Tasia Andreason', + country: { + name: 'Venezuela', + code: 've' + }, + company: 'Campbell, Robert A', + date: '2016-03-06', + status: 'renewal', + verified: true, + activity: 25, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 8750 + }, + { + id: 1405, + name: 'Hubert Walthall', + country: { + name: 'Mexico', + code: 'mx' + }, + company: 'Dee, Deanna', + date: '2020-12-19', + status: 'renewal', + verified: true, + activity: 32, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 39655 + }, + { + id: 1406, + name: 'Arthur Farrow', + country: { + name: 'Brazil', + code: 'br' + }, + company: 'Young, Timothy L Esq', + date: '2019-02-05', + status: 'negotiation', + verified: true, + activity: 55, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 71713 + }, + { + id: 1407, + name: 'Vilma Berlanga', + country: { + name: 'Tunisia', + code: 'tn' + }, + company: 'Wells, D Fred Esq', + date: '2016-02-09', + status: 'unqualified', + verified: false, + activity: 26, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 81056 + }, + { + id: 1408, + name: 'Billye Miro', + country: { + name: 'Hungary', + code: 'hu' + }, + company: 'Gray, Francine H Esq', + date: '2015-09-05', + status: 'new', + verified: true, + activity: 70, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 34220 + }, + { + id: 1409, + name: 'Glenna Slayton', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Toledo Iv Care', + date: '2016-03-10', + status: 'unqualified', + verified: true, + activity: 86, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 21459 + }, + { + id: 1410, + name: 'Mitzie Hudnall', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Cangro Transmission Co', + date: '2020-05-04', + status: 'new', + verified: true, + activity: 19, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 51281 + }, + { + id: 1411, + name: 'Bernardine Rodefer', + country: { + name: 'Switzerland', + code: 'ch' + }, + company: 'Sat Poly Inc', + date: '2020-10-19', + status: 'negotiation', + verified: true, + activity: 69, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 53841 + }, + { + id: 1412, + name: 'Staci Schmaltz', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Midwest Contracting \u0026 Mfg Inc', + date: '2018-03-14', + status: 'unqualified', + verified: true, + activity: 81, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 34878 + }, + { + id: 1413, + name: 'Nichelle Meteer', + country: { + name: 'Denmark', + code: 'dk' + }, + company: 'Print Doctor', + date: '2016-09-23', + status: 'renewal', + verified: true, + activity: 39, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 85399 + }, + { + id: 1414, + name: 'Janine Rhoden', + country: { + name: 'Nigeria', + code: 'ng' + }, + company: 'Nordic Group Inc', + date: '2018-08-13', + status: 'qualified', + verified: true, + activity: 95, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 29237 + }, + { + id: 1415, + name: 'Ettie Hoopengardner', + country: { + name: 'Switzerland', + code: 'ch' + }, + company: 'Jackson Millwork Co', + date: '2017-07-24', + status: 'renewal', + verified: false, + activity: 23, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 12179 + }, + { + id: 1416, + name: 'Eden Jayson', + country: { + name: 'Sweden', + code: 'se' + }, + company: 'Harris Corporation', + date: '2018-03-15', + status: 'renewal', + verified: true, + activity: 9, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 27840 + }, + { + id: 1417, + name: 'Lynelle Auber', + country: { + name: 'Netherlands', + code: 'nl' + }, + company: 'United Cerebral Palsy Of Ne Pa', + date: '2020-12-11', + status: 'negotiation', + verified: true, + activity: 0, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 51958 + }, + { + id: 1418, + name: 'Merissa Tomblin', + country: { + name: 'Jamaica', + code: 'jm' + }, + company: 'One Day Surgery Center Inc', + date: '2018-03-05', + status: 'new', + verified: true, + activity: 50, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 33138 + }, + { + id: 1419, + name: 'Golda Kaniecki', + country: { + name: 'Burkina Faso', + code: 'bf' + }, + company: 'Calaveras Prospect', + date: '2019-04-17', + status: 'negotiation', + verified: true, + activity: 91, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 82539 + }, + { + id: 1420, + name: 'Catarina Gleich', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'Terk, Robert E Esq', + date: '2017-01-26', + status: 'unqualified', + verified: true, + activity: 12, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 5619 + }, + { + id: 1421, + name: 'Virgie Kiel', + country: { + name: 'Latvia', + code: 'lv' + }, + company: 'Cullen, Terrence P Esq', + date: '2016-06-28', + status: 'renewal', + verified: true, + activity: 89, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 44763 + }, + { + id: 1422, + name: 'Jolene Ostolaza', + country: { + name: 'Puerto Rico', + code: 'pr' + }, + company: 'Central Die Casting Mfg Co Inc', + date: '2016-08-08', + status: 'negotiation', + verified: true, + activity: 85, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 97208 + }, + { + id: 1423, + name: 'Keneth Borgman', + country: { + name: 'Qatar', + code: 'qa' + }, + company: 'Centerline Engineering', + date: '2019-02-04', + status: 'unqualified', + verified: true, + activity: 41, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 93316 + }, + { + id: 1424, + name: 'Rikki Nayar', + country: { + name: 'Norway', + code: 'no' + }, + company: 'Targan \u0026 Kievit Pa', + date: '2017-03-06', + status: 'negotiation', + verified: true, + activity: 47, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 23786 + }, + { + id: 1425, + name: 'Elke Sengbusch', + country: { + name: 'Canada', + code: 'ca' + }, + company: 'Riley Riper Hollin \u0026 Colagreco', + date: '2019-05-28', + status: 'renewal', + verified: true, + activity: 76, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 98367 + }, + { + id: 1426, + name: 'Hoa Sarao', + country: { + name: 'Sweden', + code: 'se' + }, + company: 'Kaplan, Joel S Esq', + date: '2020-08-13', + status: 'negotiation', + verified: true, + activity: 0, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 68683 + }, + { + id: 1427, + name: 'Trinidad Mcrae', + country: { + name: 'Burkina Faso', + code: 'bf' + }, + company: 'Water Office', + date: '2020-12-26', + status: 'renewal', + verified: true, + activity: 76, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 85602 + }, + { + id: 1428, + name: 'Mari Lueckenbach', + country: { + name: 'Cuba', + code: 'cu' + }, + company: 'Westbrooks, Nelson E Jr', + date: '2017-10-27', + status: 'new', + verified: true, + activity: 34, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 14402 + }, + { + id: 1429, + name: 'Selma Husser', + country: { + name: 'Morocco', + code: 'ma' + }, + company: 'Armon Communications', + date: '2018-02-16', + status: 'negotiation', + verified: true, + activity: 84, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 81608 + }, + { + id: 1430, + name: 'Antione Onofrio', + country: { + name: 'Taiwan', + code: 'tw' + }, + company: 'Jacobs \u0026 Gerber Inc', + date: '2017-11-07', + status: 'negotiation', + verified: true, + activity: 37, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 15573 + }, + { + id: 1431, + name: 'Luisa Jurney', + country: { + name: 'Canada', + code: 'ca' + }, + company: 'Forest Fire Laboratory', + date: '2018-06-12', + status: 'unqualified', + verified: true, + activity: 96, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 50121 + }, + { + id: 1432, + name: 'Clorinda Heimann', + country: { + name: 'Israel', + code: 'il' + }, + company: 'Haughey, Charles Jr', + date: '2016-11-03', + status: 'negotiation', + verified: true, + activity: 63, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 93911 + }, + { + id: 1433, + name: 'Dick Wenzinger', + country: { + name: 'Mexico', + code: 'mx' + }, + company: 'Wheaton Plastic Products', + date: '2017-04-05', + status: 'negotiation', + verified: true, + activity: 92, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 66383 + }, + { + id: 1434, + name: 'Ahmed Angalich', + country: { + name: 'Australia', + code: 'au' + }, + company: 'Reese Plastics', + date: '2018-11-20', + status: 'unqualified', + verified: true, + activity: 83, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 89183 + }, + { + id: 1435, + name: 'Iluminada Ohms', + country: { + name: 'Croatia', + code: 'hr' + }, + company: 'Nazette Marner Good Wendt', + date: '2015-08-18', + status: 'negotiation', + verified: true, + activity: 66, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 9752 + }, + { + id: 1436, + name: 'Joanna Leinenbach', + country: { + name: 'Thailand', + code: 'th' + }, + company: 'Levinson Axelrod Wheaton', + date: '2016-02-11', + status: 'negotiation', + verified: true, + activity: 64, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 2623 + }, + { + id: 1437, + name: 'Caprice Suell', + country: { + name: 'Algeria', + code: 'dz' + }, + company: 'Egnor, W Dan Esq', + date: '2018-07-09', + status: 'unqualified', + verified: true, + activity: 99, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 87620 + }, + { + id: 1438, + name: 'Stephane Myricks', + country: { + name: 'Honduras', + code: 'hn' + }, + company: 'Portland Central Thriftlodge', + date: '2018-05-28', + status: 'renewal', + verified: true, + activity: 51, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 14625 + }, + { + id: 1439, + name: 'Quentin Swayze', + country: { + name: 'Tunisia', + code: 'tn' + }, + company: 'Ulbrich Trucking', + date: '2019-02-11', + status: 'negotiation', + verified: true, + activity: 37, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 39339 + }, + { + id: 1440, + name: 'Annmarie Castros', + country: { + name: 'Jamaica', + code: 'jm' + }, + company: 'Tipiak Inc', + date: '2015-08-24', + status: 'qualified', + verified: true, + activity: 46, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 77704 + }, + { + id: 1441, + name: 'Shonda Greenbush', + country: { + name: 'Costa Rica', + code: 'cr' + }, + company: 'Saint George Well Drilling', + date: '2018-06-01', + status: 'negotiation', + verified: true, + activity: 16, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 75326 + }, + { + id: 1442, + name: 'Cecil Lapage', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'Hawkes, Douglas D', + date: '2018-11-09', + status: 'qualified', + verified: true, + activity: 43, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 71364 + }, + { + id: 1443, + name: 'Jeanice Claucherty', + country: { + name: 'Lithuania', + code: 'lt' + }, + company: 'Accurel Systems Intrntl Corp', + date: '2016-06-02', + status: 'qualified', + verified: true, + activity: 48, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 73360 + }, + { + id: 1444, + name: 'Josphine Villanueva', + country: { + name: 'Japan', + code: 'jp' + }, + company: 'Santa Cruz Community Internet', + date: '2019-11-08', + status: 'unqualified', + verified: true, + activity: 39, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 59442 + }, + { + id: 1445, + name: 'Daniel Perruzza', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'Gersh \u0026 Danielson', + date: '2017-09-24', + status: 'renewal', + verified: true, + activity: 86, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 84338 + }, + { + id: 1446, + name: 'Cassi Wildfong', + country: { + name: 'Tunisia', + code: 'tn' + }, + company: 'Cobb, James O Esq', + date: '2015-09-08', + status: 'qualified', + verified: true, + activity: 85, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 72545 + }, + { + id: 1447, + name: 'Britt Galam', + country: { + name: 'Poland', + code: 'pl' + }, + company: 'Wheatley Trucking Company', + date: '2020-10-26', + status: 'new', + verified: true, + activity: 69, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 53307 + }, + { + id: 1448, + name: 'Adell Lipkin', + country: { + name: 'Saudi Arabia', + code: 'sa' + }, + company: 'Systems Graph Inc Ab Dick Dlr', + date: '2017-05-09', + status: 'unqualified', + verified: true, + activity: 92, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 12178 + }, + { + id: 1449, + name: 'Jacqueline Rowling', + country: { + name: 'Qatar', + code: 'qa' + }, + company: 'John Hancock Mutl Life Ins Co', + date: '2019-06-28', + status: 'negotiation', + verified: true, + activity: 79, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 35576 + }, + { + id: 1450, + name: 'Lonny Weglarz', + country: { + name: 'Chile', + code: 'cl' + }, + company: 'History Division Of State', + date: '2016-08-12', + status: 'new', + verified: true, + activity: 49, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 20507 + }, + { + id: 1451, + name: 'Lonna Diestel', + country: { + name: 'Philippines', + code: 'ph' + }, + company: 'Dimmock, Thomas J Esq', + date: '2017-02-10', + status: 'negotiation', + verified: true, + activity: 9, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 56415 + }, + { + id: 1452, + name: 'Cristal Samara', + country: { + name: 'Australia', + code: 'au' + }, + company: 'Intermed Inc', + date: '2016-08-17', + status: 'qualified', + verified: true, + activity: 99, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 33427 + }, + { + id: 1453, + name: 'Kenneth Grenet', + country: { + name: 'Croatia', + code: 'hr' + }, + company: 'Bank Of New York', + date: '2020-07-24', + status: 'negotiation', + verified: true, + activity: 78, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 44004 + }, + { + id: 1454, + name: 'Elli Mclaird', + country: { + name: 'Switzerland', + code: 'ch' + }, + company: 'Sportmaster Intrnatl', + date: '2017-06-10', + status: 'qualified', + verified: true, + activity: 61, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 37227 + }, + { + id: 1455, + name: 'Alline Jeanty', + country: { + name: 'Denmark', + code: 'dk' + }, + company: 'W W John Holden Inc', + date: '2015-12-08', + status: 'renewal', + verified: true, + activity: 74, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 44560 + }, + { + id: 1456, + name: 'Sharika Eanes', + country: { + name: 'Chile', + code: 'cl' + }, + company: 'Maccani \u0026 Delp', + date: '2018-08-16', + status: 'qualified', + verified: true, + activity: 14, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 50922 + }, + { + id: 1457, + name: 'Nu Mcnease', + country: { + name: 'Pakistan', + code: 'pk' + }, + company: 'Amazonia Film Project', + date: '2018-07-03', + status: 'negotiation', + verified: true, + activity: 47, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 61262 + }, + { + id: 1458, + name: 'Daniela Comnick', + country: { + name: 'Tunisia', + code: 'tn' + }, + company: 'Water \u0026 Sewer Department', + date: '2017-07-07', + status: 'negotiation', + verified: true, + activity: 31, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 13459 + }, + { + id: 1459, + name: 'Cecilia Colaizzo', + country: { + name: 'Costa Rica', + code: 'cr' + }, + company: 'Switchcraft Inc', + date: '2019-06-08', + status: 'negotiation', + verified: true, + activity: 21, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 52299 + }, + { + id: 1460, + name: 'Leslie Threets', + country: { + name: 'Sweden', + code: 'se' + }, + company: 'C W D C Metal Fabricators', + date: '2016-11-26', + status: 'unqualified', + verified: true, + activity: 50, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 61040 + }, + { + id: 1461, + name: 'Nan Koppinger', + country: { + name: 'Norway', + code: 'no' + }, + company: 'Shimotani, Grace T', + date: '2020-11-15', + status: 'negotiation', + verified: true, + activity: 94, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 91297 + }, + { + id: 1462, + name: 'Izetta Dewar', + country: { + name: 'Cuba', + code: 'cu' + }, + company: 'Lisatoni, Jean Esq', + date: '2019-11-22', + status: 'renewal', + verified: true, + activity: 41, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 39947 + }, + { + id: 1463, + name: 'Tegan Arceo', + country: { + name: 'Iceland', + code: 'is' + }, + company: 'Ceramic Tile Sales Inc', + date: '2016-08-07', + status: 'new', + verified: true, + activity: 79, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 78224 + }, + { + id: 1464, + name: 'Ruthann Keener', + country: { + name: 'Morocco', + code: 'ma' + }, + company: 'Maiden Craft Inc', + date: '2019-04-25', + status: 'negotiation', + verified: true, + activity: 43, + representative: { + name: 'Elwin Sharvill', + image: 'elwinsharvill.png' + }, + balance: 22727 + }, + { + id: 1465, + name: 'Joni Breland', + country: { + name: 'Uruguay', + code: 'uy' + }, + company: 'Carriage House Cllsn Rpr Inc', + date: '2018-07-20', + status: 'new', + verified: true, + activity: 18, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 70650 + }, + { + id: 1466, + name: 'Vi Rentfro', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'Video Workshop', + date: '2018-10-01', + status: 'negotiation', + verified: true, + activity: 99, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 45956 + }, + { + id: 1467, + name: 'Colette Kardas', + country: { + name: 'Honduras', + code: 'hn' + }, + company: 'Fresno Tile Center Inc', + date: '2017-08-22', + status: 'new', + verified: true, + activity: 14, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 72627 + }, + { + id: 1468, + name: 'Malcolm Tromblay', + country: { + name: 'Uruguay', + code: 'uy' + }, + company: 'Versatile Sash \u0026 Woodwork', + date: '2019-11-25', + status: 'renewal', + verified: true, + activity: 23, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 80176 + }, + { + id: 1469, + name: 'Ryan Harnos', + country: { + name: 'Paraguay', + code: 'py' + }, + company: 'Warner Electric Brk \u0026 Cltch Co', + date: '2019-02-12', + status: 'qualified', + verified: true, + activity: 71, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 97227 + }, + { + id: 1470, + name: 'Jess Chaffins', + country: { + name: 'Belarus', + code: 'by' + }, + company: 'New York Public Library', + date: '2017-02-12', + status: 'qualified', + verified: true, + activity: 91, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 63121 + }, + { + id: 1471, + name: 'Sharen Bourbon', + country: { + name: 'Saudi Arabia', + code: 'sa' + }, + company: 'Mccaleb, John A Esq', + date: '2017-06-13', + status: 'renewal', + verified: true, + activity: 35, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 44726 + }, + { + id: 1472, + name: 'Nickolas Juvera', + country: { + name: 'Finland', + code: 'fi' + }, + company: 'United Oil Co Inc', + date: '2019-01-06', + status: 'negotiation', + verified: true, + activity: 14, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 70748 + }, + { + id: 1473, + name: 'Gary Nunlee', + country: { + name: 'Turkey', + code: 'tr' + }, + company: 'Irving Foot Center', + date: '2015-07-22', + status: 'renewal', + verified: true, + activity: 72, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 71061 + }, + { + id: 1474, + name: 'Diane Devreese', + country: { + name: 'Bolivia', + code: 'bo' + }, + company: 'Acme Supply Co', + date: '2018-05-13', + status: 'renewal', + verified: true, + activity: 78, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 7486 + }, + { + id: 1475, + name: 'Roslyn Chavous', + country: { + name: 'Israel', + code: 'il' + }, + company: 'Mcrae, James L', + date: '2018-03-20', + status: 'negotiation', + verified: true, + activity: 45, + representative: { + name: 'Bernardo Dominic', + image: 'bernardodominic.png' + }, + balance: 58495 + }, + { + id: 1476, + name: 'Glory Schieler', + country: { + name: 'Italy', + code: 'it' + }, + company: 'Mcgraths Seafood', + date: '2017-05-13', + status: 'negotiation', + verified: true, + activity: 34, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 96252 + }, + { + id: 1477, + name: 'Rasheeda Sayaphon', + country: { + name: 'Latvia', + code: 'lv' + }, + company: 'Kummerer, J Michael Esq', + date: '2017-02-21', + status: 'negotiation', + verified: true, + activity: 12, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 71454 + }, + { + id: 1478, + name: 'Alpha Palaia', + country: { + name: 'Costa Rica', + code: 'cr' + }, + company: 'Stoffer, James M Jr', + date: '2017-07-21', + status: 'renewal', + verified: true, + activity: 4, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 81894 + }, + { + id: 1479, + name: 'Refugia Jacobos', + country: { + name: 'China', + code: 'cn' + }, + company: 'North Central Fl Sfty Cncl', + date: '2020-11-25', + status: 'negotiation', + verified: true, + activity: 18, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 31601 + }, + { + id: 1480, + name: 'Shawnda Yori', + country: { + name: 'Luxembourg', + code: 'lu' + }, + company: 'Fiorucci Foods Usa Inc', + date: '2018-05-09', + status: 'unqualified', + verified: true, + activity: 11, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 12090 + }, + { + id: 1481, + name: 'Mona Delasancha', + country: { + name: 'Hong Kong', + code: 'hk' + }, + company: 'Sign All', + date: '2017-10-06', + status: 'renewal', + verified: true, + activity: 61, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 24073 + }, + { + id: 1482, + name: 'Gilma Liukko', + country: { + name: 'Morocco', + code: 'ma' + }, + company: 'Sammys Steak Den', + date: '2018-10-06', + status: 'unqualified', + verified: true, + activity: 34, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 35129 + }, + { + id: 1483, + name: 'Janey Gabisi', + country: { + name: 'Israel', + code: 'il' + }, + company: 'Dobscha, Stephen F Esq', + date: '2019-05-22', + status: 'unqualified', + verified: true, + activity: 38, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 25518 + }, + { + id: 1484, + name: 'Lili Paskin', + country: { + name: 'Costa Rica', + code: 'cr' + }, + company: 'Morgan Custom Homes', + date: '2018-06-11', + status: 'unqualified', + verified: true, + activity: 69, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 7300 + }, + { + id: 1485, + name: 'Loren Asar', + country: { + name: 'Italy', + code: 'it' + }, + company: 'Olsen Payne \u0026 Company', + date: '2017-12-11', + status: 'unqualified', + verified: true, + activity: 16, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 82949 + }, + { + id: 1486, + name: 'Dorothy Chesterfield', + country: { + name: 'Spain', + code: 'es' + }, + company: 'Cowan \u0026 Kelly', + date: '2015-08-11', + status: 'renewal', + verified: true, + activity: 31, + representative: { + name: 'Anna Fali', + image: 'annafali.png' + }, + balance: 25044 + }, + { + id: 1487, + name: 'Gail Similton', + country: { + name: 'Malaysia', + code: 'my' + }, + company: 'Johnson, Wes Esq', + date: '2016-08-10', + status: 'qualified', + verified: true, + activity: 63, + representative: { + name: 'Xuxue Feng', + image: 'xuxuefeng.png' + }, + balance: 97553 + }, + { + id: 1488, + name: 'Catalina Tillotson', + country: { + name: 'Pakistan', + code: 'pk' + }, + company: 'Icn Pharmaceuticals Inc', + date: '2018-08-04', + status: 'negotiation', + verified: true, + activity: 13, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 38294 + }, + { + id: 1489, + name: 'Lawrence Lorens', + country: { + name: 'Egypt', + code: 'eg' + }, + company: 'New England Sec Equip Co Inc', + date: '2020-04-15', + status: 'negotiation', + verified: true, + activity: 82, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 56617 + }, + { + id: 1490, + name: 'Carlee Boulter', + country: { + name: 'Vietnam', + code: 'vn' + }, + company: 'Tippett, Troy M Ii', + date: '2016-09-22', + status: 'renewal', + verified: true, + activity: 71, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 76817 + }, + { + id: 1491, + name: 'Thaddeus Ankeny', + country: { + name: 'Qatar', + code: 'qa' + }, + company: 'Atc Contracting', + date: '2015-03-08', + status: 'unqualified', + verified: true, + activity: 78, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 80787 + }, + { + id: 1492, + name: 'Jovita Oles', + country: { + name: 'Sweden', + code: 'se' + }, + company: 'Pagano, Philip G Esq', + date: '2019-07-18', + status: 'negotiation', + verified: true, + activity: 42, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 4158 + }, + { + id: 1493, + name: 'Alesia Hixenbaugh', + country: { + name: 'Thailand', + code: 'th' + }, + company: 'Kwikprint', + date: '2017-07-24', + status: 'negotiation', + verified: false, + activity: 23, + representative: { + name: 'Ivan Magalhaes', + image: 'ivanmagalhaes.png' + }, + balance: 66993 + }, + { + id: 1494, + name: 'Lai Harabedian', + country: { + name: 'Serbia', + code: 'rs' + }, + company: 'Buergi \u0026 Madden Scale', + date: '2018-11-11', + status: 'new', + verified: true, + activity: 28, + representative: { + name: 'Asiya Javayant', + image: 'asiyajavayant.png' + }, + balance: 53330 + }, + { + id: 1495, + name: 'Brittni Gillaspie', + country: { + name: 'Senegal', + code: 'sn' + }, + company: 'Inner Label', + date: '2019-11-23', + status: 'renewal', + verified: true, + activity: 14, + representative: { + name: 'Ioni Bowcher', + image: 'ionibowcher.png' + }, + balance: 72342 + }, + { + id: 1496, + name: 'Raylene Kampa', + country: { + name: 'Belgium', + code: 'be' + }, + company: 'Hermar Inc', + date: '2020-04-22', + status: 'unqualified', + verified: true, + activity: 65, + representative: { + name: 'Stephen Shaw', + image: 'stephenshaw.png' + }, + balance: 53660 + }, + { + id: 1497, + name: 'Flo Bookamer', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'Simonton Howe \u0026 Schneider Pc', + date: '2020-08-10', + status: 'unqualified', + verified: true, + activity: 30, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 44528 + }, + { + id: 1498, + name: 'Jani Biddy', + country: { + name: 'Switzerland', + code: 'ch' + }, + company: 'Warehouse Office \u0026 Paper Prod', + date: '2019-11-07', + status: 'negotiation', + verified: false, + activity: 20, + representative: { + name: 'Onyama Limba', + image: 'onyamalimba.png' + }, + balance: 69613 + }, + { + id: 1499, + name: 'Chauncey Motley', + country: { + name: 'Argentina', + code: 'ar' + }, + company: 'Affiliated With Travelodge', + date: '2019-04-23', + status: 'renewal', + verified: true, + activity: 42, + representative: { + name: 'Amy Elsner', + image: 'amyelsner.png' + }, + balance: 88090 + } + ]; + } + + constructor(private http: HttpClient) {} + + getCustomersMini() { + return Promise.resolve(this.getData().slice(0, 5)); + } + + getCustomersSmall() { + return Promise.resolve(this.getData().slice(0, 10)); + } + + getCustomersMedium() { + return Promise.resolve(this.getData().slice(0, 50)); + } + + getCustomersLarge() { + return Promise.resolve(this.getData().slice(0, 200)); + } + + getCustomersXLarge() { + return Promise.resolve(this.getData()); + } + + getCustomers(params?: any) { + return this.http.get('https://www.primefaces.org/data/customers', { params: params }).toPromise(); + } +} diff --git a/src/app/pages/service/icon.service.ts b/src/app/pages/service/icon.service.ts new file mode 100644 index 0000000..0da429b --- /dev/null +++ b/src/app/pages/service/icon.service.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { map } from 'rxjs/operators'; + +@Injectable() +export class IconService { + constructor(private http: HttpClient) {} + + icons!: any[]; + + selectedIcon: any; + + apiUrl = 'assets/demo/data/icons.json'; + + getIcons() { + return this.http.get(this.apiUrl).pipe( + map((response: any) => { + this.icons = response.icons; + return this.icons; + }) + ); + } +} diff --git a/src/app/pages/service/node.service.ts b/src/app/pages/service/node.service.ts new file mode 100644 index 0000000..5146322 --- /dev/null +++ b/src/app/pages/service/node.service.ts @@ -0,0 +1,816 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { TreeNode } from 'primeng/api'; + +@Injectable() +export class NodeService { + getTreeNodesData() { + return [ + { + key: '0', + label: 'Documents', + data: 'Documents Folder', + icon: 'pi pi-fw pi-inbox', + children: [ + { + key: '0-0', + label: 'Work', + data: 'Work Folder', + icon: 'pi pi-fw pi-cog', + children: [ + { key: '0-0-0', label: 'Expenses.doc', icon: 'pi pi-fw pi-file', data: 'Expenses Document' }, + { key: '0-0-1', label: 'Resume.doc', icon: 'pi pi-fw pi-file', data: 'Resume Document' } + ] + }, + { + key: '0-1', + label: 'Home', + data: 'Home Folder', + icon: 'pi pi-fw pi-home', + children: [{ key: '0-1-0', label: 'Invoices.txt', icon: 'pi pi-fw pi-file', data: 'Invoices for this month' }] + } + ] + }, + { + key: '1', + label: 'Events', + data: 'Events Folder', + icon: 'pi pi-fw pi-calendar', + children: [ + { key: '1-0', label: 'Meeting', icon: 'pi pi-fw pi-calendar-plus', data: 'Meeting' }, + { key: '1-1', label: 'Product Launch', icon: 'pi pi-fw pi-calendar-plus', data: 'Product Launch' }, + { key: '1-2', label: 'Report Review', icon: 'pi pi-fw pi-calendar-plus', data: 'Report Review' } + ] + }, + { + key: '2', + label: 'Movies', + data: 'Movies Folder', + icon: 'pi pi-fw pi-star-fill', + children: [ + { + key: '2-0', + icon: 'pi pi-fw pi-star-fill', + label: 'Al Pacino', + data: 'Pacino Movies', + children: [ + { key: '2-0-0', label: 'Scarface', icon: 'pi pi-fw pi-video', data: 'Scarface Movie' }, + { key: '2-0-1', label: 'Serpico', icon: 'pi pi-fw pi-video', data: 'Serpico Movie' } + ] + }, + { + key: '2-1', + label: 'Robert De Niro', + icon: 'pi pi-fw pi-star-fill', + data: 'De Niro Movies', + children: [ + { key: '2-1-0', label: 'Goodfellas', icon: 'pi pi-fw pi-video', data: 'Goodfellas Movie' }, + { key: '2-1-1', label: 'Untouchables', icon: 'pi pi-fw pi-video', data: 'Untouchables Movie' } + ] + } + ] + } + ]; + } + + getTreeTableNodesData() { + return [ + { + key: '0', + data: { + name: 'Applications', + size: '100kb', + type: 'Folder' + }, + children: [ + { + key: '0-0', + data: { + name: 'Angular', + size: '25kb', + type: 'Folder' + }, + children: [ + { + key: '0-0-0', + data: { + name: 'angular.app', + size: '10kb', + type: 'Application' + } + }, + { + key: '0-0-1', + data: { + name: 'native.app', + size: '10kb', + type: 'Application' + } + }, + { + key: '0-0-2', + data: { + name: 'mobile.app', + size: '5kb', + type: 'Application' + } + } + ] + }, + { + key: '0-1', + data: { + name: 'editor.app', + size: '25kb', + type: 'Application' + } + }, + { + key: '0-2', + data: { + name: 'settings.app', + size: '50kb', + type: 'Application' + } + } + ] + }, + { + key: '1', + data: { + name: 'Cloud', + size: '20kb', + type: 'Folder' + }, + children: [ + { + key: '1-0', + data: { + name: 'backup-1.zip', + size: '10kb', + type: 'Zip' + } + }, + { + key: '1-1', + data: { + name: 'backup-2.zip', + size: '10kb', + type: 'Zip' + } + } + ] + }, + { + key: '2', + data: { + name: 'Desktop', + size: '150kb', + type: 'Folder' + }, + children: [ + { + key: '2-0', + data: { + name: 'note-meeting.txt', + size: '50kb', + type: 'Text' + } + }, + { + key: '2-1', + data: { + name: 'note-todo.txt', + size: '100kb', + type: 'Text' + } + } + ] + }, + { + key: '3', + data: { + name: 'Documents', + size: '75kb', + type: 'Folder' + }, + children: [ + { + key: '3-0', + data: { + name: 'Work', + size: '55kb', + type: 'Folder' + }, + children: [ + { + key: '3-0-0', + data: { + name: 'Expenses.doc', + size: '30kb', + type: 'Document' + } + }, + { + key: '3-0-1', + data: { + name: 'Resume.doc', + size: '25kb', + type: 'Resume' + } + } + ] + }, + { + key: '3-1', + data: { + name: 'Home', + size: '20kb', + type: 'Folder' + }, + children: [ + { + key: '3-1-0', + data: { + name: 'Invoices', + size: '20kb', + type: 'Text' + } + } + ] + } + ] + }, + { + key: '4', + data: { + name: 'Downloads', + size: '25kb', + type: 'Folder' + }, + children: [ + { + key: '4-0', + data: { + name: 'Spanish', + size: '10kb', + type: 'Folder' + }, + children: [ + { + key: '4-0-0', + data: { + name: 'tutorial-a1.txt', + size: '5kb', + type: 'Text' + } + }, + { + key: '4-0-1', + data: { + name: 'tutorial-a2.txt', + size: '5kb', + type: 'Text' + } + } + ] + }, + { + key: '4-1', + data: { + name: 'Travel', + size: '15kb', + type: 'Text' + }, + children: [ + { + key: '4-1-0', + data: { + name: 'Hotel.pdf', + size: '10kb', + type: 'PDF' + } + }, + { + key: '4-1-1', + data: { + name: 'Flight.pdf', + size: '5kb', + type: 'PDF' + } + } + ] + } + ] + }, + { + key: '5', + data: { + name: 'Main', + size: '50kb', + type: 'Folder' + }, + children: [ + { + key: '5-0', + data: { + name: 'bin', + size: '50kb', + type: 'Link' + } + }, + { + key: '5-1', + data: { + name: 'etc', + size: '100kb', + type: 'Link' + } + }, + { + key: '5-2', + data: { + name: 'var', + size: '100kb', + type: 'Link' + } + } + ] + }, + { + key: '6', + data: { + name: 'Other', + size: '5kb', + type: 'Folder' + }, + children: [ + { + key: '6-0', + data: { + name: 'todo.txt', + size: '3kb', + type: 'Text' + } + }, + { + key: '6-1', + data: { + name: 'logo.png', + size: '2kb', + type: 'Picture' + } + } + ] + }, + { + key: '7', + data: { + name: 'Pictures', + size: '150kb', + type: 'Folder' + }, + children: [ + { + key: '7-0', + data: { + name: 'barcelona.jpg', + size: '90kb', + type: 'Picture' + } + }, + { + key: '7-1', + data: { + name: 'primeng.png', + size: '30kb', + type: 'Picture' + } + }, + { + key: '7-2', + data: { + name: 'prime.jpg', + size: '30kb', + type: 'Picture' + } + } + ] + }, + { + key: '8', + data: { + name: 'Videos', + size: '1500kb', + type: 'Folder' + }, + children: [ + { + key: '8-0', + data: { + name: 'primefaces.mkv', + size: '1000kb', + type: 'Video' + } + }, + { + key: '8-1', + data: { + name: 'intro.avi', + size: '500kb', + type: 'Video' + } + } + ] + } + ]; + } + + getLazyNodesData() { + return [ + { + label: 'Lazy Node 0', + data: 'Node 0', + expandedIcon: 'pi pi-folder-open', + collapsedIcon: 'pi pi-folder', + leaf: false + }, + { + label: 'Lazy Node 1', + data: 'Node 1', + expandedIcon: 'pi pi-folder-open', + collapsedIcon: 'pi pi-folder', + leaf: false + }, + { + label: 'Lazy Node 1', + data: 'Node 2', + expandedIcon: 'pi pi-folder-open', + collapsedIcon: 'pi pi-folder', + leaf: false + } + ]; + } + + getFileSystemNodesData() { + return [ + { + data: { + name: 'Applications', + size: '200mb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'Angular', + size: '25mb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'angular.app', + size: '10mb', + type: 'Application' + } + }, + { + data: { + name: 'cli.app', + size: '10mb', + type: 'Application' + } + }, + { + data: { + name: 'mobile.app', + size: '5mb', + type: 'Application' + } + } + ] + }, + { + data: { + name: 'editor.app', + size: '25mb', + type: 'Application' + } + }, + { + data: { + name: 'settings.app', + size: '50mb', + type: 'Application' + } + } + ] + }, + { + data: { + name: 'Cloud', + size: '20mb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'backup-1.zip', + size: '10mb', + type: 'Zip' + } + }, + { + data: { + name: 'backup-2.zip', + size: '10mb', + type: 'Zip' + } + } + ] + }, + { + data: { + name: 'Desktop', + size: '150kb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'note-meeting.txt', + size: '50kb', + type: 'Text' + } + }, + { + data: { + name: 'note-todo.txt', + size: '100kb', + type: 'Text' + } + } + ] + }, + { + data: { + name: 'Documents', + size: '75kb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'Work', + size: '55kb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'Expenses.doc', + size: '30kb', + type: 'Document' + } + }, + { + data: { + name: 'Resume.doc', + size: '25kb', + type: 'Resume' + } + } + ] + }, + { + data: { + name: 'Home', + size: '20kb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'Invoices', + size: '20kb', + type: 'Text' + } + } + ] + } + ] + }, + { + data: { + name: 'Downloads', + size: '25mb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'Spanish', + size: '10mb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'tutorial-a1.txt', + size: '5mb', + type: 'Text' + } + }, + { + data: { + name: 'tutorial-a2.txt', + size: '5mb', + type: 'Text' + } + } + ] + }, + { + data: { + name: 'Travel', + size: '15mb', + type: 'Text' + }, + children: [ + { + data: { + name: 'Hotel.pdf', + size: '10mb', + type: 'PDF' + } + }, + { + data: { + name: 'Flight.pdf', + size: '5mb', + type: 'PDF' + } + } + ] + } + ] + }, + { + data: { + name: 'Main', + size: '50mb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'bin', + size: '50kb', + type: 'Link' + } + }, + { + data: { + name: 'etc', + size: '100kb', + type: 'Link' + } + }, + { + data: { + name: 'var', + size: '100kb', + type: 'Link' + } + } + ] + }, + { + data: { + name: 'Other', + size: '5mb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'todo.txt', + size: '3mb', + type: 'Text' + } + }, + { + data: { + name: 'logo.png', + size: '2mb', + type: 'Picture' + } + } + ] + }, + { + data: { + name: 'Pictures', + size: '150kb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'barcelona.jpg', + size: '90kb', + type: 'Picture' + } + }, + { + data: { + name: 'primeng.png', + size: '30kb', + type: 'Picture' + } + }, + { + data: { + name: 'prime.jpg', + size: '30kb', + type: 'Picture' + } + } + ] + }, + { + data: { + name: 'Videos', + size: '1500mb', + type: 'Folder' + }, + children: [ + { + data: { + name: 'primefaces.mkv', + size: '1000mb', + type: 'Video' + } + }, + { + data: { + name: 'intro.avi', + size: '500mb', + type: 'Video' + } + } + ] + } + ]; + } + + getDynamicTreeNodes(parentCount: number, childrenCount: number): TreeNode[] { + const nodes: TreeNode[] = []; + + for (let parentIndex = 0; parentIndex < parentCount; parentIndex++) { + const children: TreeNode[] = []; + + for (let childIndex = 0; childIndex < childrenCount; childIndex++) { + children.push({ + key: `${parentIndex}-${childIndex}`, + label: `Child ${parentIndex}-${childIndex}`, + selectable: true + }); + } + + nodes.push({ + key: parentIndex.toString(), + label: `Parent ${parentIndex}`, + selectable: true, + children: children + }); + } + + return nodes; + } + + getLargeTreeNodes() { + return Promise.resolve(this.getDynamicTreeNodes(10, 100)); + } + + getTreeTableNodes() { + return Promise.resolve(this.getTreeTableNodesData()); + } + + getTreeNodes() { + return Promise.resolve(this.getTreeNodesData()); + } + + getFiles() { + return Promise.resolve(this.getTreeNodesData()); + } + + getLazyFiles() { + return Promise.resolve(this.getLazyNodesData()); + } + + getFilesystem() { + return Promise.resolve(this.getFileSystemNodesData()); + } +} diff --git a/src/app/pages/service/photo.service.ts b/src/app/pages/service/photo.service.ts new file mode 100644 index 0000000..4620abd --- /dev/null +++ b/src/app/pages/service/photo.service.ts @@ -0,0 +1,103 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class PhotoService { + getData() { + return [ + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria1.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria1s.jpg', + alt: 'Description for Image 1', + title: 'Title 1' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria2.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria2s.jpg', + alt: 'Description for Image 2', + title: 'Title 2' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria3.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria3s.jpg', + alt: 'Description for Image 3', + title: 'Title 3' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria4.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria4s.jpg', + alt: 'Description for Image 4', + title: 'Title 4' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria5.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria5s.jpg', + alt: 'Description for Image 5', + title: 'Title 5' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria6.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria6s.jpg', + alt: 'Description for Image 6', + title: 'Title 6' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria7.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria7s.jpg', + alt: 'Description for Image 7', + title: 'Title 7' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria8.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria8s.jpg', + alt: 'Description for Image 8', + title: 'Title 8' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria9.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria9s.jpg', + alt: 'Description for Image 9', + title: 'Title 9' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria10.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria10s.jpg', + alt: 'Description for Image 10', + title: 'Title 10' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria11.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria11s.jpg', + alt: 'Description for Image 11', + title: 'Title 11' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria12.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria12s.jpg', + alt: 'Description for Image 12', + title: 'Title 12' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria13.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria13s.jpg', + alt: 'Description for Image 13', + title: 'Title 13' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria14.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria14s.jpg', + alt: 'Description for Image 14', + title: 'Title 14' + }, + { + itemImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria15.jpg', + thumbnailImageSrc: 'https://primefaces.org/cdn/primeng/images/galleria/galleria15s.jpg', + alt: 'Description for Image 15', + title: 'Title 15' + } + ]; + } + + getImages() { + return Promise.resolve(this.getData()); + } +} diff --git a/src/app/pages/service/product.service.ts b/src/app/pages/service/product.service.ts new file mode 100644 index 0000000..a20dcb5 --- /dev/null +++ b/src/app/pages/service/product.service.ts @@ -0,0 +1,1322 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; + +interface InventoryStatus { + label: string; + value: string; +} + +export interface Property { + id?: string; + code?: string; + name?: string; + description?: string; + price?: number; + quantity?: number; + inventoryStatus?: string; + category?: string; + image?: string; + rating?: number; +} + +@Injectable() +export class ProductService { + getProductsData() { + return [ + { + id: '1000', + code: 'f230fh0g3', + name: 'Bamboo Watch', + description: 'Product Description', + image: 'bamboo-watch.jpg', + price: 65, + category: 'Accessories', + quantity: 24, + inventoryStatus: 'INSTOCK', + rating: 5 + }, + { + id: '1001', + code: 'nvklal433', + name: 'Black Watch', + description: 'Product Description', + image: 'black-watch.jpg', + price: 72, + category: 'Accessories', + quantity: 61, + inventoryStatus: 'INSTOCK', + rating: 4 + }, + { + id: '1002', + code: 'zz21cz3c1', + name: 'Blue Band', + description: 'Product Description', + image: 'blue-band.jpg', + price: 79, + category: 'Fitness', + quantity: 2, + inventoryStatus: 'LOWSTOCK', + rating: 3 + }, + { + id: '1003', + code: '244wgerg2', + name: 'Blue T-Shirt', + description: 'Product Description', + image: 'blue-t-shirt.jpg', + price: 29, + category: 'Clothing', + quantity: 25, + inventoryStatus: 'INSTOCK', + rating: 5 + }, + { + id: '1004', + code: 'h456wer53', + name: 'Bracelet', + description: 'Product Description', + image: 'bracelet.jpg', + price: 15, + category: 'Accessories', + quantity: 73, + inventoryStatus: 'INSTOCK', + rating: 4 + }, + { + id: '1005', + code: 'av2231fwg', + name: 'Brown Purse', + description: 'Product Description', + image: 'brown-purse.jpg', + price: 120, + category: 'Accessories', + quantity: 0, + inventoryStatus: 'OUTOFSTOCK', + rating: 4 + }, + { + id: '1006', + code: 'bib36pfvm', + name: 'Chakra Bracelet', + description: 'Product Description', + image: 'chakra-bracelet.jpg', + price: 32, + category: 'Accessories', + quantity: 5, + inventoryStatus: 'LOWSTOCK', + rating: 3 + }, + { + id: '1007', + code: 'mbvjkgip5', + name: 'Galaxy Earrings', + description: 'Product Description', + image: 'galaxy-earrings.jpg', + price: 34, + category: 'Accessories', + quantity: 23, + inventoryStatus: 'INSTOCK', + rating: 5 + }, + { + id: '1008', + code: 'vbb124btr', + name: 'Game Controller', + description: 'Product Description', + image: 'game-controller.jpg', + price: 99, + category: 'Electronics', + quantity: 2, + inventoryStatus: 'LOWSTOCK', + rating: 4 + }, + { + id: '1009', + code: 'cm230f032', + name: 'Gaming Set', + description: 'Product Description', + image: 'gaming-set.jpg', + price: 299, + category: 'Electronics', + quantity: 63, + inventoryStatus: 'INSTOCK', + rating: 3 + }, + { + id: '1010', + code: 'plb34234v', + name: 'Gold Phone Case', + description: 'Product Description', + image: 'gold-phone-case.jpg', + price: 24, + category: 'Accessories', + quantity: 0, + inventoryStatus: 'OUTOFSTOCK', + rating: 4 + }, + { + id: '1011', + code: '4920nnc2d', + name: 'Green Earbuds', + description: 'Product Description', + image: 'green-earbuds.jpg', + price: 89, + category: 'Electronics', + quantity: 23, + inventoryStatus: 'INSTOCK', + rating: 4 + }, + { + id: '1012', + code: '250vm23cc', + name: 'Green T-Shirt', + description: 'Product Description', + image: 'green-t-shirt.jpg', + price: 49, + category: 'Clothing', + quantity: 74, + inventoryStatus: 'INSTOCK', + rating: 5 + }, + { + id: '1013', + code: 'fldsmn31b', + name: 'Grey T-Shirt', + description: 'Product Description', + image: 'grey-t-shirt.jpg', + price: 48, + category: 'Clothing', + quantity: 0, + inventoryStatus: 'OUTOFSTOCK', + rating: 3 + }, + { + id: '1014', + code: 'waas1x2as', + name: 'Headphones', + description: 'Product Description', + image: 'headphones.jpg', + price: 175, + category: 'Electronics', + quantity: 8, + inventoryStatus: 'LOWSTOCK', + rating: 5 + }, + { + id: '1015', + code: 'vb34btbg5', + name: 'Light Green T-Shirt', + description: 'Product Description', + image: 'light-green-t-shirt.jpg', + price: 49, + category: 'Clothing', + quantity: 34, + inventoryStatus: 'INSTOCK', + rating: 4 + }, + { + id: '1016', + code: 'k8l6j58jl', + name: 'Lime Band', + description: 'Product Description', + image: 'lime-band.jpg', + price: 79, + category: 'Fitness', + quantity: 12, + inventoryStatus: 'INSTOCK', + rating: 3 + }, + { + id: '1017', + code: 'v435nn85n', + name: 'Mini Speakers', + description: 'Product Description', + image: 'mini-speakers.jpg', + price: 85, + category: 'Clothing', + quantity: 42, + inventoryStatus: 'INSTOCK', + rating: 4 + }, + { + id: '1018', + code: '09zx9c0zc', + name: 'Painted Phone Case', + description: 'Product Description', + image: 'painted-phone-case.jpg', + price: 56, + category: 'Accessories', + quantity: 41, + inventoryStatus: 'INSTOCK', + rating: 5 + }, + { + id: '1019', + code: 'mnb5mb2m5', + name: 'Pink Band', + description: 'Product Description', + image: 'pink-band.jpg', + price: 79, + category: 'Fitness', + quantity: 63, + inventoryStatus: 'INSTOCK', + rating: 4 + }, + { + id: '1020', + code: 'r23fwf2w3', + name: 'Pink Purse', + description: 'Product Description', + image: 'pink-purse.jpg', + price: 110, + category: 'Accessories', + quantity: 0, + inventoryStatus: 'OUTOFSTOCK', + rating: 4 + }, + { + id: '1021', + code: 'pxpzczo23', + name: 'Purple Band', + description: 'Product Description', + image: 'purple-band.jpg', + price: 79, + category: 'Fitness', + quantity: 6, + inventoryStatus: 'LOWSTOCK', + rating: 3 + }, + { + id: '1022', + code: '2c42cb5cb', + name: 'Purple Gemstone Necklace', + description: 'Product Description', + image: 'purple-gemstone-necklace.jpg', + price: 45, + category: 'Accessories', + quantity: 62, + inventoryStatus: 'INSTOCK', + rating: 4 + }, + { + id: '1023', + code: '5k43kkk23', + name: 'Purple T-Shirt', + description: 'Product Description', + image: 'purple-t-shirt.jpg', + price: 49, + category: 'Clothing', + quantity: 2, + inventoryStatus: 'LOWSTOCK', + rating: 5 + }, + { + id: '1024', + code: 'lm2tny2k4', + name: 'Shoes', + description: 'Product Description', + image: 'shoes.jpg', + price: 64, + category: 'Clothing', + quantity: 0, + inventoryStatus: 'INSTOCK', + rating: 4 + }, + { + id: '1025', + code: 'nbm5mv45n', + name: 'Sneakers', + description: 'Product Description', + image: 'sneakers.jpg', + price: 78, + category: 'Clothing', + quantity: 52, + inventoryStatus: 'INSTOCK', + rating: 4 + }, + { + id: '1026', + code: 'zx23zc42c', + name: 'Teal T-Shirt', + description: 'Product Description', + image: 'teal-t-shirt.jpg', + price: 49, + category: 'Clothing', + quantity: 3, + inventoryStatus: 'LOWSTOCK', + rating: 3 + }, + { + id: '1027', + code: 'acvx872gc', + name: 'Yellow Earbuds', + description: 'Product Description', + image: 'yellow-earbuds.jpg', + price: 89, + category: 'Electronics', + quantity: 35, + inventoryStatus: 'INSTOCK', + rating: 3 + }, + { + id: '1028', + code: 'tx125ck42', + name: 'Yoga Mat', + description: 'Product Description', + image: 'yoga-mat.jpg', + price: 20, + category: 'Fitness', + quantity: 15, + inventoryStatus: 'INSTOCK', + rating: 5 + }, + { + id: '1029', + code: 'gwuby345v', + name: 'Yoga Set', + description: 'Product Description', + image: 'yoga-set.jpg', + price: 20, + category: 'Fitness', + quantity: 25, + inventoryStatus: 'INSTOCK', + rating: 8 + } + ]; + } + + getProductsWithOrdersData() { + return [ + { + id: '1000', + code: 'f230fh0g3', + name: 'Bamboo Watch', + description: 'Product Description', + image: 'bamboo-watch.jpg', + price: 65, + category: 'Accessories', + quantity: 24, + inventoryStatus: 'INSTOCK', + rating: 5, + orders: [ + { + id: '1000-0', + productCode: 'f230fh0g3', + date: '2020-09-13', + amount: 65, + quantity: 1, + customer: 'David James', + status: 'PENDING' + }, + { + id: '1000-1', + productCode: 'f230fh0g3', + date: '2020-05-14', + amount: 130, + quantity: 2, + customer: 'Leon Rodrigues', + status: 'DELIVERED' + }, + { + id: '1000-2', + productCode: 'f230fh0g3', + date: '2019-01-04', + amount: 65, + quantity: 1, + customer: 'Juan Alejandro', + status: 'RETURNED' + }, + { + id: '1000-3', + productCode: 'f230fh0g3', + date: '2020-09-13', + amount: 195, + quantity: 3, + customer: 'Claire Morrow', + status: 'CANCELLED' + } + ] + }, + { + id: '1001', + code: 'nvklal433', + name: 'Black Watch', + description: 'Product Description', + image: 'black-watch.jpg', + price: 72, + category: 'Accessories', + quantity: 61, + inventoryStatus: 'INSTOCK', + rating: 4, + orders: [ + { + id: '1001-0', + productCode: 'nvklal433', + date: '2020-05-14', + amount: 72, + quantity: 1, + customer: 'Maisha Jefferson', + status: 'DELIVERED' + }, + { + id: '1001-1', + productCode: 'nvklal433', + date: '2020-02-28', + amount: 144, + quantity: 2, + customer: 'Octavia Murillo', + status: 'PENDING' + } + ] + }, + { + id: '1002', + code: 'zz21cz3c1', + name: 'Blue Band', + description: 'Product Description', + image: 'blue-band.jpg', + price: 79, + category: 'Fitness', + quantity: 2, + inventoryStatus: 'LOWSTOCK', + rating: 3, + orders: [ + { + id: '1002-0', + productCode: 'zz21cz3c1', + date: '2020-07-05', + amount: 79, + quantity: 1, + customer: 'Stacey Leja', + status: 'DELIVERED' + }, + { + id: '1002-1', + productCode: 'zz21cz3c1', + date: '2020-02-06', + amount: 79, + quantity: 1, + customer: 'Ashley Wickens', + status: 'DELIVERED' + } + ] + }, + { + id: '1003', + code: '244wgerg2', + name: 'Blue T-Shirt', + description: 'Product Description', + image: 'blue-t-shirt.jpg', + price: 29, + category: 'Clothing', + quantity: 25, + inventoryStatus: 'INSTOCK', + rating: 5, + orders: [] + }, + { + id: '1004', + code: 'h456wer53', + name: 'Bracelet', + description: 'Product Description', + image: 'bracelet.jpg', + price: 15, + category: 'Accessories', + quantity: 73, + inventoryStatus: 'INSTOCK', + rating: 4, + orders: [ + { + id: '1004-0', + productCode: 'h456wer53', + date: '2020-09-05', + amount: 60, + quantity: 4, + customer: 'Mayumi Misaki', + status: 'PENDING' + }, + { + id: '1004-1', + productCode: 'h456wer53', + date: '2019-04-16', + amount: 2, + quantity: 30, + customer: 'Francesco Salvatore', + status: 'DELIVERED' + } + ] + }, + { + id: '1005', + code: 'av2231fwg', + name: 'Brown Purse', + description: 'Product Description', + image: 'brown-purse.jpg', + price: 120, + category: 'Accessories', + quantity: 0, + inventoryStatus: 'OUTOFSTOCK', + rating: 4, + orders: [ + { + id: '1005-0', + productCode: 'av2231fwg', + date: '2020-01-25', + amount: 120, + quantity: 1, + customer: 'Isabel Sinclair', + status: 'RETURNED' + }, + { + id: '1005-1', + productCode: 'av2231fwg', + date: '2019-03-12', + amount: 240, + quantity: 2, + customer: 'Lionel Clifford', + status: 'DELIVERED' + }, + { + id: '1005-2', + productCode: 'av2231fwg', + date: '2019-05-05', + amount: 120, + quantity: 1, + customer: 'Cody Chavez', + status: 'DELIVERED' + } + ] + }, + { + id: '1006', + code: 'bib36pfvm', + name: 'Chakra Bracelet', + description: 'Product Description', + image: 'chakra-bracelet.jpg', + price: 32, + category: 'Accessories', + quantity: 5, + inventoryStatus: 'LOWSTOCK', + rating: 3, + orders: [ + { + id: '1006-0', + productCode: 'bib36pfvm', + date: '2020-02-24', + amount: 32, + quantity: 1, + customer: 'Arvin Darci', + status: 'DELIVERED' + }, + { + id: '1006-1', + productCode: 'bib36pfvm', + date: '2020-01-14', + amount: 64, + quantity: 2, + customer: 'Izzy Jones', + status: 'PENDING' + } + ] + }, + { + id: '1007', + code: 'mbvjkgip5', + name: 'Galaxy Earrings', + description: 'Product Description', + image: 'galaxy-earrings.jpg', + price: 34, + category: 'Accessories', + quantity: 23, + inventoryStatus: 'INSTOCK', + rating: 5, + orders: [ + { + id: '1007-0', + productCode: 'mbvjkgip5', + date: '2020-06-19', + amount: 34, + quantity: 1, + customer: 'Jennifer Smith', + status: 'DELIVERED' + } + ] + }, + { + id: '1008', + code: 'vbb124btr', + name: 'Game Controller', + description: 'Product Description', + image: 'game-controller.jpg', + price: 99, + category: 'Electronics', + quantity: 2, + inventoryStatus: 'LOWSTOCK', + rating: 4, + orders: [ + { + id: '1008-0', + productCode: 'vbb124btr', + date: '2020-01-05', + amount: 99, + quantity: 1, + customer: 'Jeanfrancois David', + status: 'DELIVERED' + }, + { + id: '1008-1', + productCode: 'vbb124btr', + date: '2020-01-19', + amount: 198, + quantity: 2, + customer: 'Ivar Greenwood', + status: 'RETURNED' + } + ] + }, + { + id: '1009', + code: 'cm230f032', + name: 'Gaming Set', + description: 'Product Description', + image: 'gaming-set.jpg', + price: 299, + category: 'Electronics', + quantity: 63, + inventoryStatus: 'INSTOCK', + rating: 3, + orders: [ + { + id: '1009-0', + productCode: 'cm230f032', + date: '2020-06-24', + amount: 299, + quantity: 1, + customer: 'Kadeem Mujtaba', + status: 'PENDING' + }, + { + id: '1009-1', + productCode: 'cm230f032', + date: '2020-05-11', + amount: 299, + quantity: 1, + customer: 'Ashley Wickens', + status: 'DELIVERED' + }, + { + id: '1009-2', + productCode: 'cm230f032', + date: '2019-02-07', + amount: 299, + quantity: 1, + customer: 'Julie Johnson', + status: 'DELIVERED' + }, + { + id: '1009-3', + productCode: 'cm230f032', + date: '2020-04-26', + amount: 299, + quantity: 1, + customer: 'Tony Costa', + status: 'CANCELLED' + } + ] + }, + { + id: '1010', + code: 'plb34234v', + name: 'Gold Phone Case', + description: 'Product Description', + image: 'gold-phone-case.jpg', + price: 24, + category: 'Accessories', + quantity: 0, + inventoryStatus: 'OUTOFSTOCK', + rating: 4, + orders: [ + { + id: '1010-0', + productCode: 'plb34234v', + date: '2020-02-04', + amount: 24, + quantity: 1, + customer: 'James Butt', + status: 'DELIVERED' + }, + { + id: '1010-1', + productCode: 'plb34234v', + date: '2020-05-05', + amount: 48, + quantity: 2, + customer: 'Josephine Darakjy', + status: 'DELIVERED' + } + ] + }, + { + id: '1011', + code: '4920nnc2d', + name: 'Green Earbuds', + description: 'Product Description', + image: 'green-earbuds.jpg', + price: 89, + category: 'Electronics', + quantity: 23, + inventoryStatus: 'INSTOCK', + rating: 4, + orders: [ + { + id: '1011-0', + productCode: '4920nnc2d', + date: '2020-06-01', + amount: 89, + quantity: 1, + customer: 'Art Venere', + status: 'DELIVERED' + } + ] + }, + { + id: '1012', + code: '250vm23cc', + name: 'Green T-Shirt', + description: 'Product Description', + image: 'green-t-shirt.jpg', + price: 49, + category: 'Clothing', + quantity: 74, + inventoryStatus: 'INSTOCK', + rating: 5, + orders: [ + { + id: '1012-0', + productCode: '250vm23cc', + date: '2020-02-05', + amount: 49, + quantity: 1, + customer: 'Lenna Paprocki', + status: 'DELIVERED' + }, + { + id: '1012-1', + productCode: '250vm23cc', + date: '2020-02-15', + amount: 49, + quantity: 1, + customer: 'Donette Foller', + status: 'PENDING' + } + ] + }, + { + id: '1013', + code: 'fldsmn31b', + name: 'Grey T-Shirt', + description: 'Product Description', + image: 'grey-t-shirt.jpg', + price: 48, + category: 'Clothing', + quantity: 0, + inventoryStatus: 'OUTOFSTOCK', + rating: 3, + orders: [ + { + id: '1013-0', + productCode: 'fldsmn31b', + date: '2020-04-01', + amount: 48, + quantity: 1, + customer: 'Simona Morasca', + status: 'DELIVERED' + } + ] + }, + { + id: '1014', + code: 'waas1x2as', + name: 'Headphones', + description: 'Product Description', + image: 'headphones.jpg', + price: 175, + category: 'Electronics', + quantity: 8, + inventoryStatus: 'LOWSTOCK', + rating: 5, + orders: [ + { + id: '1014-0', + productCode: 'waas1x2as', + date: '2020-05-15', + amount: 175, + quantity: 1, + customer: 'Lenna Paprocki', + status: 'DELIVERED' + }, + { + id: '1014-1', + productCode: 'waas1x2as', + date: '2020-01-02', + amount: 175, + quantity: 1, + customer: 'Donette Foller', + status: 'CANCELLED' + } + ] + }, + { + id: '1015', + code: 'vb34btbg5', + name: 'Light Green T-Shirt', + description: 'Product Description', + image: 'light-green-t-shirt.jpg', + price: 49, + category: 'Clothing', + quantity: 34, + inventoryStatus: 'INSTOCK', + rating: 4, + orders: [ + { + id: '1015-0', + productCode: 'vb34btbg5', + date: '2020-07-02', + amount: 98, + quantity: 2, + customer: 'Mitsue Tollner', + status: 'DELIVERED' + } + ] + }, + { + id: '1016', + code: 'k8l6j58jl', + name: 'Lime Band', + description: 'Product Description', + image: 'lime-band.jpg', + price: 79, + category: 'Fitness', + quantity: 12, + inventoryStatus: 'INSTOCK', + rating: 3, + orders: [] + }, + { + id: '1017', + code: 'v435nn85n', + name: 'Mini Speakers', + description: 'Product Description', + image: 'mini-speakers.jpg', + price: 85, + category: 'Clothing', + quantity: 42, + inventoryStatus: 'INSTOCK', + rating: 4, + orders: [ + { + id: '1017-0', + productCode: 'v435nn85n', + date: '2020-07-12', + amount: 85, + quantity: 1, + customer: 'Minna Amigon', + status: 'DELIVERED' + } + ] + }, + { + id: '1018', + code: '09zx9c0zc', + name: 'Painted Phone Case', + description: 'Product Description', + image: 'painted-phone-case.jpg', + price: 56, + category: 'Accessories', + quantity: 41, + inventoryStatus: 'INSTOCK', + rating: 5, + orders: [ + { + id: '1018-0', + productCode: '09zx9c0zc', + date: '2020-07-01', + amount: 56, + quantity: 1, + customer: 'Abel Maclead', + status: 'DELIVERED' + }, + { + id: '1018-1', + productCode: '09zx9c0zc', + date: '2020-05-02', + amount: 56, + quantity: 1, + customer: 'Minna Amigon', + status: 'RETURNED' + } + ] + }, + { + id: '1019', + code: 'mnb5mb2m5', + name: 'Pink Band', + description: 'Product Description', + image: 'pink-band.jpg', + price: 79, + category: 'Fitness', + quantity: 63, + inventoryStatus: 'INSTOCK', + rating: 4, + orders: [] + }, + { + id: '1020', + code: 'r23fwf2w3', + name: 'Pink Purse', + description: 'Product Description', + image: 'pink-purse.jpg', + price: 110, + category: 'Accessories', + quantity: 0, + inventoryStatus: 'OUTOFSTOCK', + rating: 4, + orders: [ + { + id: '1020-0', + productCode: 'r23fwf2w3', + date: '2020-05-29', + amount: 110, + quantity: 1, + customer: 'Kiley Caldarera', + status: 'DELIVERED' + }, + { + id: '1020-1', + productCode: 'r23fwf2w3', + date: '2020-02-11', + amount: 220, + quantity: 2, + customer: 'Graciela Ruta', + status: 'DELIVERED' + } + ] + }, + { + id: '1021', + code: 'pxpzczo23', + name: 'Purple Band', + description: 'Product Description', + image: 'purple-band.jpg', + price: 79, + category: 'Fitness', + quantity: 6, + inventoryStatus: 'LOWSTOCK', + rating: 3, + orders: [ + { + id: '1021-0', + productCode: 'pxpzczo23', + date: '2020-02-02', + amount: 79, + quantity: 1, + customer: 'Cammy Albares', + status: 'DELIVERED' + } + ] + }, + { + id: '1022', + code: '2c42cb5cb', + name: 'Purple Gemstone Necklace', + description: 'Product Description', + image: 'purple-gemstone-necklace.jpg', + price: 45, + category: 'Accessories', + quantity: 62, + inventoryStatus: 'INSTOCK', + rating: 4, + orders: [ + { + id: '1022-0', + productCode: '2c42cb5cb', + date: '2020-06-29', + amount: 45, + quantity: 1, + customer: 'Mattie Poquette', + status: 'DELIVERED' + }, + { + id: '1022-1', + productCode: '2c42cb5cb', + date: '2020-02-11', + amount: 135, + quantity: 3, + customer: 'Meaghan Garufi', + status: 'DELIVERED' + } + ] + }, + { + id: '1023', + code: '5k43kkk23', + name: 'Purple T-Shirt', + description: 'Product Description', + image: 'purple-t-shirt.jpg', + price: 49, + category: 'Clothing', + quantity: 2, + inventoryStatus: 'LOWSTOCK', + rating: 5, + orders: [ + { + id: '1023-0', + productCode: '5k43kkk23', + date: '2020-04-15', + amount: 49, + quantity: 1, + customer: 'Gladys Rim', + status: 'RETURNED' + } + ] + }, + { + id: '1024', + code: 'lm2tny2k4', + name: 'Shoes', + description: 'Product Description', + image: 'shoes.jpg', + price: 64, + category: 'Clothing', + quantity: 0, + inventoryStatus: 'INSTOCK', + rating: 4, + orders: [] + }, + { + id: '1025', + code: 'nbm5mv45n', + name: 'Sneakers', + description: 'Product Description', + image: 'sneakers.jpg', + price: 78, + category: 'Clothing', + quantity: 52, + inventoryStatus: 'INSTOCK', + rating: 4, + orders: [ + { + id: '1025-0', + productCode: 'nbm5mv45n', + date: '2020-02-19', + amount: 78, + quantity: 1, + customer: 'Yuki Whobrey', + status: 'DELIVERED' + }, + { + id: '1025-1', + productCode: 'nbm5mv45n', + date: '2020-05-21', + amount: 78, + quantity: 1, + customer: 'Fletcher Flosi', + status: 'PENDING' + } + ] + }, + { + id: '1026', + code: 'zx23zc42c', + name: 'Teal T-Shirt', + description: 'Product Description', + image: 'teal-t-shirt.jpg', + price: 49, + category: 'Clothing', + quantity: 3, + inventoryStatus: 'LOWSTOCK', + rating: 3, + orders: [ + { + id: '1026-0', + productCode: 'zx23zc42c', + date: '2020-04-24', + amount: 98, + quantity: 2, + customer: 'Bette Nicka', + status: 'DELIVERED' + } + ] + }, + { + id: '1027', + code: 'acvx872gc', + name: 'Yellow Earbuds', + description: 'Product Description', + image: 'yellow-earbuds.jpg', + price: 89, + category: 'Electronics', + quantity: 35, + inventoryStatus: 'INSTOCK', + rating: 3, + orders: [ + { + id: '1027-0', + productCode: 'acvx872gc', + date: '2020-01-29', + amount: 89, + quantity: 1, + customer: 'Veronika Inouye', + status: 'DELIVERED' + }, + { + id: '1027-1', + productCode: 'acvx872gc', + date: '2020-06-11', + amount: 89, + quantity: 1, + customer: 'Willard Kolmetz', + status: 'DELIVERED' + } + ] + }, + { + id: '1028', + code: 'tx125ck42', + name: 'Yoga Mat', + description: 'Product Description', + image: 'yoga-mat.jpg', + price: 20, + category: 'Fitness', + quantity: 15, + inventoryStatus: 'INSTOCK', + rating: 5, + orders: [] + }, + { + id: '1029', + code: 'gwuby345v', + name: 'Yoga Set', + description: 'Product Description', + image: 'yoga-set.jpg', + price: 20, + category: 'Fitness', + quantity: 25, + inventoryStatus: 'INSTOCK', + rating: 8, + orders: [ + { + id: '1029-0', + productCode: 'gwuby345v', + date: '2020-02-14', + amount: 4, + quantity: 80, + customer: 'Maryann Royster', + status: 'DELIVERED' + } + ] + } + ]; + } + + status: string[] = ['OUTOFSTOCK', 'INSTOCK', 'LOWSTOCK']; + + productNames: string[] = [ + 'Bamboo Watch', + 'Black Watch', + 'Blue Band', + 'Blue T-Shirt', + 'Bracelet', + 'Brown Purse', + 'Chakra Bracelet', + 'Galaxy Earrings', + 'Game Controller', + 'Gaming Set', + 'Gold Phone Case', + 'Green Earbuds', + 'Green T-Shirt', + 'Grey T-Shirt', + 'Headphones', + 'Light Green T-Shirt', + 'Lime Band', + 'Mini Speakers', + 'Painted Phone Case', + 'Pink Band', + 'Pink Purse', + 'Purple Band', + 'Purple Gemstone Necklace', + 'Purple T-Shirt', + 'Shoes', + 'Sneakers', + 'Teal T-Shirt', + 'Yellow Earbuds', + 'Yoga Mat', + 'Yoga Set' + ]; + + constructor(private http: HttpClient) {} + + getProductsMini() { + return Promise.resolve(this.getProductsData().slice(0, 5)); + } + + getProductsSmall() { + return Promise.resolve(this.getProductsData().slice(0, 10)); + } + + getProducts() { + return Promise.resolve(this.getProductsData()); + } + + getProductsWithOrdersSmall() { + return Promise.resolve(this.getProductsWithOrdersData().slice(0, 10)); + } + + generatePrduct(): Property { + const product: Property = { + id: this.generateId(), + name: this.generateName(), + description: 'Product Description', + price: this.generatePrice(), + quantity: this.generateQuantity(), + category: 'Product Category', + inventoryStatus: this.generateStatus(), + rating: this.generateRating() + }; + + product.image = product.name?.toLocaleLowerCase().split(/[ ,]+/).join('-') + '.jpg'; + return product; + } + + generateId() { + let text = ''; + let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + + for (var i = 0; i < 5; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + + return text; + } + + generateName() { + return this.productNames[Math.floor(Math.random() * Math.floor(30))]; + } + + generatePrice() { + return Math.floor(Math.random() * Math.floor(299) + 1); + } + + generateQuantity() { + return Math.floor(Math.random() * Math.floor(75) + 1); + } + + generateStatus() { + return this.status[Math.floor(Math.random() * Math.floor(3))]; + } + + generateRating() { + return Math.floor(Math.random() * Math.floor(5) + 1); + } +} diff --git a/src/app/pages/service/project-status.service.spec.ts b/src/app/pages/service/project-status.service.spec.ts new file mode 100644 index 0000000..7a9e60a --- /dev/null +++ b/src/app/pages/service/project-status.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ProjectStatusService } from './project-status.service'; + +describe('ProjectStatusService', () => { + let service: ProjectStatusService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ProjectStatusService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/pages/service/project-status.service.ts b/src/app/pages/service/project-status.service.ts new file mode 100644 index 0000000..747c526 --- /dev/null +++ b/src/app/pages/service/project-status.service.ts @@ -0,0 +1,24 @@ +import { inject, Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { environment } from '../../../environments/environments'; +import { HttpClient } from '@angular/common/http'; + +export interface ProjectStatus { + id?: string; // UUID + name?: string; +} + +@Injectable({ + providedIn: 'root' +}) +export class ProjectStatusService { + apiEndpoint: string = environment.apiBaseUrl + '/project-statuses'; + private http = inject(HttpClient); + + constructor() {} + + getProjectStatuses(): Observable { + return this.http.get(this.apiEndpoint); + } + +} diff --git a/src/app/pages/service/project-type.service.spec.ts b/src/app/pages/service/project-type.service.spec.ts new file mode 100644 index 0000000..44e27c4 --- /dev/null +++ b/src/app/pages/service/project-type.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ProjectTypeService } from './project-type.service'; + +describe('ProjectTypeService', () => { + let service: ProjectTypeService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ProjectTypeService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/pages/service/project-type.service.ts b/src/app/pages/service/project-type.service.ts new file mode 100644 index 0000000..3667f45 --- /dev/null +++ b/src/app/pages/service/project-type.service.ts @@ -0,0 +1,24 @@ +import { inject, Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { environment } from '../../../environments/environments'; +import { HttpClient } from '@angular/common/http'; + +export interface ProjectType { + id?: string; // UUID + name?: string; +} + +@Injectable({ + providedIn: 'root' +}) +export class ProjectTypeService { + apiEndpoint: string = environment.apiBaseUrl + '/project-types'; + private http = inject(HttpClient); + + constructor() {} + + getProjectTypes(): Observable { + return this.http.get(this.apiEndpoint); + } + +} diff --git a/src/app/pages/service/project.service.spec.ts b/src/app/pages/service/project.service.spec.ts new file mode 100644 index 0000000..c70ac34 --- /dev/null +++ b/src/app/pages/service/project.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ProjectService } from './project.service'; + +describe('ProjectService', () => { + let service: ProjectService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ProjectService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/pages/service/project.service.ts b/src/app/pages/service/project.service.ts new file mode 100644 index 0000000..8487499 --- /dev/null +++ b/src/app/pages/service/project.service.ts @@ -0,0 +1,82 @@ +import { inject, Injectable } from '@angular/core'; +import { environment } from '../../../environments/environments'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { Property } from '@/pages/service/property.service'; +import { ProjectStatus } from '@/pages/service/project-status.service'; +import { ProjectType } from '@/pages/service/project-type.service'; +import { ProjectDetailsDTO } from '@/pages/project-details/project-details'; + +export interface Project { + id?: string; // UUID + name?: string; + eventNumber?: string; + description?: string; + projectTypeId?: string; + statusId?: string; + propertyId?: string; + startDate?: Date; + endDate?: Date; + amountRequested?: number; + createdAt?: Date; + property?: Property; + status?: ProjectStatus; + projectType?: ProjectType; +} + +export interface ProjectsStats { + projectsCountTotal?: number, + projectsCountActive?: number, + projectsCountCompleted?: number, + amountRequestedInTotal?: number +} + +@Injectable({ + providedIn: 'root' +}) +export class ProjectService { + apiEndpoint: string = environment.apiBaseUrl + '/projects'; + private http = inject(HttpClient); + + constructor() {} + + getProjects(params?: any): Observable { + return this.http.get(this.apiEndpoint); + } + + getProject(id: string): Observable { + return this.http.get(this.apiEndpoint + '/' + id); + } + + getStats(params?: any): Observable { + return this.http.get(this.apiEndpoint + '/stats'); + } + + getProjectInstance( + newProjectName?: string, + newProjectEventNumber?: string, + newProjectDescription?: string, + newProjectProjectTypeId?: string, + newProjectStatusId?: string, + newProjectPropertyId?: string, + newProjectStartDate?: Date, + newProjectEndDate?: Date, + newProjectAmountRequested?: number + ) { + return { + name: newProjectName, + eventNumber: newProjectEventNumber, + description: newProjectDescription, + projectTypeId: newProjectProjectTypeId, + statusId: newProjectStatusId, + propertyId: newProjectPropertyId, + startDate: newProjectStartDate, + endDate: newProjectEndDate, + amountRequested: newProjectAmountRequested + }; + } + + create(project: Project): Observable { + return this.http.post(this.apiEndpoint, project); + } +} diff --git a/src/app/pages/service/property.service.spec.ts b/src/app/pages/service/property.service.spec.ts new file mode 100644 index 0000000..74e2468 --- /dev/null +++ b/src/app/pages/service/property.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { PropertyService } from './property.service'; + +describe('PropertyService', () => { + let service: PropertyService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(PropertyService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/pages/service/property.service.ts b/src/app/pages/service/property.service.ts new file mode 100644 index 0000000..693decd --- /dev/null +++ b/src/app/pages/service/property.service.ts @@ -0,0 +1,254 @@ +import { inject, Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { EMPTY, Observable } from 'rxjs'; +import { Attachment } from '@/pages/service/attachment.service'; +import { environment } from '../../../environments/environments'; + +export interface BulkDeletePropertyIds { + ids: String[]; +} + +export interface Country { + name?: string; + code?: string; +} + +export interface Property { + // Liegenschaft + // - ID + id?: string ; // UUID + + // - Name / Bezeichnung (z. B. „Wohnanlage Musterstraße“) + name?: string; + + // - Adresse (Straße, PLZ, Ort, Land) + street?: string; + houseNumber?: string; + zipCode?: string; + city?: string; + country?: string; + + // - Grundstücksnummer / Flurstück + landParcel?: string; + + // - Baujahr + dateOfConstruction?: Date; + + // - Grundstücksfläche + propertyArea?: number; + + // - Eigentümer (Verknüpfung zur Person) + ownerId?: string; // UUID -> Eigentümer + + // - Verwaltungsbeginn (seit wann wird es verwaltet) + startOfAdministration?: Date; + + // - Notizen / Besonderheiten + notes?: string; + + attachments?: Attachment[]; + + // - Dokumente (Grundbuchauszug, Lagepläne, etc.) + // siehe PropertyDocuments + + // created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + createdAt?: Date; + + // updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + updatedAt?: Date; + +} + +export interface PropertyDocuments { + id: string; // UUID + name: string; // filename + propertyId: string; // UUID: FK -> property.id + pathInStorage: string; // Unique path in storage + createdAt: Date; +} + +export interface Building { + // id BIGINT AUTO_INCREMENT PRIMARY KEY, + id: string; // UUID + + // liegenschaft_id BIGINT NOT NULL, + propertyId: string; // UUID: FK -> property.id + + // bezeichnung VARCHAR(255), + description: string; + + // baujahr SMALLINT, + dateOfConstruction: Date; + + // bauweise VARCHAR(100), + constructionMethod: string; + + // etagen SMALLINT, + floors: number | undefined + + // dachform VARCHAR(100), + roofShape: string; + + // heizungssystem VARCHAR(100), + heatingSystem: string; + + // energieausweis VARCHAR(100), -- z.B. Dateiname oder Referenz + pathToEnergyCertificate: string; + + // aufzug BOOLEAN DEFAULT FALSE, + elevator: boolean; + + // bemerkungen TEXT, + notes: string; + + // created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + createdAt: Date; + + // updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + updatedAt: Date; + + // CONSTRAINT fk_gebaeude_liegenschaft FOREIGN KEY (liegenschaft_id) + // REFERENCES liegenschaft (id) ON DELETE CASCADE +} + +export interface Contract { + id: string; + createdAt: Date; +} + +export interface AdministrativeUnit { + // id BIGINT AUTO_INCREMENT PRIMARY KEY, + id: string; + + // gebaeude_id BIGINT NOT NULL, + buildingId: string; // UUID: FK -> building.id + + // typ ENUM('Wohnung', 'Gewerbe', 'Stellplatz', 'Keller') NOT NULL, + + // nummer VARCHAR(50), -- z.B. "Whg 3.OG links" + number: string; + + // bezeichnung VARCHAR(255), + desription: string; + + // flaeche DECIMAL(10,2), + area: number; + + // zimmer SMALLINT, + rooms: number; + + // ausstattung TEXT, + equipment: string; + + // nutzung ENUM('vermietet', 'leerstehend', 'eigennutzung') DEFAULT 'leerstehend', + + // mietstatus ENUM('Miete', 'Eigentum') DEFAULT 'Miete', + + // gemeinschaftsanteil DECIMAL(5,2), -- z.B. % Anteil an NK + + // aktueller_vertrag_id BIGINT, -- FK zu Vertrag (optional) + currentContract: string; // UUID: FK -> contract.id + + // bemerkungen TEXT, + notes: string; + + // created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + createdAt: Date; + + // updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + updatedAt: Date; + + // + // CONSTRAINT fk_einheit_gebaeude FOREIGN KEY (gebaeude_id) + // REFERENCES gebaeude (id) ON DELETE CASCADE +} + +export interface EnergyCounter { + + // id BIGINT AUTO_INCREMENT PRIMARY KEY, + if: string; // UUID + + // einheit_id BIGINT NOT NULL, + unitId: string; // UUID: FK -> administrative_unit.id + + // typ ENUM('Strom', 'Wasser', 'Gas', 'Waerme') NOT NULL, + + // zaehlernummer VARCHAR(100) NOT NULL, + counterIdentification: string; + + // letzter_ablesewert DECIMAL(10,2), + lastReadValue: number; + + // letztes_ablesedatum DATE, + lastReadDate: Date; + + // bemerkungen TEXT, + notes: string; + + // created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + createdAt: Date; + + // updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + updatedAt: Date; + + // + // CONSTRAINT fk_zaehler_einheit FOREIGN KEY (einheit_id) + // REFERENCES einheit (id) ON DELETE CASCADE +} + +@Injectable({ + providedIn: 'root' +}) +export class PropertyService { + apiEndpoint: string = environment.apiBaseUrl + '/properties'; + private http = inject(HttpClient); + + + constructor() {} + + getProperties(params?: any): Observable { + console.debug(this + " -- args: ", arguments); + + return this.http.get(this.apiEndpoint); + } + + createProperty(property: Property): Observable { + console.debug(this + " -- args: ", arguments); + + return this.http.post(this.apiEndpoint, property) + } + + updateProperty(property: Property): Observable { + console.debug(this + " -- args: ", arguments); + + return this.http.patch(this.apiEndpoint + "/" + property.id, property) + } + + deleteProperty(property: Property): Observable { + console.debug(this + " -- args: ", arguments); + + return this.http.delete(this.apiEndpoint + "/" + property.id) + } + + deleteProperties(properties: Property[]): Observable { + console.debug(this + " -- args: ", arguments); + + if (!properties || properties.length === 0) { + return EMPTY; // Observable, which is "completed" immediately + } + + let ids : BulkDeletePropertyIds = { + "ids": [] + }; + + properties.forEach(property => { + if (property.id !== undefined) { + ids.ids.push(property.id); + } + }); + + return this.http.post(this.apiEndpoint + "/bulk-delete", ids) + } + + +} diff --git a/src/app/pages/uikit/buttondemo.ts b/src/app/pages/uikit/buttondemo.ts new file mode 100644 index 0000000..e92a998 --- /dev/null +++ b/src/app/pages/uikit/buttondemo.ts @@ -0,0 +1,192 @@ +import { Component, OnInit } from '@angular/core'; +import { MenuItem } from 'primeng/api'; +import { ButtonModule } from 'primeng/button'; +import { ButtonGroupModule } from 'primeng/buttongroup'; +import { SplitButtonModule } from 'primeng/splitbutton'; + +@Component({ + selector: 'app-button-demo', + standalone: true, + imports: [ButtonModule, ButtonGroupModule, SplitButtonModule], + template: `
+
+
+
Default
+
+ + + +
+
+
+
Severities
+
+ + + + + + + + +
+
+
+
Text
+
+ + + + + + + + +
+
+
+
Outlined
+
+ + + + + + + + +
+
+
+
Group
+
+ + + + + +
+
+
+
SplitButton
+
+ + + + + + + + +
+
+
+
Templating
+
+ + logo + + + logo + PrimeNG + +
+
+
+
+
+
Icons
+
+ + + +
+
+
+
Raised
+
+ + + + + + + + +
+
+
+
Rounded
+
+ + + + + + + + +
+
+
+
Rounded Icons
+
+ + + + + + + +
+
+
+
Rounded Text
+
+ + + + + + + +
+
+
+
Rounded Outlined
+
+ + + + + + + +
+
+
+
Loading
+
+ + + + +
+
+
+
` +}) +export class ButtonDemo implements OnInit { + items: MenuItem[] = []; + + loading = [false, false, false, false]; + + ngOnInit() { + this.items = [{ label: 'Update', icon: 'pi pi-refresh' }, { label: 'Delete', icon: 'pi pi-times' }, { label: 'Angular.io', icon: 'pi pi-info', url: 'http://angular.io' }, { separator: true }, { label: 'Setup', icon: 'pi pi-cog' }]; + } + + load(index: number) { + this.loading[index] = true; + setTimeout(() => (this.loading[index] = false), 1000); + } +} diff --git a/src/app/pages/uikit/chartdemo.ts b/src/app/pages/uikit/chartdemo.ts new file mode 100644 index 0000000..9e9a2db --- /dev/null +++ b/src/app/pages/uikit/chartdemo.ts @@ -0,0 +1,302 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { ChartModule } from 'primeng/chart'; +import { FluidModule } from 'primeng/fluid'; +import { debounceTime, Subscription } from 'rxjs'; +import { LayoutService } from '../../layout/service/layout.service'; + +@Component({ + selector: 'app-chart-demo', + standalone: true, + imports: [CommonModule, ChartModule, FluidModule], + template: ` + +
+
+
Linear
+ +
+
+
+
+
Bar
+ +
+
+
+
+
Pie
+ +
+
+
+
+
Doughnut
+ +
+
+
+
+
Polar Area
+ +
+
+
+
+
Radar
+ +
+
+
+ ` +}) +export class ChartDemo { + lineData: any; + + barData: any; + + pieData: any; + + polarData: any; + + radarData: any; + + lineOptions: any; + + barOptions: any; + + pieOptions: any; + + polarOptions: any; + + radarOptions: any; + + subscription: Subscription; + constructor(private layoutService: LayoutService) { + this.subscription = this.layoutService.configUpdate$.pipe(debounceTime(25)).subscribe(() => { + this.initCharts(); + }); + } + + ngOnInit() { + this.initCharts(); + } + + initCharts() { + const documentStyle = getComputedStyle(document.documentElement); + const textColor = documentStyle.getPropertyValue('--text-color'); + const textColorSecondary = documentStyle.getPropertyValue('--text-color-secondary'); + const surfaceBorder = documentStyle.getPropertyValue('--surface-border'); + + this.barData = { + labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'], + datasets: [ + { + label: 'My First dataset', + backgroundColor: documentStyle.getPropertyValue('--p-primary-500'), + borderColor: documentStyle.getPropertyValue('--p-primary-500'), + data: [65, 59, 80, 81, 56, 55, 40] + }, + { + label: 'My Second dataset', + backgroundColor: documentStyle.getPropertyValue('--p-primary-200'), + borderColor: documentStyle.getPropertyValue('--p-primary-200'), + data: [28, 48, 40, 19, 86, 27, 90] + } + ] + }; + + this.barOptions = { + maintainAspectRatio: false, + aspectRatio: 0.8, + plugins: { + legend: { + labels: { + color: textColor + } + } + }, + scales: { + x: { + ticks: { + color: textColorSecondary, + font: { + weight: 500 + } + }, + grid: { + display: false, + drawBorder: false + } + }, + y: { + ticks: { + color: textColorSecondary + }, + grid: { + color: surfaceBorder, + drawBorder: false + } + } + } + }; + + this.pieData = { + labels: ['A', 'B', 'C'], + datasets: [ + { + data: [540, 325, 702], + backgroundColor: [documentStyle.getPropertyValue('--p-indigo-500'), documentStyle.getPropertyValue('--p-purple-500'), documentStyle.getPropertyValue('--p-teal-500')], + hoverBackgroundColor: [documentStyle.getPropertyValue('--p-indigo-400'), documentStyle.getPropertyValue('--p-purple-400'), documentStyle.getPropertyValue('--p-teal-400')] + } + ] + }; + + this.pieOptions = { + plugins: { + legend: { + labels: { + usePointStyle: true, + color: textColor + } + } + } + }; + + this.lineData = { + labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'], + datasets: [ + { + label: 'First Dataset', + data: [65, 59, 80, 81, 56, 55, 40], + fill: false, + backgroundColor: documentStyle.getPropertyValue('--p-primary-500'), + borderColor: documentStyle.getPropertyValue('--p-primary-500'), + tension: 0.4 + }, + { + label: 'Second Dataset', + data: [28, 48, 40, 19, 86, 27, 90], + fill: false, + backgroundColor: documentStyle.getPropertyValue('--p-primary-200'), + borderColor: documentStyle.getPropertyValue('--p-primary-200'), + tension: 0.4 + } + ] + }; + + this.lineOptions = { + maintainAspectRatio: false, + aspectRatio: 0.8, + plugins: { + legend: { + labels: { + color: textColor + } + } + }, + scales: { + x: { + ticks: { + color: textColorSecondary + }, + grid: { + color: surfaceBorder, + drawBorder: false + } + }, + y: { + ticks: { + color: textColorSecondary + }, + grid: { + color: surfaceBorder, + drawBorder: false + } + } + } + }; + + this.polarData = { + datasets: [ + { + data: [11, 16, 7, 3], + backgroundColor: [documentStyle.getPropertyValue('--p-indigo-500'), documentStyle.getPropertyValue('--p-purple-500'), documentStyle.getPropertyValue('--p-teal-500'), documentStyle.getPropertyValue('--p-orange-500')], + label: 'My dataset' + } + ], + labels: ['Indigo', 'Purple', 'Teal', 'Orange'] + }; + + this.polarOptions = { + plugins: { + legend: { + labels: { + color: textColor + } + } + }, + scales: { + r: { + grid: { + color: surfaceBorder, + }, + ticks: { + display: false, + color: textColorSecondary + }, + }, + }, + }; + + this.radarData = { + labels: ['Eating', 'Drinking', 'Sleeping', 'Designing', 'Coding', 'Cycling', 'Running'], + datasets: [ + { + label: 'My First dataset', + borderColor: documentStyle.getPropertyValue('--p-indigo-400'), + pointBackgroundColor: documentStyle.getPropertyValue('--p-indigo-400'), + pointBorderColor: documentStyle.getPropertyValue('--p-indigo-400'), + pointHoverBackgroundColor: textColor, + pointHoverBorderColor: documentStyle.getPropertyValue('--p-indigo-400'), + data: [65, 59, 90, 81, 56, 55, 40] + }, + { + label: 'My Second dataset', + borderColor: documentStyle.getPropertyValue('--p-purple-400'), + pointBackgroundColor: documentStyle.getPropertyValue('--p-purple-400'), + pointBorderColor: documentStyle.getPropertyValue('--p-purple-400'), + pointHoverBackgroundColor: textColor, + pointHoverBorderColor: documentStyle.getPropertyValue('--p-purple-400'), + data: [28, 48, 40, 19, 96, 27, 100] + } + ] + }; + + this.radarOptions = { + plugins: { + legend: { + labels: { + color: textColor + } + } + }, + scales: { + r: { + pointLabels: { + color: textColor + }, + grid: { + color: surfaceBorder + } + } + } + }; + } + + ngOnDestroy() { + if (this.subscription) { + this.subscription.unsubscribe(); + } + } +} diff --git a/src/app/pages/uikit/filedemo.ts b/src/app/pages/uikit/filedemo.ts new file mode 100644 index 0000000..fbc6ad6 --- /dev/null +++ b/src/app/pages/uikit/filedemo.ts @@ -0,0 +1,52 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { MessageService } from 'primeng/api'; +import { ButtonModule } from 'primeng/button'; +import { FileUploadModule } from 'primeng/fileupload'; +import { ToastModule } from 'primeng/toast'; + +@Component({ + selector: 'app-file-demo', + standalone: true, + imports: [CommonModule, FileUploadModule, ToastModule, ButtonModule], + template: ` +
+
+
+
Advanced
+ + +
Drag and drop files to here to upload.
+
+
+
+
+
+
+
Basic
+
+ + +
+
+
+
`, + providers: [MessageService] +}) +export class FileDemo { + uploadedFiles: any[] = []; + + constructor(private messageService: MessageService) {} + + onUpload(event: any) { + for (const file of event.files) { + this.uploadedFiles.push(file); + } + + this.messageService.add({ severity: 'info', summary: 'Success', detail: 'File Uploaded' }); + } + + onBasicUpload() { + this.messageService.add({ severity: 'info', summary: 'Success', detail: 'File Uploaded with Basic Mode' }); + } +} diff --git a/src/app/pages/uikit/formlayoutdemo.ts b/src/app/pages/uikit/formlayoutdemo.ts new file mode 100644 index 0000000..a516c0d --- /dev/null +++ b/src/app/pages/uikit/formlayoutdemo.ts @@ -0,0 +1,129 @@ +import { Component } from '@angular/core'; +import { FluidModule } from 'primeng/fluid'; +import { InputTextModule } from 'primeng/inputtext'; +import { ButtonModule } from 'primeng/button'; +import { SelectModule } from 'primeng/select'; +import { FormsModule } from '@angular/forms'; +import { TextareaModule } from 'primeng/textarea'; + +@Component({ + selector: 'app-formlayout-demo', + standalone: true, + imports: [InputTextModule, FluidModule, ButtonModule, SelectModule, FormsModule, TextareaModule], + template: ` +
+
+
+
Vertical
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
Vertical Grid
+
+
+ + +
+
+ + +
+
+
+
+
+
+
Horizontal
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
Inline
+
+
+ + +
+
+ + +
+ +
+
+
+
Help Text
+
+ + + Enter your username to reset your password. +
+
+
+
+ +
+
+
Advanced
+
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+
+
+
` +}) +export class FormLayoutDemo { + dropdownItems = [ + { name: 'Option 1', code: 'Option 1' }, + { name: 'Option 2', code: 'Option 2' }, + { name: 'Option 3', code: 'Option 3' } + ]; + + dropdownItem = null; +} diff --git a/src/app/pages/uikit/inputdemo.ts b/src/app/pages/uikit/inputdemo.ts new file mode 100644 index 0000000..7b6add9 --- /dev/null +++ b/src/app/pages/uikit/inputdemo.ts @@ -0,0 +1,339 @@ +import { Component, inject, OnInit } from '@angular/core'; +import { InputTextModule } from 'primeng/inputtext'; +import { ButtonModule } from 'primeng/button'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { CheckboxModule } from 'primeng/checkbox'; +import { RadioButtonModule } from 'primeng/radiobutton'; +import { SelectButtonModule } from 'primeng/selectbutton'; +import { InputGroupModule } from 'primeng/inputgroup'; +import { FluidModule } from 'primeng/fluid'; +import { IconFieldModule } from 'primeng/iconfield'; +import { InputIconModule } from 'primeng/inputicon'; +import { FloatLabelModule } from 'primeng/floatlabel'; +import { AutoCompleteCompleteEvent, AutoCompleteModule } from 'primeng/autocomplete'; +import { InputNumberModule } from 'primeng/inputnumber'; +import { SliderModule } from 'primeng/slider'; +import { RatingModule } from 'primeng/rating'; +import { ColorPickerModule } from 'primeng/colorpicker'; +import { KnobModule } from 'primeng/knob'; +import { SelectModule } from 'primeng/select'; +import { DatePickerModule } from 'primeng/datepicker'; +import { ToggleSwitchModule } from 'primeng/toggleswitch'; +import { TreeSelectModule } from 'primeng/treeselect'; +import { MultiSelectModule } from 'primeng/multiselect'; +import { ListboxModule } from 'primeng/listbox'; +import { InputGroupAddonModule } from 'primeng/inputgroupaddon'; +import { TextareaModule } from 'primeng/textarea'; +import { ToggleButtonModule } from 'primeng/togglebutton'; +import { CountryService } from '../service/country.service'; +import { NodeService } from '../service/node.service'; +import { TreeNode } from 'primeng/api'; +import { Country } from '@/pages/service/property.service'; + +@Component({ + selector: 'app-input-demo', + standalone: true, + imports: [ + CommonModule, + FormsModule, + InputTextModule, + ButtonModule, + CheckboxModule, + RadioButtonModule, + SelectButtonModule, + InputGroupModule, + FluidModule, + IconFieldModule, + InputIconModule, + FloatLabelModule, + AutoCompleteModule, + InputNumberModule, + SliderModule, + RatingModule, + ColorPickerModule, + KnobModule, + SelectModule, + DatePickerModule, + ToggleButtonModule, + ToggleSwitchModule, + TreeSelectModule, + MultiSelectModule, + ListboxModule, + InputGroupAddonModule, + TextareaModule + ], + template: ` +
+
+
InputText
+
+ + + +
+ +
Icons
+ + + + + + + + + +
Float Label
+ + + + + +
Textarea
+ + +
AutoComplete
+ + +
DatePicker
+ + +
InputNumber
+ +
+ +
+
Slider
+ + + +
+
+
Rating
+ +
+
+
ColorPicker
+ +
+
+ +
Knob
+ +
+
+
+
+
RadioButton
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
Checkbox
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
ToggleSwitch
+ +
+ +
+
Listbox
+ + +
Select
+ + +
MultiSelect
+ + + @for (country of countries; track country.code) { +
+ +
{{ country.name }}
+
+ } +
+ +
+ +
{{ country.name }}
+
+
+
+ +
TreeSelect
+ +
+ +
+
ToggleButton
+ + +
SelectButton
+ +
+
+
+ + +
+
InputGroup
+
+ + + + + + + + + + + + + + + $ + .00 + +
+
+ + + + + + + + + + +
+
+
`, + providers: [CountryService, NodeService] +}) +export class InputDemo implements OnInit { + floatValue: any = null; + + autoValue: any[] | undefined; + + autoFilteredValue: any[] = []; + + selectedAutoValue: any = null; + + calendarValue: any = null; + + inputNumberValue: any = null; + + sliderValue: number = 50; + + ratingValue: any = null; + + colorValue: string = '#1976D2'; + + radioValue: any = null; + + checkboxValue: any[] = []; + + switchValue: boolean = false; + + listboxValues: any[] = [ + { name: 'New York', code: 'NY' }, + { name: 'Rome', code: 'RM' }, + { name: 'London', code: 'LDN' }, + { name: 'Istanbul', code: 'IST' }, + { name: 'Paris', code: 'PRS' } + ]; + + listboxValue: any = null; + + dropdownValues = [ + { name: 'New York', code: 'NY' }, + { name: 'Rome', code: 'RM' }, + { name: 'London', code: 'LDN' }, + { name: 'Istanbul', code: 'IST' }, + { name: 'Paris', code: 'PRS' } + ]; + + dropdownValue: any = null; + + multiselectCountries: Country[] = [ + { name: 'Australia', code: 'AU' }, + { name: 'Brazil', code: 'BR' }, + { name: 'China', code: 'CN' }, + { name: 'Egypt', code: 'EG' }, + { name: 'France', code: 'FR' }, + { name: 'Germany', code: 'DE' }, + { name: 'India', code: 'IN' }, + { name: 'Japan', code: 'JP' }, + { name: 'Spain', code: 'ES' }, + { name: 'United States', code: 'US' } + ]; + + multiselectSelectedCountries!: Country[]; + + toggleValue: boolean = false; + + selectButtonValue: any = null; + + selectButtonValues: any = [{ name: 'Option 1' }, { name: 'Option 2' }, { name: 'Option 3' }]; + + knobValue: number = 50; + + inputGroupValue: boolean = false; + + treeSelectNodes!: TreeNode[]; + + selectedNode: any = null; + + countryService = inject(CountryService); + + nodeService = inject(NodeService); + + ngOnInit() { + this.countryService.getCountries().then((countries) => { + this.autoValue = countries; + }); + + this.nodeService.getFiles().then((data) => (this.treeSelectNodes = data)); + } + + filterCountry(event: AutoCompleteCompleteEvent) { + const filtered: any[] = []; + const query = event.query; + + for (let i = 0; i < (this.autoValue as any[]).length; i++) { + const country = (this.autoValue as any[])[i]; + if (country.name.toLowerCase().indexOf(query.toLowerCase()) == 0) { + filtered.push(country); + } + } + + this.autoFilteredValue = filtered; + } +} diff --git a/src/app/pages/uikit/listdemo.ts b/src/app/pages/uikit/listdemo.ts new file mode 100644 index 0000000..ac1b6d2 --- /dev/null +++ b/src/app/pages/uikit/listdemo.ts @@ -0,0 +1,217 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { ButtonModule } from 'primeng/button'; +import { DataViewModule } from 'primeng/dataview'; +import { OrderListModule } from 'primeng/orderlist'; +import { PickListModule } from 'primeng/picklist'; +import { SelectButtonModule } from 'primeng/selectbutton'; +import { TagModule } from 'primeng/tag'; +import { Property, ProductService } from '../service/product.service'; + +@Component({ + selector: 'app-list-demo', + standalone: true, + imports: [CommonModule, DataViewModule, FormsModule, SelectButtonModule, PickListModule, OrderListModule, TagModule, ButtonModule], + template: `
+
+
DataView
+ + +
+ + + + + +
+
+ + +
+
+
+
+ +
+ +
+
+
+
+
+ {{ item.category }} +
{{ item.name }}
+
+
+
+ {{ item.rating }} + +
+
+
+
+ $ {{ item.price }} +
+ + +
+
+
+
+
+
+
+ + +
+
+
+
+ +
+ +
+
+
+
+
+ {{ item.category }} +
+ {{ item.name }} +
+
+
+
+ {{ item.rating }} + +
+
+
+
+ $ {{ item.price }} +
+ + +
+
+
+
+
+
+
+
+
+ +
+
+
+
PickList
+ + + {{ item.name }} + + +
+
+ +
+
+
OrderList
+ + + {{ option.name }} + + +
+
+
+
`, + styles: ` + ::ng-deep { + .p-orderlist-list-container { + width: 100%; + } + } + `, + providers: [ProductService] +}) +export class ListDemo { + layout: 'list' | 'grid' = 'list'; + + options = ['list', 'grid']; + + products: Property[] = []; + + sourceCities: any[] = []; + + targetCities: any[] = []; + + orderCities: any[] = []; + + constructor(private productService: ProductService) {} + + ngOnInit() { + this.productService.getProductsSmall().then((data) => (this.products = data.slice(0, 6))); + + this.sourceCities = [ + { name: 'San Francisco', code: 'SF' }, + { name: 'London', code: 'LDN' }, + { name: 'Paris', code: 'PRS' }, + { name: 'Istanbul', code: 'IST' }, + { name: 'Berlin', code: 'BRL' }, + { name: 'Barcelona', code: 'BRC' }, + { name: 'Rome', code: 'RM' } + ]; + + this.targetCities = []; + + this.orderCities = [ + { name: 'San Francisco', code: 'SF' }, + { name: 'London', code: 'LDN' }, + { name: 'Paris', code: 'PRS' }, + { name: 'Istanbul', code: 'IST' }, + { name: 'Berlin', code: 'BRL' }, + { name: 'Barcelona', code: 'BRC' }, + { name: 'Rome', code: 'RM' } + ]; + } + + getSeverity(product: Property) { + switch (product.inventoryStatus) { + case 'INSTOCK': + return 'success'; + + case 'LOWSTOCK': + return 'warn'; + + case 'OUTOFSTOCK': + return 'danger'; + + default: + return 'info'; + } + } +} diff --git a/src/app/pages/uikit/mediademo.ts b/src/app/pages/uikit/mediademo.ts new file mode 100644 index 0000000..3d2ab6a --- /dev/null +++ b/src/app/pages/uikit/mediademo.ts @@ -0,0 +1,128 @@ +import { CommonModule } from '@angular/common'; +import { Component, OnInit } from '@angular/core'; +import { ButtonModule } from 'primeng/button'; +import { CarouselModule } from 'primeng/carousel'; +import { GalleriaModule } from 'primeng/galleria'; +import { ImageModule } from 'primeng/image'; +import { TagModule } from 'primeng/tag'; +import { PhotoService } from '../service/photo.service'; +import { Property, ProductService } from '../service/product.service'; + +@Component({ + selector: 'app-media-demo', + standalone: true, + imports: [CommonModule, CarouselModule, ButtonModule, GalleriaModule, ImageModule, TagModule], + template: `
+
Carousel
+ + +
+
+
+ +
+ +
+
+
+
{{ product.name }}
+
+
{{ '$' + product.price }}
+ + + + +
+
+
+
+
+ +
+
Image
+ +
+ +
+
Galleria
+ + + + + + + + +
`, + providers: [ProductService, PhotoService] +}) +export class MediaDemo implements OnInit { + products!: Property[]; + + images!: any[]; + + galleriaResponsiveOptions: any[] = [ + { + breakpoint: '1024px', + numVisible: 5 + }, + { + breakpoint: '960px', + numVisible: 4 + }, + { + breakpoint: '768px', + numVisible: 3 + }, + { + breakpoint: '560px', + numVisible: 1 + } + ]; + + carouselResponsiveOptions: any[] = [ + { + breakpoint: '1024px', + numVisible: 3, + numScroll: 3 + }, + { + breakpoint: '768px', + numVisible: 2, + numScroll: 2 + }, + { + breakpoint: '560px', + numVisible: 1, + numScroll: 1 + } + ]; + + constructor( + private productService: ProductService, + private photoService: PhotoService + ) {} + + ngOnInit() { + this.productService.getProductsSmall().then((products) => { + this.products = products; + }); + + this.photoService.getImages().then((images) => { + this.images = images; + }); + } + + getSeverity(status: string) { + switch (status) { + case 'INSTOCK': + return 'success'; + case 'LOWSTOCK': + return 'warn'; + case 'OUTOFSTOCK': + return 'danger'; + default: + return 'success'; + } + } +} diff --git a/src/app/pages/uikit/menudemo.ts b/src/app/pages/uikit/menudemo.ts new file mode 100644 index 0000000..bb2c896 --- /dev/null +++ b/src/app/pages/uikit/menudemo.ts @@ -0,0 +1,540 @@ +import { Component } from '@angular/core'; +import { BreadcrumbModule } from 'primeng/breadcrumb'; +import { TieredMenuModule } from 'primeng/tieredmenu'; +import { ContextMenuModule } from 'primeng/contextmenu'; +import { CommonModule } from '@angular/common'; +import { MenuModule } from 'primeng/menu'; +import { ButtonModule } from 'primeng/button'; +import { MegaMenuModule } from 'primeng/megamenu'; +import { PanelMenuModule } from 'primeng/panelmenu'; +import { TabsModule } from 'primeng/tabs'; +import { MenubarModule } from 'primeng/menubar'; +import { InputTextModule } from 'primeng/inputtext'; +import { StepperModule } from 'primeng/stepper'; +import { IconField, IconFieldModule } from 'primeng/iconfield'; +import { InputIcon, InputIconModule } from 'primeng/inputicon'; + +@Component({ + selector: 'app-menu-demo', + standalone: true, + imports: [ + CommonModule, + BreadcrumbModule, + TieredMenuModule, + IconFieldModule, + InputIconModule, + MenuModule, + ButtonModule, + ContextMenuModule, + MegaMenuModule, + PanelMenuModule, + TabsModule, + MenubarModule, + InputTextModule, + TabsModule, + StepperModule, + TabsModule, + IconField, + InputIcon + ], + template: ` +
+
Menubar
+ + + + + + + + +
+ +
+
Breadcrumb
+ +
+ +
+
+
+
Steps
+ + + Header I + Header II + Header III + + +
+
+
+
+
TabMenu
+ + + Header I + Header II + Header III + + +
+
+
+ +
+
+
+
Tiered Menu
+ +
+
+
+
+
Plain Menu
+ +
+
+
+
+
Overlay Menu
+ + +
+ +
+
Context Menu
+ Right click to display. + +
+
+
+ +
+
+
+
MegaMenu | Horizontal
+ + +
MegaMenu | Vertical
+ +
+
+
+
+
PanelMenu
+ +
+
+
+ ` +}) +export class MenuDemo { + nestedMenuItems = [ + { + label: 'Customers', + icon: 'pi pi-fw pi-table', + items: [ + { + label: 'New', + icon: 'pi pi-fw pi-user-plus', + items: [ + { + label: 'Customer', + icon: 'pi pi-fw pi-plus' + }, + { + label: 'Duplicate', + icon: 'pi pi-fw pi-copy' + } + ] + }, + { + label: 'Edit', + icon: 'pi pi-fw pi-user-edit' + } + ] + }, + { + label: 'Orders', + icon: 'pi pi-fw pi-shopping-cart', + items: [ + { + label: 'View', + icon: 'pi pi-fw pi-list' + }, + { + label: 'Search', + icon: 'pi pi-fw pi-search' + } + ] + }, + { + label: 'Shipments', + icon: 'pi pi-fw pi-envelope', + items: [ + { + label: 'Tracker', + icon: 'pi pi-fw pi-compass' + }, + { + label: 'Map', + icon: 'pi pi-fw pi-map-marker' + }, + { + label: 'Manage', + icon: 'pi pi-fw pi-pencil' + } + ] + }, + { + label: 'Profile', + icon: 'pi pi-fw pi-user', + items: [ + { + label: 'Settings', + icon: 'pi pi-fw pi-cog' + }, + { + label: 'Billing', + icon: 'pi pi-fw pi-file' + } + ] + }, + { + label: 'Quit', + icon: 'pi pi-fw pi-sign-out' + } + ]; + breadcrumbHome = { icon: 'pi pi-home', to: '/' }; + breadcrumbItems = [{ label: 'Computer' }, { label: 'Notebook' }, { label: 'Accessories' }, { label: 'Backpacks' }, { label: 'Item' }]; + tieredMenuItems = [ + { + label: 'Customers', + icon: 'pi pi-fw pi-table', + items: [ + { + label: 'New', + icon: 'pi pi-fw pi-user-plus', + items: [ + { + label: 'Customer', + icon: 'pi pi-fw pi-plus' + }, + { + label: 'Duplicate', + icon: 'pi pi-fw pi-copy' + } + ] + }, + { + label: 'Edit', + icon: 'pi pi-fw pi-user-edit' + } + ] + }, + { + label: 'Orders', + icon: 'pi pi-fw pi-shopping-cart', + items: [ + { + label: 'View', + icon: 'pi pi-fw pi-list' + }, + { + label: 'Search', + icon: 'pi pi-fw pi-search' + } + ] + }, + { + label: 'Shipments', + icon: 'pi pi-fw pi-envelope', + items: [ + { + label: 'Tracker', + icon: 'pi pi-fw pi-compass' + }, + { + label: 'Map', + icon: 'pi pi-fw pi-map-marker' + }, + { + label: 'Manage', + icon: 'pi pi-fw pi-pencil' + } + ] + }, + { + label: 'Profile', + icon: 'pi pi-fw pi-user', + items: [ + { + label: 'Settings', + icon: 'pi pi-fw pi-cog' + }, + { + label: 'Billing', + icon: 'pi pi-fw pi-file' + } + ] + }, + { + separator: true + }, + { + label: 'Quit', + icon: 'pi pi-fw pi-sign-out' + } + ]; + overlayMenuItems = [ + { + label: 'Save', + icon: 'pi pi-save' + }, + { + label: 'Update', + icon: 'pi pi-refresh' + }, + { + label: 'Delete', + icon: 'pi pi-trash' + }, + { + separator: true + }, + { + label: 'Home', + icon: 'pi pi-home' + } + ]; + menuItems = [ + { + label: 'Customers', + items: [ + { + label: 'New', + icon: 'pi pi-fw pi-plus' + }, + { + label: 'Edit', + icon: 'pi pi-fw pi-user-edit' + } + ] + }, + { + label: 'Orders', + items: [ + { + label: 'View', + icon: 'pi pi-fw pi-list' + }, + { + label: 'Search', + icon: 'pi pi-fw pi-search' + } + ] + } + ]; + contextMenuItems = [ + { + label: 'Save', + icon: 'pi pi-save' + }, + { + label: 'Update', + icon: 'pi pi-refresh' + }, + { + label: 'Delete', + icon: 'pi pi-trash' + }, + { + separator: true + }, + { + label: 'Options', + icon: 'pi pi-cog' + } + ]; + megaMenuItems = [ + { + label: 'Fashion', + icon: 'pi pi-fw pi-tag', + items: [ + [ + { + label: 'Woman', + items: [{ label: 'Woman Item' }, { label: 'Woman Item' }, { label: 'Woman Item' }] + }, + { + label: 'Men', + items: [{ label: 'Men Item' }, { label: 'Men Item' }, { label: 'Men Item' }] + } + ], + [ + { + label: 'Kids', + items: [{ label: 'Kids Item' }, { label: 'Kids Item' }] + }, + { + label: 'Luggage', + items: [{ label: 'Luggage Item' }, { label: 'Luggage Item' }, { label: 'Luggage Item' }] + } + ] + ] + }, + { + label: 'Electronics', + icon: 'pi pi-fw pi-desktop', + items: [ + [ + { + label: 'Computer', + items: [{ label: 'Computer Item' }, { label: 'Computer Item' }] + }, + { + label: 'Camcorder', + items: [{ label: 'Camcorder Item' }, { label: 'Camcorder Item' }, { label: 'Camcorder Item' }] + } + ], + [ + { + label: 'TV', + items: [{ label: 'TV Item' }, { label: 'TV Item' }] + }, + { + label: 'Audio', + items: [{ label: 'Audio Item' }, { label: 'Audio Item' }, { label: 'Audio Item' }] + } + ], + [ + { + label: 'Sports.7', + items: [{ label: 'Sports.7.1' }, { label: 'Sports.7.2' }] + } + ] + ] + }, + { + label: 'Furniture', + icon: 'pi pi-fw pi-image', + items: [ + [ + { + label: 'Living Room', + items: [{ label: 'Living Room Item' }, { label: 'Living Room Item' }] + }, + { + label: 'Kitchen', + items: [{ label: 'Kitchen Item' }, { label: 'Kitchen Item' }, { label: 'Kitchen Item' }] + } + ], + [ + { + label: 'Bedroom', + items: [{ label: 'Bedroom Item' }, { label: 'Bedroom Item' }] + }, + { + label: 'Outdoor', + items: [{ label: 'Outdoor Item' }, { label: 'Outdoor Item' }, { label: 'Outdoor Item' }] + } + ] + ] + }, + { + label: 'Sports', + icon: 'pi pi-fw pi-star', + items: [ + [ + { + label: 'Basketball', + items: [{ label: 'Basketball Item' }, { label: 'Basketball Item' }] + }, + { + label: 'Football', + items: [{ label: 'Football Item' }, { label: 'Football Item' }, { label: 'Football Item' }] + } + ], + [ + { + label: 'Tennis', + items: [{ label: 'Tennis Item' }, { label: 'Tennis Item' }] + } + ] + ] + } + ]; + panelMenuItems = [ + { + label: 'Customers', + icon: 'pi pi-fw pi-table', + items: [ + { + label: 'New', + icon: 'pi pi-fw pi-user-plus', + items: [ + { + label: 'Customer', + icon: 'pi pi-fw pi-plus' + }, + { + label: 'Duplicate', + icon: 'pi pi-fw pi-copy' + } + ] + }, + { + label: 'Edit', + icon: 'pi pi-fw pi-user-edit' + } + ] + }, + { + label: 'Orders', + icon: 'pi pi-fw pi-shopping-cart', + items: [ + { + label: 'View', + icon: 'pi pi-fw pi-list' + }, + { + label: 'Search', + icon: 'pi pi-fw pi-search' + } + ] + }, + { + label: 'Shipments', + icon: 'pi pi-fw pi-envelope', + items: [ + { + label: 'Tracker', + icon: 'pi pi-fw pi-compass' + }, + { + label: 'Map', + icon: 'pi pi-fw pi-map-marker' + }, + { + label: 'Manage', + icon: 'pi pi-fw pi-pencil' + } + ] + }, + { + label: 'Profile', + icon: 'pi pi-fw pi-user', + items: [ + { + label: 'Settings', + icon: 'pi pi-fw pi-cog' + }, + { + label: 'Billing', + icon: 'pi pi-fw pi-file' + } + ] + } + ]; +} diff --git a/src/app/pages/uikit/messagesdemo.ts b/src/app/pages/uikit/messagesdemo.ts new file mode 100644 index 0000000..e5405ca --- /dev/null +++ b/src/app/pages/uikit/messagesdemo.ts @@ -0,0 +1,79 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { MessageService, ToastMessageOptions } from 'primeng/api'; +import { ButtonModule } from 'primeng/button'; +import { InputTextModule } from 'primeng/inputtext'; +import { MessageModule } from 'primeng/message'; +import { ToastModule } from 'primeng/toast'; + +@Component({ + selector: 'app-messages-demo', + standalone: true, + imports: [CommonModule, ToastModule, ButtonModule, InputTextModule, MessageModule, FormsModule], + template: ` +
+
+
+
Toast
+
+ + + + + +
+ +
Inline
+
+ + Username is required +
+
+ + Email is required +
+
+
+
+
+
Message
+
+ Success Message + Info Message + Warn Message + Error Message + Secondary Message + Contrast Message +
+
+
+
+ `, + providers: [MessageService] +}) +export class MessagesDemo { + msgs: ToastMessageOptions[] | null = []; + + username: string | undefined; + + email: string | undefined; + + constructor(private service: MessageService) {} + + showInfoViaToast() { + this.service.add({ severity: 'info', summary: 'Info Message', detail: 'PrimeNG rocks' }); + } + + showWarnViaToast() { + this.service.add({ severity: 'warn', summary: 'Warn Message', detail: 'There are unsaved changes' }); + } + + showErrorViaToast() { + this.service.add({ severity: 'error', summary: 'Error Message', detail: 'Validation failed' }); + } + + showSuccessViaToast() { + this.service.add({ severity: 'success', summary: 'Success Message', detail: 'Message sent' }); + } +} diff --git a/src/app/pages/uikit/miscdemo.ts b/src/app/pages/uikit/miscdemo.ts new file mode 100644 index 0000000..eaa384a --- /dev/null +++ b/src/app/pages/uikit/miscdemo.ts @@ -0,0 +1,192 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { AvatarModule } from 'primeng/avatar'; +import { AvatarGroupModule } from 'primeng/avatargroup'; +import { BadgeModule } from 'primeng/badge'; +import { ButtonModule } from 'primeng/button'; +import { ChipModule } from 'primeng/chip'; +import { OverlayBadgeModule } from 'primeng/overlaybadge'; +import { ProgressBarModule } from 'primeng/progressbar'; +import { ScrollPanelModule } from 'primeng/scrollpanel'; +import { ScrollTopModule } from 'primeng/scrolltop'; +import { SkeletonModule } from 'primeng/skeleton'; +import { TagModule } from 'primeng/tag'; + +@Component({ + selector: 'app-misc-demo', + standalone: true, + imports: [CommonModule, ProgressBarModule, BadgeModule, AvatarModule, ScrollPanelModule, TagModule, ChipModule, ButtonModule, SkeletonModule, AvatarGroupModule, ScrollTopModule, OverlayBadgeModule], + template: ` +
+
ProgressBar
+
+
+ +
+
+ +
+
+
+ +
+
+
+
Badge
+
+ + + + + +
+ +
Overlay
+
+ + + + + + + + + +
+ +
Button
+
+ + +
+ +
Sizes
+
+ + + +
+
+ +
+
Avatar
+
Group
+ + + + + + + + + +
Label - Circle
+ + + + +
Icon - Badge
+ + + +
+ +
+
Skeleton
+
+
+ +
+ + + +
+
+ +
+ + +
+
+
+
+
+
+
Tag
+
Default
+
+ + + + + +
+ +
Pills
+
+ + + + + +
+ +
Icons
+
+ + + + + +
+
+ +
+
Chip
+
Basic
+
+ + + + +
+ +
Icon
+
+ + + + +
+ +
Image
+
+ + + + +
+
+
+
+ ` +}) +export class MiscDemo { + value = 0; + + interval: any; + + ngOnInit() { + this.interval = setInterval(() => { + this.value = this.value + Math.floor(Math.random() * 10) + 1; + if (this.value >= 100) { + this.value = 100; + clearInterval(this.interval); + } + }, 2000); + } + + ngOnDestroy() { + clearInterval(this.interval); + } +} diff --git a/src/app/pages/uikit/overlaydemo.ts b/src/app/pages/uikit/overlaydemo.ts new file mode 100644 index 0000000..4f00407 --- /dev/null +++ b/src/app/pages/uikit/overlaydemo.ts @@ -0,0 +1,230 @@ +import { Component, OnInit } from '@angular/core'; +import { ConfirmationService, MessageService } from 'primeng/api'; +import { ButtonModule } from 'primeng/button'; +import { DialogModule } from 'primeng/dialog'; +import { ToastModule } from 'primeng/toast'; +import { DrawerModule } from 'primeng/drawer'; +import { Popover, PopoverModule } from 'primeng/popover'; +import { ConfirmPopupModule } from 'primeng/confirmpopup'; +import { InputTextModule } from 'primeng/inputtext'; +import { FormsModule } from '@angular/forms'; +import { TooltipModule } from 'primeng/tooltip'; +import { TableModule } from 'primeng/table'; +import { Property, ProductService } from '../service/product.service'; + +@Component({ + selector: 'app-overlay-demo', + standalone: true, + imports: [ToastModule, DialogModule, ButtonModule, DrawerModule, PopoverModule, ConfirmPopupModule, InputTextModule, FormsModule, TooltipModule, TableModule, ToastModule], + template: `
+
+
+
Dialog
+ +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

+ + + +
+ +
+ +
+
Popover
+
+ + + + + + Name + Image + Price + + + + + {{ product.name }} + + {{ product.price }} + + + + + +
+
+ +
+
Tooltip
+
+ + +
+
+
+
+
+
Drawer
+ +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. +

+
+ + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. +

+
+ + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. +

+
+ + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. +

+
+ + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. +

+
+ + + + + + +
+ +
+
ConfirmPopup
+ + +
+ +
+
ConfirmDialog
+ + +
+ + Are you sure you want to proceed? +
+ + + + +
+
+
+
`, + providers: [ConfirmationService, MessageService, ProductService] +}) +export class OverlayDemo implements OnInit { + images: any[] = []; + + display: boolean = false; + + products: Property[] = []; + + visibleLeft: boolean = false; + + visibleRight: boolean = false; + + visibleTop: boolean = false; + + visibleBottom: boolean = false; + + visibleFull: boolean = false; + + displayConfirmation: boolean = false; + + selectedProduct!: Property; + + constructor( + private productService: ProductService, + private confirmationService: ConfirmationService, + private messageService: MessageService + ) {} + + ngOnInit() { + this.productService.getProductsSmall().then((products) => (this.products = products)); + + this.images = []; + this.images.push({ + source: 'assets/demo/images/sopranos/sopranos1.jpg', + thumbnail: 'assets/demo/images/sopranos/sopranos1_small.jpg', + title: 'Sopranos 1' + }); + this.images.push({ + source: 'assets/demo/images/sopranos/sopranos2.jpg', + thumbnail: 'assets/demo/images/sopranos/sopranos2_small.jpg', + title: 'Sopranos 2' + }); + this.images.push({ + source: 'assets/demo/images/sopranos/sopranos3.jpg', + thumbnail: 'assets/demo/images/sopranos/sopranos3_small.jpg', + title: 'Sopranos 3' + }); + this.images.push({ + source: 'assets/demo/images/sopranos/sopranos4.jpg', + thumbnail: 'assets/demo/images/sopranos/sopranos4_small.jpg', + title: 'Sopranos 4' + }); + } + + confirm(event: Event) { + this.confirmationService.confirm({ + key: 'confirm2', + target: event.target || new EventTarget(), + message: 'Are you sure that you want to proceed?', + icon: 'pi pi-exclamation-triangle', + accept: () => { + this.messageService.add({ severity: 'info', summary: 'Confirmed', detail: 'You have accepted' }); + }, + reject: () => { + this.messageService.add({ severity: 'error', summary: 'Rejected', detail: 'You have rejected' }); + } + }); + } + + open() { + this.display = true; + } + + close() { + this.display = false; + } + + toggleDataTable(op: Popover, event: any) { + op.toggle(event); + } + + onProductSelect(op: Popover, event: any) { + op.hide(); + this.messageService.add({ severity: 'info', summary: 'Product Selected', detail: event?.data.name, life: 3000 }); + } + + openConfirmation() { + this.displayConfirmation = true; + } + + closeConfirmation() { + this.displayConfirmation = false; + } +} diff --git a/src/app/pages/uikit/panelsdemo.ts b/src/app/pages/uikit/panelsdemo.ts new file mode 100644 index 0000000..d5d512a --- /dev/null +++ b/src/app/pages/uikit/panelsdemo.ts @@ -0,0 +1,235 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { AccordionModule } from 'primeng/accordion'; +import { MenuItem } from 'primeng/api'; +import { ButtonModule } from 'primeng/button'; +import { DividerModule } from 'primeng/divider'; +import { FieldsetModule } from 'primeng/fieldset'; +import { IconFieldModule } from 'primeng/iconfield'; +import { InputIconModule } from 'primeng/inputicon'; +import { InputTextModule } from 'primeng/inputtext'; +import { MenuModule } from 'primeng/menu'; +import { PanelModule } from 'primeng/panel'; +import { RippleModule } from 'primeng/ripple'; +import { SplitButtonModule } from 'primeng/splitbutton'; +import { SplitterModule } from 'primeng/splitter'; +import { TabsModule } from 'primeng/tabs'; +import { ToolbarModule } from 'primeng/toolbar'; + +@Component({ + selector: 'app-panels-demo', + standalone: true, + imports: [ + CommonModule, + FormsModule, + ToolbarModule, + ButtonModule, + RippleModule, + SplitButtonModule, + AccordionModule, + FieldsetModule, + MenuModule, + InputTextModule, + DividerModule, + SplitterModule, + PanelModule, + TabsModule, + IconFieldModule, + InputIconModule + ], + template: ` +
+
+
Toolbar
+ + + + + + + + + + + + + + + + + + +
+ +
+
+
+
Accordion
+ + + Header I + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex + ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. +

+
+
+ + + Header II + +

+ Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt + explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Consectetur, adipisci velit, sed quia non + numquam eius modi. +

+
+
+ + + Header III + +

+ Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt + explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Consectetur, adipisci velit, sed quia non + numquam eius modi. +

+
+
+
+
+
+
Tabs
+ + + Header I + Header II + Header III + + + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex + ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. +

+
+ +

+ Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt + explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Consectetur, adipisci velit, sed quia non + numquam eius modi. +

+
+ +

+ At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, + similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio + cumque nihil impedit quo minus. +

+
+
+
+
+
+
+
+
Panel
+ +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim + id est laborum. +

+
+
+
+
Fieldset
+ +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim + id est laborum. +

+
+
+
+
+ +
+
Divider
+
+
+
+ + +
+
+ + +
+
+ +
+
+
+ OR + OR +
+
+ +
+
+
+ +
+
Splitter
+ + +
Panel 1
+
+ + + +
Panel 2
+
+ + + +
Panel 3
+
+ +
Panel 4
+
+
+
+
+
+
+
+
+ ` +}) +export class PanelsDemo { + items: MenuItem[] = [ + { + label: 'Save', + icon: 'pi pi-check' + }, + { + label: 'Update', + icon: 'pi pi-upload' + }, + { + label: 'Delete', + icon: 'pi pi-trash' + }, + { + label: 'Home Page', + icon: 'pi pi-home' + } + ]; +} diff --git a/src/app/pages/uikit/tabledemo.ts b/src/app/pages/uikit/tabledemo.ts new file mode 100644 index 0000000..67f5b55 --- /dev/null +++ b/src/app/pages/uikit/tabledemo.ts @@ -0,0 +1,568 @@ +import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { ConfirmationService, MessageService } from 'primeng/api'; +import { InputTextModule } from 'primeng/inputtext'; +import { MultiSelectModule } from 'primeng/multiselect'; +import { SelectModule } from 'primeng/select'; +import { SliderModule } from 'primeng/slider'; +import { Table, TableModule } from 'primeng/table'; +import { ProgressBarModule } from 'primeng/progressbar'; +import { ToggleButtonModule } from 'primeng/togglebutton'; +import { ToastModule } from 'primeng/toast'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { ButtonModule } from 'primeng/button'; +import { RatingModule } from 'primeng/rating'; +import { RippleModule } from 'primeng/ripple'; +import { InputIconModule } from 'primeng/inputicon'; +import { IconFieldModule } from 'primeng/iconfield'; +import { TagModule } from 'primeng/tag'; +import { Customer, CustomerService, Representative } from '../service/customer.service'; +import { Property, ProductService } from '../service/product.service'; +import {ObjectUtils} from "primeng/utils"; + +interface expandedRows { + [key: string]: boolean; +} + +@Component({ + selector: 'app-table-demo', + standalone: true, + imports: [ + TableModule, + MultiSelectModule, + SelectModule, + InputIconModule, + TagModule, + InputTextModule, + SliderModule, + ProgressBarModule, + ToggleButtonModule, + ToastModule, + CommonModule, + FormsModule, + ButtonModule, + RatingModule, + RippleModule, + IconFieldModule + ], + template: `
+
Filtering
+ + +
+ + + + + + + +
+
+ + + +
+ Name + +
+ + +
+ Country + +
+ + +
+ Agent + + +
+ Agent Picker +
+
+ + + +
+ + {{ option.name }} +
+
+
+
+
+
+ + +
+ Date + +
+ + +
+ Balance + +
+ + +
+ Status + + + + + {{ option.label }} + + + + +
+ + +
+ Activity + + + +
+ {{ activityValues[0] }} + {{ activityValues[1] }} +
+
+
+
+ + +
+ Verified + +
+ + +
+ + + + {{ customer.name }} + + +
+ + {{ customer.country.name }} +
+ + +
+ + {{ customer.representative.name }} +
+ + + {{ customer.date | date: 'MM/dd/yyyy' }} + + + {{ customer.balance | currency: 'USD' : 'symbol' }} + + + + + + + + + + + +
+ + + No customers found. + + + + + Loading customers data. Please wait. + + +
+
+ +
+
Frozen Columns
+ + + + + + Name + Id + Country + Date + Company + Status + Activity + Representative + Balance + + + + + {{ customer.name }} + {{ customer.id }} + {{ customer.country.name }} + {{ customer.date }} + {{ customer.company }} + {{ customer.status }} + {{ customer.activity }} + {{ customer.representative.name }} + + {{ formatCurrency(customer.balance) }} + + + + +
+ +
+
Row Expansion
+ + + +
+
+ + + + Name + Image + Price + Category + Reviews + Status + + + + + + + + {{ product.name }} + + + + {{ product.price | currency: 'USD' }} + {{ product.category }} + + + + + + + + + + + +
+
Orders for {{ product.name }}
+ + + + Id + + Customer + + + Date + + Amount + + + + Status + + + + + + + + {{ order.id }} + {{ order.customer }} + {{ order.date }} + + {{ order.amount | currency: 'USD' }} + + + + + + + + + + + + There are no order for this product yet. + + + +
+ + +
+
+
+ +
+
Grouping
+ + + + Name + Country + Company + Status + Date + + + + + +
+ + {{ customer.representative.name }} +
+ + +
+ + + Total Customers: {{ calculateCustomerTotal(customer.representative.name) }} + + + + + + {{ customer.name }} + + +
+ + {{ customer.country.name }} +
+ + + {{ customer.company }} + + + + + + {{ customer.date }} + + +
+
+
`, + styles: ` + .p-datatable-frozen-tbody { + font-weight: bold; + } + + .p-datatable-scrollable .p-frozen-column { + font-weight: bold; + } + `, + providers: [ConfirmationService, MessageService, CustomerService, ProductService] +}) +export class TableDemo implements OnInit { + customers1: Customer[] = []; + + customers2: Customer[] = []; + + customers3: Customer[] = []; + + selectedCustomers1: Customer[] = []; + + selectedCustomer: Customer = {}; + + representatives: Representative[] = []; + + statuses: any[] = []; + + products: Property[] = []; + + rowGroupMetadata: any; + + expandedRows: expandedRows = {}; + + activityValues: number[] = [0, 100]; + + isExpanded: boolean = false; + + balanceFrozen: boolean = false; + + loading: boolean = true; + + @ViewChild('filter') filter!: ElementRef; + + constructor( + private customerService: CustomerService, + private productService: ProductService + ) {} + + ngOnInit() { + this.customerService.getCustomersLarge().then((customers) => { + this.customers1 = customers; + this.loading = false; + + // @ts-ignore + this.customers1.forEach((customer) => (customer.date = new Date(customer.date))); + }); + this.customerService.getCustomersMedium().then((customers) => (this.customers2 = customers)); + this.customerService.getCustomersLarge().then((customers) => (this.customers3 = customers)); + this.productService.getProductsWithOrdersSmall().then((data) => (this.products = data)); + + this.representatives = [ + { name: 'Amy Elsner', image: 'amyelsner.png' }, + { name: 'Anna Fali', image: 'annafali.png' }, + { name: 'Asiya Javayant', image: 'asiyajavayant.png' }, + { name: 'Bernardo Dominic', image: 'bernardodominic.png' }, + { name: 'Elwin Sharvill', image: 'elwinsharvill.png' }, + { name: 'Ioni Bowcher', image: 'ionibowcher.png' }, + { name: 'Ivan Magalhaes', image: 'ivanmagalhaes.png' }, + { name: 'Onyama Limba', image: 'onyamalimba.png' }, + { name: 'Stephen Shaw', image: 'stephenshaw.png' }, + { name: 'XuXue Feng', image: 'xuxuefeng.png' } + ]; + + this.statuses = [ + { label: 'Unqualified', value: 'unqualified' }, + { label: 'Qualified', value: 'qualified' }, + { label: 'New', value: 'new' }, + { label: 'Negotiation', value: 'negotiation' }, + { label: 'Renewal', value: 'renewal' }, + { label: 'Proposal', value: 'proposal' } + ]; + } + + onSort() { + this.updateRowGroupMetaData(); + } + + updateRowGroupMetaData() { + this.rowGroupMetadata = {}; + + if (this.customers3) { + for (let i = 0; i < this.customers3.length; i++) { + const rowData = this.customers3[i]; + const representativeName = rowData?.representative?.name || ''; + + if (i === 0) { + this.rowGroupMetadata[representativeName] = { index: 0, size: 1 }; + } else { + const previousRowData = this.customers3[i - 1]; + const previousRowGroup = previousRowData?.representative?.name; + if (representativeName === previousRowGroup) { + this.rowGroupMetadata[representativeName].size++; + } else { + this.rowGroupMetadata[representativeName] = { index: i, size: 1 }; + } + } + } + } + } + + expandAll() { + if(ObjectUtils.isEmpty(this.expandedRows)) { + this.expandedRows = this.products.reduce( + (acc, p) => { + if (p.id) { + acc[p.id] = true; + } + return acc; + }, + {} as { [key: string]: boolean } + ); + this.isExpanded = true; + } else { + this.collapseAll() + } + + } + + collapseAll() { + this.expandedRows = {}; + this.isExpanded = false; + } + + formatCurrency(value: number) { + return value.toLocaleString('en-US', { style: 'currency', currency: 'USD' }); + } + + onGlobalFilter(table: Table, event: Event) { + table.filterGlobal((event.target as HTMLInputElement).value, 'contains'); + } + + clear(table: Table) { + table.clear(); + this.filter.nativeElement.value = ''; + } + + getSeverity(status: string) { + switch (status) { + case 'qualified': + case 'instock': + case 'INSTOCK': + case 'DELIVERED': + case 'delivered': + return 'success'; + + case 'negotiation': + case 'lowstock': + case 'LOWSTOCK': + case 'PENDING': + case 'pending': + return 'warn'; + + case 'unqualified': + case 'outofstock': + case 'OUTOFSTOCK': + case 'CANCELLED': + case 'cancelled': + return 'danger'; + + default: + return 'info'; + } + } + + calculateCustomerTotal(name: string) { + let total = 0; + + if (this.customers2) { + for (let customer of this.customers2) { + if (customer.representative?.name === name) { + total++; + } + } + } + + return total; + } +} diff --git a/src/app/pages/uikit/timelinedemo.ts b/src/app/pages/uikit/timelinedemo.ts new file mode 100644 index 0000000..42fe80c --- /dev/null +++ b/src/app/pages/uikit/timelinedemo.ts @@ -0,0 +1,141 @@ +import {Component} from '@angular/core'; +import {TimelineModule} from 'primeng/timeline'; +import {CardModule} from 'primeng/card'; +import {CommonModule} from '@angular/common'; +import {ButtonModule} from 'primeng/button'; + +@Component({ + selector: 'app-timeline-demo', + standalone: true, + imports: [CommonModule, TimelineModule, ButtonModule, CardModule], + template: `
+
+
+
Left Align
+ + + {{ event.status }} + + +
+
+
+
+
Right Align
+ + + {{ event.status }} + + +
+
+
+
+
Alternate Align
+ + + {{ event.status }} + + +
+
+
+
+
Opposite Content
+ + + {{ event.date }} + + + {{ event.status }} + + +
+
+
+
+
Templating
+ + + + + + + + + +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Inventore sed consequuntur error repudiandae numquam deserunt quisquam repellat libero asperiores earum nam nobis, culpa ratione quam perferendis esse, + cupiditate neque quas! +

+ +
+
+
+
+
+
+
+
Horizontal
+
Top Align
+ + + {{ event }} + + + +
Bottom Align
+ + + {{ event }} + + + +
Alternate Align
+ + + {{ event }} + +   + +
+
+
` +}) +export class TimelineDemo { + events1: any[] = []; + + events2: any[] = []; + + ngOnInit() { + this.events1 = [ + { + status: 'Ordered', + date: '15/10/2020 10:30', + icon: 'pi pi-shopping-cart', + color: '#9C27B0', + image: 'game-controller.jpg' + }, + { + status: 'Processing', + date: '15/10/2020 14:00', + icon: 'pi pi-cog', + color: '#673AB7' + }, + { + status: 'Shipped', + date: '15/10/2020 16:15', + icon: 'pi pi-envelope', + color: '#FF9800' + }, + { + status: 'Delivered', + date: '16/10/2020 10:00', + icon: 'pi pi-check', + color: '#607D8B' + } + ]; + + this.events2 = ['2020', '2021', '2022', '2023']; + } +} diff --git a/src/app/pages/uikit/treedemo.ts b/src/app/pages/uikit/treedemo.ts new file mode 100644 index 0000000..7879f1b --- /dev/null +++ b/src/app/pages/uikit/treedemo.ts @@ -0,0 +1,75 @@ +import { Component, inject, OnInit } from '@angular/core'; +import { TreeNode } from 'primeng/api'; +import { TreeModule } from 'primeng/tree'; +import { FormsModule } from '@angular/forms'; +import { TreeTableModule } from 'primeng/treetable'; +import { CommonModule } from '@angular/common'; +import { NodeService } from '../service/node.service'; + +@Component({ + selector: 'app-tree-demo', + standalone: true, + imports: [CommonModule, FormsModule, TreeModule, TreeTableModule], + template: ` +
+
Tree
+ +
+ +
+
TreeTable
+ + + + + {{ col.header }} + + + + + + + + + + {{ rowData[col.field] }} + + + + + +
+ `, + providers: [NodeService] +}) +export class TreeDemo implements OnInit { + treeValue: TreeNode[] = []; + + treeTableValue: TreeNode[] = []; + + selectedTreeValue: TreeNode[] = []; + + selectedTreeTableValue = {}; + + cols: any[] = []; + + nodeService = inject(NodeService); + + ngOnInit() { + this.nodeService.getFiles().then((files) => (this.treeValue = files)); + this.nodeService.getTreeTableNodes().then((files: any) => (this.treeTableValue = files)); + + this.cols = [ + { field: 'name', header: 'Name' }, + { field: 'size', header: 'Size' }, + { field: 'type', header: 'Type' } + ]; + + this.selectedTreeTableValue = { + '0-0': { + partialChecked: false, + checked: true + } + }; + } +} diff --git a/src/app/pages/uikit/uikit.routes.ts b/src/app/pages/uikit/uikit.routes.ts new file mode 100644 index 0000000..c9ed471 --- /dev/null +++ b/src/app/pages/uikit/uikit.routes.ts @@ -0,0 +1,35 @@ +import { Routes } from '@angular/router'; +import { ButtonDemo } from './buttondemo'; +import { ChartDemo } from './chartdemo'; +import { FileDemo } from './filedemo'; +import { FormLayoutDemo } from './formlayoutdemo'; +import { InputDemo } from './inputdemo'; +import { ListDemo } from './listdemo'; +import { MediaDemo } from './mediademo'; +import { MessagesDemo } from './messagesdemo'; +import { MiscDemo } from './miscdemo'; +import { PanelsDemo } from './panelsdemo'; +import { TimelineDemo } from './timelinedemo'; +import { TableDemo } from './tabledemo'; +import { OverlayDemo } from './overlaydemo'; +import { TreeDemo } from './treedemo'; +import { MenuDemo } from './menudemo'; + +export default [ + { path: 'button', data: { breadcrumb: 'Button' }, component: ButtonDemo }, + { path: 'charts', data: { breadcrumb: 'Charts' }, component: ChartDemo }, + { path: 'file', data: { breadcrumb: 'File' }, component: FileDemo }, + { path: 'formlayout', data: { breadcrumb: 'Form Layout' }, component: FormLayoutDemo }, + { path: 'input', data: { breadcrumb: 'Input' }, component: InputDemo }, + { path: 'list', data: { breadcrumb: 'List' }, component: ListDemo }, + { path: 'media', data: { breadcrumb: 'Media' }, component: MediaDemo }, + { path: 'message', data: { breadcrumb: 'Message' }, component: MessagesDemo }, + { path: 'misc', data: { breadcrumb: 'Misc' }, component: MiscDemo }, + { path: 'panel', data: { breadcrumb: 'Panel' }, component: PanelsDemo }, + { path: 'timeline', data: { breadcrumb: 'Timeline' }, component: TimelineDemo }, + { path: 'table', data: { breadcrumb: 'Table' }, component: TableDemo }, + { path: 'overlay', data: { breadcrumb: 'Overlay' }, component: OverlayDemo }, + { path: 'tree', data: { breadcrumb: 'Tree' }, component: TreeDemo }, + { path: 'menu', data: { breadcrumb: 'Menu' }, component: MenuDemo }, + { path: '**', redirectTo: '/notfound' } +] as Routes; diff --git a/src/app/pipes/has-role-pipe.spec.ts b/src/app/pipes/has-role-pipe.spec.ts new file mode 100644 index 0000000..a7660db --- /dev/null +++ b/src/app/pipes/has-role-pipe.spec.ts @@ -0,0 +1,8 @@ +import { HasRolePipe } from './has-role-pipe'; + +describe('HasRolePipe', () => { + it('create an instance', () => { + const pipe = new HasRolePipe(); + expect(pipe).toBeTruthy(); + }); +}); diff --git a/src/app/pipes/has-role-pipe.ts b/src/app/pipes/has-role-pipe.ts new file mode 100644 index 0000000..2ae7c6a --- /dev/null +++ b/src/app/pipes/has-role-pipe.ts @@ -0,0 +1,19 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import Keycloak from 'keycloak-js'; + +@Pipe({ + name: 'hasRole', + standalone: true +}) +export class HasRolePipe implements PipeTransform { + constructor(private keycloak: Keycloak) {} + + transform(allowed: string | string[], mode: 'any' | 'all' = 'any'): boolean { + const userRoles = this.keycloak.realmAccess?.roles ?? []; + const allowedRoles = Array.isArray(allowed) ? allowed : [allowed]; + + if (!allowedRoles.length) return true; + if (mode === 'all') return allowedRoles.every(r => userRoles.includes(r)); + return allowedRoles.some(r => userRoles.includes(r)); + } +} diff --git a/src/app/pipes/safe-html-pipe.spec.ts b/src/app/pipes/safe-html-pipe.spec.ts new file mode 100644 index 0000000..2428d10 --- /dev/null +++ b/src/app/pipes/safe-html-pipe.spec.ts @@ -0,0 +1,8 @@ +import { SafeHtmlPipe } from './safe-html-pipe'; + +describe('SafeHtmlPipe', () => { + it('create an instance', () => { + const pipe = new SafeHtmlPipe(); + expect(pipe).toBeTruthy(); + }); +}); diff --git a/src/app/pipes/safe-html-pipe.ts b/src/app/pipes/safe-html-pipe.ts new file mode 100644 index 0000000..c5c0050 --- /dev/null +++ b/src/app/pipes/safe-html-pipe.ts @@ -0,0 +1,12 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import { SafeHtml } from '@angular/platform-browser'; + +@Pipe({ + name: 'safeHtml', + standalone: true, +}) +export class SafeHtmlPipe implements PipeTransform { + transform(value: string | null | undefined): string { + return value ?? ''; + } +} diff --git a/src/assets/demo/code.scss b/src/assets/demo/code.scss new file mode 100644 index 0000000..d0d2e9a --- /dev/null +++ b/src/assets/demo/code.scss @@ -0,0 +1,17 @@ +pre.app-code { + background-color: var(--code-background); + margin: 0 0 1rem 0; + padding: 0; + border-radius: var(--content-border-radius); + overflow: auto; + + code { + color: var(--code-color); + padding: 1rem; + margin: 0; + line-height: 1.5; + display: block; + font-weight: semibold; + font-family: monaco, Consolas, monospace; + } +} diff --git a/src/assets/demo/demo.scss b/src/assets/demo/demo.scss new file mode 100644 index 0000000..b8f47d4 --- /dev/null +++ b/src/assets/demo/demo.scss @@ -0,0 +1,2 @@ +@use './code.scss'; +@use './flags/flags'; diff --git a/src/assets/demo/flags/flags.scss b/src/assets/demo/flags/flags.scss new file mode 100755 index 0000000..44a4376 --- /dev/null +++ b/src/assets/demo/flags/flags.scss @@ -0,0 +1 @@ +span.flag{width:44px;height:30px;display:inline-block;}img.flag{width:30px}.flag{background:url(./flags_responsive.png) no-repeat;background-size:100%;vertical-align: middle;}.flag-ad{background-position:0 .413223%}.flag-ae{background-position:0 .826446%}.flag-af{background-position:0 1.239669%}.flag-ag{background-position:0 1.652893%}.flag-ai{background-position:0 2.066116%}.flag-al{background-position:0 2.479339%}.flag-am{background-position:0 2.892562%}.flag-an{background-position:0 3.305785%}.flag-ao{background-position:0 3.719008%}.flag-aq{background-position:0 4.132231%}.flag-ar{background-position:0 4.545455%}.flag-as{background-position:0 4.958678%}.flag-at{background-position:0 5.371901%}.flag-au{background-position:0 5.785124%}.flag-aw{background-position:0 6.198347%}.flag-az{background-position:0 6.61157%}.flag-ba{background-position:0 7.024793%}.flag-bb{background-position:0 7.438017%}.flag-bd{background-position:0 7.85124%}.flag-be{background-position:0 8.264463%}.flag-bf{background-position:0 8.677686%}.flag-bg{background-position:0 9.090909%}.flag-bh{background-position:0 9.504132%}.flag-bi{background-position:0 9.917355%}.flag-bj{background-position:0 10.330579%}.flag-bm{background-position:0 10.743802%}.flag-bn{background-position:0 11.157025%}.flag-bo{background-position:0 11.570248%}.flag-br{background-position:0 11.983471%}.flag-bs{background-position:0 12.396694%}.flag-bt{background-position:0 12.809917%}.flag-bv{background-position:0 13.22314%}.flag-bw{background-position:0 13.636364%}.flag-by{background-position:0 14.049587%}.flag-bz{background-position:0 14.46281%}.flag-ca{background-position:0 14.876033%}.flag-cc{background-position:0 15.289256%}.flag-cd{background-position:0 15.702479%}.flag-cf{background-position:0 16.115702%}.flag-cg{background-position:0 16.528926%}.flag-ch{background-position:0 16.942149%}.flag-ci{background-position:0 17.355372%}.flag-ck{background-position:0 17.768595%}.flag-cl{background-position:0 18.181818%}.flag-cm{background-position:0 18.595041%}.flag-cn{background-position:0 19.008264%}.flag-co{background-position:0 19.421488%}.flag-cr{background-position:0 19.834711%}.flag-cu{background-position:0 20.247934%}.flag-cv{background-position:0 20.661157%}.flag-cx{background-position:0 21.07438%}.flag-cy{background-position:0 21.487603%}.flag-cz{background-position:0 21.900826%}.flag-de{background-position:0 22.31405%}.flag-dj{background-position:0 22.727273%}.flag-dk{background-position:0 23.140496%}.flag-dm{background-position:0 23.553719%}.flag-do{background-position:0 23.966942%}.flag-dz{background-position:0 24.380165%}.flag-ec{background-position:0 24.793388%}.flag-ee{background-position:0 25.206612%}.flag-eg{background-position:0 25.619835%}.flag-eh{background-position:0 26.033058%}.flag-er{background-position:0 26.446281%}.flag-es{background-position:0 26.859504%}.flag-et{background-position:0 27.272727%}.flag-fi{background-position:0 27.68595%}.flag-fj{background-position:0 28.099174%}.flag-fk{background-position:0 28.512397%}.flag-fm{background-position:0 28.92562%}.flag-fo{background-position:0 29.338843%}.flag-fr{background-position:0 29.752066%}.flag-ga{background-position:0 30.165289%}.flag-gd{background-position:0 30.578512%}.flag-ge{background-position:0 30.991736%}.flag-gf{background-position:0 31.404959%}.flag-gh{background-position:0 31.818182%}.flag-gi{background-position:0 32.231405%}.flag-gl{background-position:0 32.644628%}.flag-gm{background-position:0 33.057851%}.flag-gn{background-position:0 33.471074%}.flag-gp{background-position:0 33.884298%}.flag-gq{background-position:0 34.297521%}.flag-gr{background-position:0 34.710744%}.flag-gs{background-position:0 35.123967%}.flag-gt{background-position:0 35.53719%}.flag-gu{background-position:0 35.950413%}.flag-gw{background-position:0 36.363636%}.flag-gy{background-position:0 36.77686%}.flag-hk{background-position:0 37.190083%}.flag-hm{background-position:0 37.603306%}.flag-hn{background-position:0 38.016529%}.flag-hr{background-position:0 38.429752%}.flag-ht{background-position:0 38.842975%}.flag-hu{background-position:0 39.256198%}.flag-id{background-position:0 39.669421%}.flag-ie{background-position:0 40.082645%}.flag-il{background-position:0 40.495868%}.flag-in{background-position:0 40.909091%}.flag-io{background-position:0 41.322314%}.flag-iq{background-position:0 41.735537%}.flag-ir{background-position:0 42.14876%}.flag-is{background-position:0 42.561983%}.flag-it{background-position:0 42.975207%}.flag-jm{background-position:0 43.38843%}.flag-jo{background-position:0 43.801653%}.flag-jp{background-position:0 44.214876%}.flag-ke{background-position:0 44.628099%}.flag-kg{background-position:0 45.041322%}.flag-kh{background-position:0 45.454545%}.flag-ki{background-position:0 45.867769%}.flag-km{background-position:0 46.280992%}.flag-kn{background-position:0 46.694215%}.flag-kp{background-position:0 47.107438%}.flag-kr{background-position:0 47.520661%}.flag-kw{background-position:0 47.933884%}.flag-ky{background-position:0 48.347107%}.flag-kz{background-position:0 48.760331%}.flag-la{background-position:0 49.173554%}.flag-lb{background-position:0 49.586777%}.flag-lc{background-position:0 50%}.flag-li{background-position:0 50.413223%}.flag-lk{background-position:0 50.826446%}.flag-lr{background-position:0 51.239669%}.flag-ls{background-position:0 51.652893%}.flag-lt{background-position:0 52.066116%}.flag-lu{background-position:0 52.479339%}.flag-lv{background-position:0 52.892562%}.flag-ly{background-position:0 53.305785%}.flag-ma{background-position:0 53.719008%}.flag-mc{background-position:0 54.132231%}.flag-md{background-position:0 54.545455%}.flag-me{background-position:0 54.958678%}.flag-mg{background-position:0 55.371901%}.flag-mh{background-position:0 55.785124%}.flag-mk{background-position:0 56.198347%}.flag-ml{background-position:0 56.61157%}.flag-mm{background-position:0 57.024793%}.flag-mn{background-position:0 57.438017%}.flag-mo{background-position:0 57.85124%}.flag-mp{background-position:0 58.264463%}.flag-mq{background-position:0 58.677686%}.flag-mr{background-position:0 59.090909%}.flag-ms{background-position:0 59.504132%}.flag-mt{background-position:0 59.917355%}.flag-mu{background-position:0 60.330579%}.flag-mv{background-position:0 60.743802%}.flag-mw{background-position:0 61.157025%}.flag-mx{background-position:0 61.570248%}.flag-my{background-position:0 61.983471%}.flag-mz{background-position:0 62.396694%}.flag-na{background-position:0 62.809917%}.flag-nc{background-position:0 63.22314%}.flag-ne{background-position:0 63.636364%}.flag-nf{background-position:0 64.049587%}.flag-ng{background-position:0 64.46281%}.flag-ni{background-position:0 64.876033%}.flag-nl{background-position:0 65.289256%}.flag-no{background-position:0 65.702479%}.flag-np{background-position:0 66.115702%}.flag-nr{background-position:0 66.528926%}.flag-nu{background-position:0 66.942149%}.flag-nz{background-position:0 67.355372%}.flag-om{background-position:0 67.768595%}.flag-pa{background-position:0 68.181818%}.flag-pe{background-position:0 68.595041%}.flag-pf{background-position:0 69.008264%}.flag-pg{background-position:0 69.421488%}.flag-ph{background-position:0 69.834711%}.flag-pk{background-position:0 70.247934%}.flag-pl{background-position:0 70.661157%}.flag-pm{background-position:0 71.07438%}.flag-pn{background-position:0 71.487603%}.flag-pr{background-position:0 71.900826%}.flag-pt{background-position:0 72.31405%}.flag-pw{background-position:0 72.727273%}.flag-py{background-position:0 73.140496%}.flag-qa{background-position:0 73.553719%}.flag-re{background-position:0 73.966942%}.flag-ro{background-position:0 74.380165%}.flag-rs{background-position:0 74.793388%}.flag-ru{background-position:0 75.206612%}.flag-rw{background-position:0 75.619835%}.flag-sa{background-position:0 76.033058%}.flag-sb{background-position:0 76.446281%}.flag-sc{background-position:0 76.859504%}.flag-sd{background-position:0 77.272727%}.flag-se{background-position:0 77.68595%}.flag-sg{background-position:0 78.099174%}.flag-sh{background-position:0 78.512397%}.flag-si{background-position:0 78.92562%}.flag-sj{background-position:0 79.338843%}.flag-sk{background-position:0 79.752066%}.flag-sl{background-position:0 80.165289%}.flag-sm{background-position:0 80.578512%}.flag-sn{background-position:0 80.991736%}.flag-so{background-position:0 81.404959%}.flag-sr{background-position:0 81.818182%}.flag-ss{background-position:0 82.231405%}.flag-st{background-position:0 82.644628%}.flag-sv{background-position:0 83.057851%}.flag-sy{background-position:0 83.471074%}.flag-sz{background-position:0 83.884298%}.flag-tc{background-position:0 84.297521%}.flag-td{background-position:0 84.710744%}.flag-tf{background-position:0 85.123967%}.flag-tg{background-position:0 85.53719%}.flag-th{background-position:0 85.950413%}.flag-tj{background-position:0 86.363636%}.flag-tk{background-position:0 86.77686%}.flag-tl{background-position:0 87.190083%}.flag-tm{background-position:0 87.603306%}.flag-tn{background-position:0 88.016529%}.flag-to{background-position:0 88.429752%}.flag-tp{background-position:0 88.842975%}.flag-tr{background-position:0 89.256198%}.flag-tt{background-position:0 89.669421%}.flag-tv{background-position:0 90.082645%}.flag-tw{background-position:0 90.495868%}.flag-ty{background-position:0 90.909091%}.flag-tz{background-position:0 91.322314%}.flag-ua{background-position:0 91.735537%}.flag-ug{background-position:0 92.14876%}.flag-gb,.flag-uk{background-position:0 92.561983%}.flag-um{background-position:0 92.975207%}.flag-us{background-position:0 93.38843%}.flag-uy{background-position:0 93.801653%}.flag-uz{background-position:0 94.214876%}.flag-va{background-position:0 94.628099%}.flag-vc{background-position:0 95.041322%}.flag-ve{background-position:0 95.454545%}.flag-vg{background-position:0 95.867769%}.flag-vi{background-position:0 96.280992%}.flag-vn{background-position:0 96.694215%}.flag-vu{background-position:0 97.107438%}.flag-wf{background-position:0 97.520661%}.flag-ws{background-position:0 97.933884%}.flag-ye{background-position:0 98.347107%}.flag-za{background-position:0 98.760331%}.flag-zm{background-position:0 99.173554%}.flag-zr{background-position:0 99.586777%}.flag-zw{background-position:0 100%} diff --git a/src/assets/demo/flags/flags_responsive.png b/src/assets/demo/flags/flags_responsive.png new file mode 100755 index 0000000..c27ce21 Binary files /dev/null and b/src/assets/demo/flags/flags_responsive.png differ diff --git a/src/assets/layout/_core.scss b/src/assets/layout/_core.scss new file mode 100644 index 0000000..8dee918 --- /dev/null +++ b/src/assets/layout/_core.scss @@ -0,0 +1,24 @@ +html { + height: 100%; + font-size: 14px; +} + +body { + font-family: 'Lato', sans-serif; + color: var(--text-color); + background-color: var(--surface-ground); + margin: 0; + padding: 0; + min-height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + line-height: 1.2; +} + +a { + text-decoration: none; +} + +.layout-wrapper { + min-height: 100vh; +} diff --git a/src/assets/layout/_footer.scss b/src/assets/layout/_footer.scss new file mode 100644 index 0000000..27bcbf0 --- /dev/null +++ b/src/assets/layout/_footer.scss @@ -0,0 +1,8 @@ +.layout-footer { + display: flex; + align-items: center; + justify-content: center; + padding: 1rem 0 1rem 0; + gap: 0.5rem; + border-top: 1px solid var(--surface-border); +} diff --git a/src/assets/layout/_main.scss b/src/assets/layout/_main.scss new file mode 100644 index 0000000..162e95c --- /dev/null +++ b/src/assets/layout/_main.scss @@ -0,0 +1,17 @@ +.layout-main-container { + display: flex; + flex-direction: column; + min-height: 100vh; + justify-content: space-between; + padding: 6rem 2rem 0 2rem; + transition: margin-left var(--layout-section-transition-duration); +} + +.layout-main { + flex: 1 1 auto; + padding-bottom: 2rem; +} + +img { + max-width: none !important; +} diff --git a/src/assets/layout/_menu.scss b/src/assets/layout/_menu.scss new file mode 100644 index 0000000..3d22fb5 --- /dev/null +++ b/src/assets/layout/_menu.scss @@ -0,0 +1,160 @@ +@use 'mixins' as *; + +.layout-sidebar { + position: fixed; + width: 20rem; + height: calc(100vh - 8rem); + z-index: 999; + overflow-y: auto; + user-select: none; + top: 6rem; + left: 2rem; + transition: + transform var(--layout-section-transition-duration), + left var(--layout-section-transition-duration); + background-color: var(--surface-overlay); + border-radius: var(--content-border-radius); + padding: 0.5rem 1.5rem; +} + +.layout-menu { + margin: 0; + padding: 0; + list-style-type: none; + + .layout-root-menuitem { + > .layout-menuitem-root-text { + font-size: 0.857rem; + text-transform: uppercase; + font-weight: 700; + color: var(--text-color); + margin: 0.75rem 0; + } + + > a { + display: none; + } + } + + a { + user-select: none; + + &.active-menuitem { + > .layout-submenu-toggler { + transform: rotate(-180deg); + } + } + } + + li.active-menuitem { + > a { + .layout-submenu-toggler { + transform: rotate(-180deg); + } + } + } + + ul { + margin: 0; + padding: 0; + list-style-type: none; + + a { + display: flex; + align-items: center; + position: relative; + outline: 0 none; + color: var(--text-color); + cursor: pointer; + padding: 0.75rem 1rem; + border-radius: var(--content-border-radius); + transition: + background-color var(--element-transition-duration), + box-shadow var(--element-transition-duration); + + .layout-menuitem-icon { + margin-right: 0.5rem; + } + + .layout-submenu-toggler { + font-size: 75%; + margin-left: auto; + transition: transform var(--element-transition-duration); + } + + &.active-route { + font-weight: 700; + color: var(--primary-color); + } + + &:hover { + background-color: var(--surface-hover); + } + + &:focus { + @include focused-inset(); + } + } + + ul { + overflow: hidden; + border-radius: var(--content-border-radius); + + li { + a { + margin-left: 1rem; + } + + li { + a { + margin-left: 2rem; + } + + li { + a { + margin-left: 2.5rem; + } + + li { + a { + margin-left: 3rem; + } + + li { + a { + margin-left: 3.5rem; + } + + li { + a { + margin-left: 4rem; + } + } + } + } + } + } + } + } + } +} + +.layout-submenu-enter-from, +.layout-submenu-leave-to { + max-height: 0; +} + +.layout-submenu-enter-to, +.layout-submenu-leave-from { + max-height: 1000px; +} + +.layout-submenu-leave-active { + overflow: hidden; + transition: max-height 0.45s cubic-bezier(0, 1, 0, 1); +} + +.layout-submenu-enter-active { + overflow: hidden; + transition: max-height 1s ease-in-out; +} diff --git a/src/assets/layout/_mixins.scss b/src/assets/layout/_mixins.scss new file mode 100644 index 0000000..ad330b1 --- /dev/null +++ b/src/assets/layout/_mixins.scss @@ -0,0 +1,15 @@ +@mixin focused() { + outline-width: var(--focus-ring-width); + outline-style: var(--focus-ring-style); + outline-color: var(--focus-ring-color); + outline-offset: var(--focus-ring-offset); + box-shadow: var(--focus-ring-shadow); + transition: + box-shadow var(--transition-duration), + outline-color var(--transition-duration); +} + +@mixin focused-inset() { + outline-offset: -1px; + box-shadow: inset var(--focus-ring-shadow); +} diff --git a/src/assets/layout/_preloading.scss b/src/assets/layout/_preloading.scss new file mode 100644 index 0000000..a814104 --- /dev/null +++ b/src/assets/layout/_preloading.scss @@ -0,0 +1,47 @@ +.preloader { + position: fixed; + z-index: 999999; + background: #edf1f5; + width: 100%; + height: 100%; +} +.preloader-content { + border: 0 solid transparent; + border-radius: 50%; + width: 150px; + height: 150px; + position: absolute; + top: calc(50vh - 75px); + left: calc(50vw - 75px); +} + +.preloader-content:before, .preloader-content:after{ + content: ''; + border: 1em solid var(--primary-color); + border-radius: 50%; + width: inherit; + height: inherit; + position: absolute; + top: 0; + left: 0; + animation: loader 2s linear infinite; + opacity: 0; +} + +.preloader-content:before{ + animation-delay: 0.5s; +} + +@keyframes loader{ + 0%{ + transform: scale(0); + opacity: 0; + } + 50%{ + opacity: 1; + } + 100%{ + transform: scale(1); + opacity: 0; + } +} diff --git a/src/assets/layout/_responsive.scss b/src/assets/layout/_responsive.scss new file mode 100644 index 0000000..561d5f1 --- /dev/null +++ b/src/assets/layout/_responsive.scss @@ -0,0 +1,110 @@ +@media screen and (min-width: 1960px) { + .layout-main, + .landing-wrapper { + width: 1504px; + margin-left: auto !important; + margin-right: auto !important; + } +} + +@media (min-width: 992px) { + .layout-wrapper { + &.layout-overlay { + .layout-main-container { + margin-left: 0; + padding-left: 2rem; + } + + .layout-sidebar { + transform: translateX(-100%); + left: 0; + top: 0; + height: 100vh; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-right: 1px solid var(--surface-border); + transition: + transform 0.4s cubic-bezier(0.05, 0.74, 0.2, 0.99), + left 0.4s cubic-bezier(0.05, 0.74, 0.2, 0.99); + box-shadow: + 0px 3px 5px rgba(0, 0, 0, 0.02), + 0px 0px 2px rgba(0, 0, 0, 0.05), + 0px 1px 4px rgba(0, 0, 0, 0.08); + } + + &.layout-overlay-active { + .layout-sidebar { + transform: translateX(0); + } + } + } + + &.layout-static { + .layout-main-container { + margin-left: 22rem; + } + + &.layout-static-inactive { + .layout-sidebar { + transform: translateX(-100%); + left: 0; + } + + .layout-main-container { + margin-left: 0; + padding-left: 2rem; + } + } + } + + .layout-mask { + display: none; + } + } +} + +@media (max-width: 991px) { + .blocked-scroll { + overflow: hidden; + } + + .layout-wrapper { + .layout-main-container { + margin-left: 0; + padding-left: 2rem; + } + + .layout-sidebar { + transform: translateX(-100%); + left: 0; + top: 0; + height: 100vh; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + transition: + transform 0.4s cubic-bezier(0.05, 0.74, 0.2, 0.99), + left 0.4s cubic-bezier(0.05, 0.74, 0.2, 0.99); + } + + .layout-mask { + display: none; + position: fixed; + top: 0; + left: 0; + z-index: 998; + width: 100%; + height: 100%; + background-color: var(--maskbg); + } + + &.layout-mobile-active { + .layout-sidebar { + transform: translateX(0); + } + + .layout-mask { + display: block; + } + } + } +} diff --git a/src/assets/layout/_topbar.scss b/src/assets/layout/_topbar.scss new file mode 100644 index 0000000..f5d239c --- /dev/null +++ b/src/assets/layout/_topbar.scss @@ -0,0 +1,160 @@ +@use 'mixins' as *; + +.layout-topbar { + position: fixed; + height: 4rem; + z-index: 997; + left: 0; + top: 0; + width: 100%; + padding: 0 2rem; + background-color: var(--surface-card); + transition: left var(--layout-section-transition-duration); + display: flex; + align-items: center; + + .layout-topbar-logo-container { + width: 20rem; + display: flex; + align-items: center; + } + + .layout-topbar-logo { + display: inline-flex; + align-items: center; + font-size: 1.5rem; + border-radius: var(--content-border-radius); + color: var(--text-color); + font-weight: 500; + gap: 0.5rem; + + svg { + width: 3rem; + } + + &:focus-visible { + @include focused(); + } + } + + .layout-topbar-action { + display: inline-flex; + justify-content: center; + align-items: center; + color: var(--text-color-secondary); + border-radius: 50%; + width: 2.5rem; + height: 2.5rem; + color: var(--text-color); + transition: background-color var(--element-transition-duration); + cursor: pointer; + + &:hover { + background-color: var(--surface-hover); + } + + &:focus-visible { + @include focused(); + } + + i { + font-size: 1.25rem; + } + + span { + font-size: 1rem; + display: none; + } + + &.layout-topbar-action-highlight { + background-color: var(--primary-color); + color: var(--primary-contrast-color); + } + } + + .layout-menu-button { + margin-right: 0.5rem; + } + + .layout-topbar-menu-button { + display: none; + } + + .layout-topbar-actions { + margin-left: auto; + display: flex; + gap: 1rem; + } + + .layout-topbar-menu-content { + display: flex; + gap: 1rem; + } + + .layout-config-menu { + display: flex; + gap: 1rem; + } +} + +@media (max-width: 991px) { + .layout-topbar { + padding: 0 2rem; + + .layout-topbar-logo-container { + width: auto; + } + + .layout-menu-button { + margin-left: 0; + margin-right: 0.5rem; + } + + .layout-topbar-menu-button { + display: inline-flex; + } + + .layout-topbar-menu { + position: absolute; + background-color: var(--surface-overlay); + transform-origin: top; + box-shadow: + 0px 3px 5px rgba(0, 0, 0, 0.02), + 0px 0px 2px rgba(0, 0, 0, 0.05), + 0px 1px 4px rgba(0, 0, 0, 0.08); + border-radius: var(--content-border-radius); + padding: 1rem; + right: 2rem; + top: 4rem; + min-width: 15rem; + border: 1px solid var(--surface-border); + + .layout-topbar-menu-content { + gap: 0.5rem; + } + + .layout-topbar-action { + display: flex; + width: 100%; + height: auto; + justify-content: flex-start; + border-radius: var(--content-border-radius); + padding: 0.5rem 1rem; + + i { + font-size: 1rem; + margin-right: 0.5rem; + } + + span { + font-weight: medium; + display: block; + } + } + } + + .layout-topbar-menu-content { + flex-direction: column; + } + } +} diff --git a/src/assets/layout/_typography.scss b/src/assets/layout/_typography.scss new file mode 100644 index 0000000..b17bbc2 --- /dev/null +++ b/src/assets/layout/_typography.scss @@ -0,0 +1,68 @@ +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 1.5rem 0 1rem 0; + font-family: inherit; + font-weight: 700; + line-height: 1.5; + color: var(--text-color); + + &:first-child { + margin-top: 0; + } +} + +h1 { + font-size: 2.5rem; +} + +h2 { + font-size: 2rem; +} + +h3 { + font-size: 1.75rem; +} + +h4 { + font-size: 1.5rem; +} + +h5 { + font-size: 1.25rem; +} + +h6 { + font-size: 1rem; +} + +mark { + background: #fff8e1; + padding: 0.25rem 0.4rem; + border-radius: var(--content-border-radius); + font-family: monospace; +} + +blockquote { + margin: 1rem 0; + padding: 0 2rem; + border-left: 4px solid #90a4ae; +} + +hr { + border-top: solid var(--surface-border); + border-width: 1px 0 0 0; + margin: 1rem 0; +} + +p { + margin: 0 0 1rem 0; + line-height: 1.5; + + &:last-child { + margin-bottom: 0; + } +} diff --git a/src/assets/layout/_utils.scss b/src/assets/layout/_utils.scss new file mode 100644 index 0000000..6ccec88 --- /dev/null +++ b/src/assets/layout/_utils.scss @@ -0,0 +1,25 @@ +/* Utils */ +.clearfix:after { + content: ' '; + display: block; + clear: both; +} + +.card { + background: var(--surface-card); + padding: 2rem; + margin-bottom: 2rem; + border-radius: var(--content-border-radius); + + &:last-child { + margin-bottom: 0; + } +} + +.p-toast { + &.p-toast-top-right, + &.p-toast-top-left, + &.p-toast-top-center { + top: 100px; + } +} diff --git a/src/assets/layout/layout.scss b/src/assets/layout/layout.scss new file mode 100644 index 0000000..ce93b98 --- /dev/null +++ b/src/assets/layout/layout.scss @@ -0,0 +1,13 @@ +@use './variables/_common'; +@use './variables/_light'; +@use './variables/_dark'; +@use './_mixins'; +@use './_preloading'; +@use './_core'; +@use './_main'; +@use './_topbar'; +@use './_menu'; +@use './_footer'; +@use './_responsive'; +@use './_utils'; +@use './_typography'; diff --git a/src/assets/layout/variables/_common.scss b/src/assets/layout/variables/_common.scss new file mode 100644 index 0000000..2a040c2 --- /dev/null +++ b/src/assets/layout/variables/_common.scss @@ -0,0 +1,20 @@ +:root { + --primary-color: var(--p-primary-color); + --primary-contrast-color: var(--p-primary-contrast-color); + --text-color: var(--p-text-color); + --text-color-secondary: var(--p-text-muted-color); + --surface-border: var(--p-content-border-color); + --surface-card: var(--p-content-background); + --surface-hover: var(--p-content-hover-background); + --surface-overlay: var(--p-overlay-popover-background); + --transition-duration: var(--p-transition-duration); + --maskbg: var(--p-mask-background); + --content-border-radius: var(--p-content-border-radius); + --layout-section-transition-duration: 0.2s; + --element-transition-duration: var(--p-transition-duration); + --focus-ring-width: var(--p-focus-ring-width); + --focus-ring-style: var(--p-focus-ring-style); + --focus-ring-color: var(--p-focus-ring-color); + --focus-ring-offset: var(--p-focus-ring-offset); + --focus-ring-shadow: var(--p-focus-ring-shadow); +} diff --git a/src/assets/layout/variables/_dark.scss b/src/assets/layout/variables/_dark.scss new file mode 100644 index 0000000..bb91605 --- /dev/null +++ b/src/assets/layout/variables/_dark.scss @@ -0,0 +1,5 @@ +:root[class*='app-dark'] { + --surface-ground: var(--p-surface-950); + --code-background: var(--p-surface-800); + --code-color: var(--p-surface-100); +} diff --git a/src/assets/layout/variables/_light.scss b/src/assets/layout/variables/_light.scss new file mode 100644 index 0000000..aa3403c --- /dev/null +++ b/src/assets/layout/variables/_light.scss @@ -0,0 +1,5 @@ +:root { + --surface-ground: var(--p-surface-100); + --code-background: var(--p-surface-900); + --code-color: var(--p-surface-200); +} diff --git a/src/assets/styles.scss b/src/assets/styles.scss new file mode 100644 index 0000000..a0b7bbf --- /dev/null +++ b/src/assets/styles.scss @@ -0,0 +1,43 @@ +/* You can add global styles to this file, and also import other style files */ +@use './tailwind.css'; +@use './layout/layout.scss'; +@use 'primeicons/primeicons.css'; +@use './demo/demo.scss'; + +// Include theming for Angular Material with `mat.theme()`. +// This Sass mixin will define CSS variables that are used for styling Angular Material +// components according to the Material 3 design spec. +// Learn more about theming and how to use it for your application's +// custom components at https://material.angular.dev/guide/theming +@use '@angular/material' as mat; + +html { + @include mat.theme(( + color: ( + primary: mat.$cyan-palette, + tertiary: mat.$orange-palette, + ), + typography: Roboto, + density: 0, + )); +} + +body { + // Default the application to a light color theme. This can be changed to + // `dark` to enable the dark color theme, or to `light dark` to defer to the + // user's system settings. + color-scheme: light; + + // Set a default background, font and text colors for the application using + // Angular Material's system-level CSS variables. Learn more about these + // variables at https://material.angular.dev/guide/system-variables + background-color: var(--mat-sys-surface); + color: var(--mat-sys-on-surface); + font: var(--mat-sys-body-medium); + + // Reset the user agent margin. + margin: 0; +} + +html, body { height: 100%; } +body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/src/assets/tailwind.css b/src/assets/tailwind.css new file mode 100644 index 0000000..a820cb7 --- /dev/null +++ b/src/assets/tailwind.css @@ -0,0 +1,11 @@ +@import 'tailwindcss'; +@import 'tailwindcss-primeui'; +@custom-variant dark (&:where(.app-dark, .app-dark *)); + +@theme { + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --breakpoint-2xl: 1920px; +} \ No newline at end of file diff --git a/src/environments/environments.prod.ts b/src/environments/environments.prod.ts new file mode 100644 index 0000000..513229f --- /dev/null +++ b/src/environments/environments.prod.ts @@ -0,0 +1,23 @@ +const apiBaseUrl = 'https://skamp-api.iwomm.de'; +const keycloakBaseUrl = 'https://auth.iwommt.de'; +const keycloakRealm = 'skamp'; +const keycloakClientId = 'skamp-app'; + +export const environment = { + production: true, + bearerTokenUrlCondition: `^(${apiBaseUrl})(/.*)?$`, + apiBaseUrl: `${apiBaseUrl}/api/v1`, + keycloak: { + config: { + url: keycloakBaseUrl, + realm: keycloakRealm, + clientId: keycloakClientId, + }, + initOptions: { + onLoad: 'login-required', // 'check-sso' oder 'login-required' wenn sofort Login verlangt + silentCheckSsoRedirectUri: window.location.origin + '/silent-check-sso.html', + redirectUri: window.location.origin + '/' + }, + sessionTimeout: 60 // in minutes + } +}; diff --git a/src/environments/environments.staging.ts b/src/environments/environments.staging.ts new file mode 100644 index 0000000..b5c19f3 --- /dev/null +++ b/src/environments/environments.staging.ts @@ -0,0 +1,24 @@ +const apiBaseUrl = 'https://skamp-api.dev.localhost'; +const keycloakBaseUrl = 'https://auth.dev.localhost'; +const keycloakRealm = 'skamp'; +const keycloakClientId = 'skamp-app'; + + +export const environment = { + production: false, + bearerTokenUrlCondition: `^(${apiBaseUrl})(/.*)?$`, + apiBaseUrl: `${apiBaseUrl}/api/v1`, + keycloak: { + config: { + url: keycloakBaseUrl, + realm: keycloakRealm, + clientId: keycloakClientId, + }, + initOptions: { + onLoad: 'login-required', // 'check-sso' oder 'login-required' wenn sofort Login verlangt + silentCheckSsoRedirectUri: window.location.origin + '/silent-check-sso.html', + redirectUri: window.location.origin + '/' + }, + sessionTimeout: 60 // in minutes + } +}; diff --git a/src/environments/environments.ts b/src/environments/environments.ts new file mode 100644 index 0000000..317d6d9 --- /dev/null +++ b/src/environments/environments.ts @@ -0,0 +1,23 @@ +const apiBaseUrl = 'http://localhost:8080'; +const keycloakBaseUrl = 'http://localhost:8280'; +const keycloakRealm = 'skamp'; +const keycloakClientId = 'skamp-app'; + +export const environment = { + production: false, + bearerTokenUrlCondition: `^(${apiBaseUrl})(/.*)?$`, + apiBaseUrl: `${apiBaseUrl}/api/v1`, + keycloak: { + config: { + url: keycloakBaseUrl, + realm: keycloakRealm, + clientId: keycloakClientId, + }, + initOptions: { + onLoad: 'login-required', // 'check-sso' oder 'login-required' wenn sofort Login verlangt + silentCheckSsoRedirectUri: window.location.origin + '/silent-check-sso.html', + redirectUri: window.location.origin + '/' + }, + sessionTimeout: 60 // in minutes + } +}; diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..7f3d683 --- /dev/null +++ b/src/index.html @@ -0,0 +1,18 @@ + + + + + Sakai - PrimeNG + + + + + + + + + + + + + diff --git a/src/locale/messages.de.xlf b/src/locale/messages.de.xlf new file mode 100644 index 0000000..3f9a53b --- /dev/null +++ b/src/locale/messages.de.xlf @@ -0,0 +1,670 @@ + + + + + + Contacts + + src/app/pages/contacts/contacts.html + 4,5 + + + + Exportieren + + src/app/pages/contacts/contacts.html + 11 + + + src/app/pages/property-manager/property-manager.html + 8 + + + + Kontakt hinzufügen + + src/app/pages/contacts/contacts.html + 17 + + + + Search projects + + src/app/pages/contacts/contacts.html + 37,38 + + + src/app/pages/projects/projects.html + 134,135 + + + + Contacts total + + src/app/pages/contacts/contacts.html + 303,304 + + + + Persons + + src/app/pages/contacts/contacts.html + 318,319 + + + + Organisations + + src/app/pages/contacts/contacts.html + 333,334 + + + + With notes + + src/app/pages/contacts/contacts.html + 348,349 + + + + Letzte Aktivitäten + + src/app/pages/dashboard/components/activities-widget.component.ts + 11,12 + + + + HEUTE + + src/app/pages/dashboard/components/activities-widget.component.ts + 18,19 + + + + GESTERN + + src/app/pages/dashboard/components/activities-widget.component.ts + 45,46 + + + + LETZTE WOCHE + + src/app/pages/dashboard/components/activities-widget.component.ts + 60,61 + + + + Aktuelle Projekte + + src/app/pages/dashboard/components/current-projects-widget.component.ts + 15,16 + + + + Vorbereitung + + src/app/pages/dashboard/components/current-projects-widget.component.ts + 41 + + + src/app/pages/project-details/project-details.html + 37 + + + src/app/pages/projects/projects.html + 219 + + + src/app/pages/projects/projects.html + 242 + + + + Fortschritt: + + src/app/pages/dashboard/components/current-projects-widget.component.ts + 47,48 + + + + Gebäude verwaltet + + src/app/pages/dashboard/components/statswidget.ts + 12,13 + + + + Gesamt im Portfolio + + src/app/pages/dashboard/components/statswidget.ts + 19,20 + + + + Aktive Projekte + + src/app/pages/dashboard/components/statswidget.ts + 26,27 + + + + von 73 insgesamt + + src/app/pages/dashboard/components/statswidget.ts + 33,34 + + + + Kontakte + + src/app/pages/dashboard/components/statswidget.ts + 40,41 + + + + Projekte abgeschlossen + + src/app/pages/dashboard/components/statswidget.ts + 54,55 + + + + Erfolgreich beendet + + src/app/pages/dashboard/components/statswidget.ts + 61,62 + + + + Dashboard + + src/app/pages/dashboard/dashboard.ts + 11,12 + + + + Project details + + src/app/pages/project-details/project-details.html + 4,5 + + + + Bearbeiten + + src/app/pages/project-details/project-details.html + 9 + + + + Projektname + + src/app/pages/project-details/project-details.html + 31,32 + + + + Status + + src/app/pages/project-details/project-details.html + 36,37 + + + src/app/pages/projects/projects.html + 69,70 + + + src/app/pages/projects/projects.html + 164 + + + + Beantragte Summe + + src/app/pages/project-details/project-details.html + 41,42 + + + + Startdatum + + src/app/pages/project-details/project-details.html + 46,47 + + + + Vorgangsnummer + + src/app/pages/project-details/project-details.html + 53,54 + + + + Label + + src/app/pages/project-details/project-details.html + 58,59 + + + + Energieberatung NWG (Modul2) + + src/app/pages/project-details/project-details.html + 59 + + + src/app/pages/projects/projects.html + 220 + + + src/app/pages/projects/projects.html + 243 + + + src/app/pages/projects/projects.html + 275 + + + + Gebäude + + src/app/pages/project-details/project-details.html + 63,64 + + + + Enddatum + + src/app/pages/project-details/project-details.html + 68,69 + + + + Beschreibung + + src/app/pages/project-details/project-details.html + 77,78 + + + + Dokuemnt ansehen + + src/app/pages/project-details/project-details.html + 112 + + + + Projects + + src/app/pages/projects/projects.html + 4,5 + + + + Bericht erstellen + + src/app/pages/projects/projects.html + 11 + + + + Neues Projekt + + src/app/pages/projects/projects.html + 17 + + + + Add new project + + src/app/pages/projects/projects.html + 27 + + + + Project Name + + src/app/pages/projects/projects.html + 32,33 + + + + Event number + + src/app/pages/projects/projects.html + 42,43 + + + + Description + + src/app/pages/projects/projects.html + 51,52 + + + + Project Type + + src/app/pages/projects/projects.html + 60,61 + + + + Property + + src/app/pages/projects/projects.html + 78,79 + + + + Select a property + + src/app/pages/projects/projects.html + 87 + + + + Start / End dates + + src/app/pages/projects/projects.html + 102,103 + + + + Amount Requested + + src/app/pages/projects/projects.html + 111,112 + + + + Measures + + src/app/pages/projects/projects.html + 183,184 + + + + Aktiv + + src/app/pages/projects/projects.html + 274 + + + + Details + + src/app/pages/projects/projects.html + 353,354 + + + + project_status_preparation + + src/app/pages/projects/projects.html + 363 + + + + project_status_active + + src/app/pages/projects/projects.html + 366 + + + + project_status_completed + + src/app/pages/projects/projects.html + 369 + + + + project_status_problem + + src/app/pages/projects/projects.html + 372 + + + + project_type_energy_consulting_wg + + src/app/pages/projects/projects.html + 378 + + + + project_type_energy_consulting_nwg + + src/app/pages/projects/projects.html + 381 + + + + project_type_individual_measures + + src/app/pages/projects/projects.html + 384 + + + + project_type_efficiency_house_renovation + + src/app/pages/projects/projects.html + 387 + + + + project_type_efficiency_house_new_construction + + src/app/pages/projects/projects.html + 390 + + + + project_type_energy_performance_certificate + + src/app/pages/projects/projects.html + 393 + + + + project_type_specialist_planning_for_building_physics + + src/app/pages/projects/projects.html + 396 + + + + project_type_specialist_planning_for_heating + + src/app/pages/projects/projects.html + 399 + + + + project_type_certification + + src/app/pages/projects/projects.html + 402 + + + + Projects total + + src/app/pages/projects/projects.html + 433,434 + + + + Active + + src/app/pages/projects/projects.html + 448,449 + + + + Completed + + src/app/pages/projects/projects.html + 463,464 + + + + Amount requested in total + + src/app/pages/projects/projects.html + 478,479 + + + + Neu + + src/app/pages/property-manager/property-manager.html + 3 + + + + Löschen + + src/app/pages/property-manager/property-manager.html + 4 + + + + Verwalte Liegenschaften + + src/app/pages/property-manager/property-manager.html + 29,30 + + + + Suche... + + src/app/pages/property-manager/property-manager.html + 32,33 + + + + Name + + src/app/pages/property-manager/property-manager.html + 43,46 + + + + Straße + + src/app/pages/property-manager/property-manager.html + 47,50 + + + + Hausnummer + + src/app/pages/property-manager/property-manager.html + 51,54 + + + + Postleitzahl + + src/app/pages/property-manager/property-manager.html + 55,58 + + + + Stadt + + src/app/pages/property-manager/property-manager.html + 59,62 + + + + Land + + src/app/pages/property-manager/property-manager.html + 63,66 + + + + Liegenschaft Details + + src/app/pages/property-manager/property-manager.html + 93 + + + + Name + + src/app/pages/property-manager/property-manager.html + 99,100 + + + + Straße + + src/app/pages/property-manager/property-manager.html + 109,110 + + + + Hausnummer + + src/app/pages/property-manager/property-manager.html + 116,117 + + + + Postleitzahl + + src/app/pages/property-manager/property-manager.html + 127,128 + + + + Stadt + + src/app/pages/property-manager/property-manager.html + 134,135 + + + + Land + + src/app/pages/property-manager/property-manager.html + 144,145 + + + + Bemerkungen + + src/app/pages/property-manager/property-manager.html + 176,177 + + + + Anhänge + + src/app/pages/property-manager/property-manager.html + 188 + + + + Abbrechen + + src/app/pages/property-manager/property-manager.html + 212 + + + + Speichern + + src/app/pages/property-manager/property-manager.html + 213 + + + + + diff --git a/src/locale/messages.en.xlf b/src/locale/messages.en.xlf new file mode 100644 index 0000000..4798273 --- /dev/null +++ b/src/locale/messages.en.xlf @@ -0,0 +1,156 @@ + + + + + + Neu + New + + src/app/pages/property-manager/property-manager.html + 3 + + + + Löschen + Delete + + src/app/pages/property-manager/property-manager.html + 4 + + + + Exportieren + + src/app/pages/property-manager/property-manager.html + 8 + + + + Verwalte Liegenschaften + + src/app/pages/property-manager/property-manager.html + 29,30 + + + + Suche... + + src/app/pages/property-manager/property-manager.html + 32,33 + + + + Name + + src/app/pages/property-manager/property-manager.html + 43,46 + + + + Straße + + src/app/pages/property-manager/property-manager.html + 47,50 + + + + Hausnummer + + src/app/pages/property-manager/property-manager.html + 51,54 + + + + Postleitzahl + + src/app/pages/property-manager/property-manager.html + 55,58 + + + + Stadt + + src/app/pages/property-manager/property-manager.html + 59,62 + + + + Land + + src/app/pages/property-manager/property-manager.html + 63,66 + + + + Liegenschaft Details + + src/app/pages/property-manager/property-manager.html + 93 + + + + Name + + src/app/pages/property-manager/property-manager.html + 99,100 + + + + Straße + + src/app/pages/property-manager/property-manager.html + 109,110 + + + + Hausnummer + + src/app/pages/property-manager/property-manager.html + 116,117 + + + + Postleitzahl + + src/app/pages/property-manager/property-manager.html + 127,128 + + + + Stadt + + src/app/pages/property-manager/property-manager.html + 134,135 + + + + Land + + src/app/pages/property-manager/property-manager.html + 144,145 + + + + Bemerkungen + + src/app/pages/property-manager/property-manager.html + 176,177 + + + + Abbrechen + + src/app/pages/property-manager/property-manager.html + 188 + + + + Speichern + + src/app/pages/property-manager/property-manager.html + 189 + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..7477312 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,7 @@ +/// + +import { bootstrapApplication } from '@angular/platform-browser'; +import { appConfig } from './app.config'; +import { AppComponent } from './app.component'; + +bootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err)); diff --git a/start-dev-server.sh b/start-dev-server.sh new file mode 100755 index 0000000..773fbb1 --- /dev/null +++ b/start-dev-server.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +ng serve --configuration=dev-de diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..35f07b9 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,17 @@ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [ + "@angular/localize" + ] + }, + "files": [ + "src/main.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..163b8d8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,33 @@ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "skipLibCheck": true, + "isolatedModules": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "moduleResolution": "bundler", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "baseUrl": "./", + "paths": { + "@/*": [ + "src/app/*" + ] + } + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/tsconfig.spec.json b/tsconfig.spec.json new file mode 100644 index 0000000..1d1164a --- /dev/null +++ b/tsconfig.spec.json @@ -0,0 +1,16 @@ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine", + "@angular/localize" + ] + }, + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..8354eef --- /dev/null +++ b/vercel.json @@ -0,0 +1,9 @@ +{ + "rewrites": [ + { + "source": "/:path*", + "destination": "/index.html" + } + ], + "trailingSlash": false +} \ No newline at end of file