diff --git a/jest.config.js b/jest.config.js index c7519943d6d0..4b9ce7081613 100644 --- a/jest.config.js +++ b/jest.config.js @@ -96,10 +96,10 @@ module.exports = { coverageThreshold: { global: { // TODO: in the future, the following values should increase to at least 90% - statements: 89.13, - branches: 75.16, - functions: 82.94, - lines: 89.21, + statements: 89.61, + branches: 75.83, + functions: 83.50, + lines: 89.68, }, }, // 'json-summary' reporter is used by supporting_scripts/code-coverage/module-coverage-client/check-client-module-coverage.mjs diff --git a/package-lock.json b/package-lock.json index 7acd906a2574..54d96d8a67f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,38 +10,38 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@angular/animations": "19.2.14", - "@angular/cdk": "19.2.18", - "@angular/common": "19.2.14", - "@angular/compiler": "19.2.14", - "@angular/core": "19.2.14", - "@angular/forms": "19.2.14", - "@angular/localize": "19.2.14", - "@angular/material": "19.2.18", - "@angular/platform-browser": "19.2.14", - "@angular/platform-browser-dynamic": "19.2.14", - "@angular/router": "19.2.14", - "@angular/service-worker": "19.2.14", + "@angular/animations": "20.1.2", + "@angular/cdk": "20.1.2", + "@angular/common": "20.1.2", + "@angular/compiler": "20.1.2", + "@angular/core": "20.1.2", + "@angular/forms": "20.1.2", + "@angular/localize": "20.1.2", + "@angular/material": "20.1.2", + "@angular/platform-browser": "20.1.2", + "@angular/platform-browser-dynamic": "20.1.2", + "@angular/router": "20.1.2", + "@angular/service-worker": "20.1.2", "@ctrl/ngx-emoji-mart": "9.2.0", - "@danielmoncada/angular-datetime-picker": "19.1.2", + "@danielmoncada/angular-datetime-picker": "20.0.0", "@fingerprintjs/fingerprintjs": "4.6.2", - "@fortawesome/angular-fontawesome": "1.0.0", + "@fortawesome/angular-fontawesome": "2.0.1", "@fortawesome/fontawesome-svg-core": "6.7.2", "@fortawesome/free-regular-svg-icons": "6.7.2", "@fortawesome/free-solid-svg-icons": "6.7.2", "@ls1intum/apollon": "3.4.0", - "@ng-bootstrap/ng-bootstrap": "18.0.0", + "@ng-bootstrap/ng-bootstrap": "19.0.1", "@ngx-translate/core": "16.0.4", "@ngx-translate/http-loader": "16.0.1", - "@sentry/angular": "9.32.0", - "@siemens/ngx-datatable": "22.4.1", - "@swimlane/ngx-charts": "22.0.0", - "@swimlane/ngx-graph": "10.0.0", - "@vscode/codicons": "0.0.36", - "@vscode/markdown-it-katex": "1.1.1", + "@sentry/angular": "9.40.0", + "@siemens/ngx-datatable": "24.1.0", + "@swimlane/ngx-charts": "23.0.0-alpha.0", + "@swimlane/ngx-graph": "11.0.0-alpha.0", + "@vscode/codicons": "0.0.38", + "@vscode/markdown-it-katex": "1.1.2", "bootstrap": "5.3.7", "compare-versions": "6.1.1", - "core-js": "3.43.0", + "core-js": "3.44.0", "crypto-js": "4.2.0", "dayjs": "1.11.13", "diff-match-patch-typescript": "1.1.0", @@ -62,13 +62,13 @@ "markdown-it-highlightjs": "4.2.0", "mobile-drag-drop": "3.0.0-rc.0", "monaco-editor": "0.52.2", - "ngx-infinite-scroll": "19.0.0", + "ngx-infinite-scroll": "20.0.0", "ngx-webstorage": "19.0.1", "pako": "2.1.0", "papaparse": "5.5.3", "pdf-lib": "1.17.1", - "pdfjs-dist": "5.3.31", - "primeng": "19.1.3", + "pdfjs-dist": "5.3.93", + "primeng": "20.0.0", "rxjs": "7.8.2", "simple-statistics": "7.8.8", "smoothscroll-polyfill": "0.4.4", @@ -82,18 +82,19 @@ "zone.js": "0.15.1" }, "devDependencies": { - "@analogjs/vite-plugin-angular": "1.19.0", - "@angular-builders/jest": "19.0.1", - "@angular-eslint/builder": "19.8.0", - "@angular-eslint/eslint-plugin": "19.8.0", - "@angular-eslint/eslint-plugin-template": "19.8.0", - "@angular-eslint/schematics": "19.8.0", - "@angular-eslint/template-parser": "19.8.0", - "@angular/build": "19.2.15", - "@angular/cli": "19.2.15", - "@angular/compiler-cli": "19.2.14", - "@angular/language-service": "19.2.14", - "@sentry/types": "9.32.0", + "@analogjs/vite-plugin-angular": "1.19.1", + "@angular-builders/jest": "20.0.0", + "@angular-devkit/build-angular": "20.1.1", + "@angular-eslint/builder": "20.1.1", + "@angular-eslint/eslint-plugin": "20.1.1", + "@angular-eslint/eslint-plugin-template": "20.1.1", + "@angular-eslint/schematics": "20.1.1", + "@angular-eslint/template-parser": "20.1.1", + "@angular/build": "20.1.1", + "@angular/cli": "20.1.1", + "@angular/compiler-cli": "20.1.2", + "@angular/language-service": "20.1.2", + "@sentry/types": "9.40.0", "@testing-library/angular": "17.4.0", "@types/crypto-js": "4.2.2", "@types/d3-shape": "3.1.7", @@ -101,21 +102,21 @@ "@types/jest": "29.5.14", "@types/lodash-es": "4.17.12", "@types/markdown-it": "14.1.2", - "@types/node": "22.15.31", + "@types/node": "22.15.33", "@types/pako": "2.0.3", "@types/papaparse": "5.3.16", "@types/smoothscroll-polyfill": "0.3.4", "@types/turndown": "5.0.5", "@types/uuid": "10.0.0", - "@typescript-eslint/eslint-plugin": "8.35.0", - "@typescript-eslint/parser": "8.35.0", - "@typescript-eslint/utils": "8.35.0", - "angular-eslint": "19.8.0", + "@typescript-eslint/eslint-plugin": "8.37.0", + "@typescript-eslint/parser": "8.37.0", + "@typescript-eslint/utils": "8.37.0", + "angular-eslint": "20.1.1", "cross-env": "7.0.3", - "eslint": "9.29.0", + "eslint": "9.31.0", "eslint-config-prettier": "10.1.5", "eslint-plugin-deprecation": "3.0.0", - "eslint-plugin-jest": "28.13.5", + "eslint-plugin-jest": "29.0.1", "eslint-plugin-jest-extended": "3.0.0", "eslint-plugin-prettier": "5.5.1", "folder-hash": "4.1.1", @@ -123,19 +124,19 @@ "jest": "29.7.0", "jest-canvas-mock": "2.5.2", "jest-date-mock": "1.0.10", - "jest-extended": "5.0.3", + "jest-extended": "6.0.0", "jest-fail-on-console": "3.3.1", "jest-junit": "16.0.0", "jest-preset-angular": "14.6.0", "lint-staged": "16.1.2", "ng-mocks": "14.13.5", "patch-package": "8.0.0", - "prettier": "3.6.1", + "prettier": "3.6.2", "rimraf": "6.0.1", "sass": "1.89.2", "ts-jest": "29.4.0", "typescript": "5.8.3", - "typescript-eslint": "8.35.0", + "typescript-eslint": "8.37.0", "vite-tsconfig-paths": "5.1.4", "vitest": "3.2.4", "weak-napi": "2.0.2" @@ -145,6 +146,199 @@ "npm": ">=10.9.2" } }, + "node_modules/@algolia/client-abtesting": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.32.0.tgz", + "integrity": "sha512-HG/6Eib6DnJYm/B2ijWFXr4txca/YOuA4K7AsEU0JBrOZSB+RU7oeDyNBPi3c0v0UDDqlkBqM3vBU/auwZlglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0", + "@algolia/requester-browser-xhr": "5.32.0", + "@algolia/requester-fetch": "5.32.0", + "@algolia/requester-node-http": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.32.0.tgz", + "integrity": "sha512-8Y9MLU72WFQOW3HArYv16+Wvm6eGmsqbxxM1qxtm0hvSASJbxCm+zQAZe5stqysTlcWo4BJ82KEH1PfgHbJAmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0", + "@algolia/requester-browser-xhr": "5.32.0", + "@algolia/requester-fetch": "5.32.0", + "@algolia/requester-node-http": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.32.0.tgz", + "integrity": "sha512-w8L+rgyXMCPBKmEdOT+RfgMrF0mT6HK60vPYWLz8DBs/P7yFdGo7urn99XCJvVLMSKXrIbZ2FMZ/i50nZTXnuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.32.0.tgz", + "integrity": "sha512-AdWfynhUeX7jz/LTiFU3wwzJembTbdLkQIOLs4n7PyBuxZ3jz4azV1CWbIP8AjUOFmul6uXbmYza+KqyS5CzOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0", + "@algolia/requester-browser-xhr": "5.32.0", + "@algolia/requester-fetch": "5.32.0", + "@algolia/requester-node-http": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.32.0.tgz", + "integrity": "sha512-bTupJY4xzGZYI4cEQcPlSjjIEzMvv80h7zXGrXY1Y0KC/n/SLiMv84v7Uy+B6AG1Kiy9FQm2ADChBLo1uEhGtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0", + "@algolia/requester-browser-xhr": "5.32.0", + "@algolia/requester-fetch": "5.32.0", + "@algolia/requester-node-http": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.32.0.tgz", + "integrity": "sha512-if+YTJw1G3nDKL2omSBjQltCHUQzbaHADkcPQrGFnIGhVyHU3Dzq4g46uEv8mrL5sxL8FjiS9LvekeUlL2NRqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0", + "@algolia/requester-browser-xhr": "5.32.0", + "@algolia/requester-fetch": "5.32.0", + "@algolia/requester-node-http": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.32.0.tgz", + "integrity": "sha512-kmK5nVkKb4DSUgwbveMKe4X3xHdMsPsOVJeEzBvFJ+oS7CkBPmpfHAEq+CcmiPJs20YMv6yVtUT9yPWL5WgAhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0", + "@algolia/requester-browser-xhr": "5.32.0", + "@algolia/requester-fetch": "5.32.0", + "@algolia/requester-node-http": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.32.0.tgz", + "integrity": "sha512-PZTqjJbx+fmPuT2ud1n4vYDSF1yrT//vOGI9HNYKNA0PM0xGUBWigf5gRivHsXa3oBnUlTyHV9j7Kqx5BHbVHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0", + "@algolia/requester-browser-xhr": "5.32.0", + "@algolia/requester-fetch": "5.32.0", + "@algolia/requester-node-http": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.32.0.tgz", + "integrity": "sha512-kYYoOGjvNQAmHDS1v5sBj+0uEL9RzYqH/TAdq8wmcV+/22weKt/fjh+6LfiqkS1SCZFYYrwGnirrUhUM36lBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0", + "@algolia/requester-browser-xhr": "5.32.0", + "@algolia/requester-fetch": "5.32.0", + "@algolia/requester-node-http": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.32.0.tgz", + "integrity": "sha512-jyIBLdskjPAL7T1g57UMfUNx+PzvYbxKslwRUKBrBA6sNEsYCFdxJAtZSLUMmw6MC98RDt4ksmEl5zVMT5bsuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0", + "@algolia/requester-browser-xhr": "5.32.0", + "@algolia/requester-fetch": "5.32.0", + "@algolia/requester-node-http": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.32.0.tgz", + "integrity": "sha512-eDp14z92Gt6JlFgiexImcWWH+Lk07s/FtxcoDaGrE4UVBgpwqOO6AfQM6dXh1pvHxlDFbMJihHc/vj3gBhPjqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.32.0.tgz", + "integrity": "sha512-rnWVglh/K75hnaLbwSc2t7gCkbq1ldbPgeIKDUiEJxZ4mlguFgcltWjzpDQ/t1LQgxk9HdIFcQfM17Hid3aQ6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.32.0.tgz", + "integrity": "sha512-LbzQ04+VLkzXY4LuOzgyjqEv/46Gwrk55PldaglMJ4i4eDXSRXGKkwJpXFwsoU+c1HMQlHIyjJBhrfsfdyRmyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -159,9 +353,9 @@ } }, "node_modules/@analogjs/vite-plugin-angular": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@analogjs/vite-plugin-angular/-/vite-plugin-angular-1.19.0.tgz", - "integrity": "sha512-89DroTDX+Ndpsag5BF/H49jQXshb/Oec4tPiEFqYtHHX2FAQ7Zl5YZoXe41ECabZgYJJ5uRLlPrSqq40OmIL+A==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@analogjs/vite-plugin-angular/-/vite-plugin-angular-1.19.1.tgz", + "integrity": "sha512-bl38MZtcP4xuT5+HgdL3H4zNMXlUjLSkk8zONw7bccNozWWxHKzI5u81AacFYjB7SYXR6Z3cWDYMEtVXZO5f2A==", "dev": true, "license": "MIT", "dependencies": { @@ -186,231 +380,158 @@ } }, "node_modules/@angular-builders/common": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@angular-builders/common/-/common-3.0.1.tgz", - "integrity": "sha512-AIIqWtlr3sc2+CTEOqbDsrpVvkT6ijfYzvzPk1HLFrcP9Y2tYLXVFc+gGThlE+e1Om0pKminXcINEqm3J/yY5g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@angular-builders/common/-/common-4.0.0.tgz", + "integrity": "sha512-bepZI1KdXUVhDGqHOudZQJwucSbZWxfWzM+EHFXUoExUO0u7XEuHTF5bhtQZ+YU+ZK2Ayl26QbI/26Yj72vcFQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "^19.0.0", + "@angular-devkit/core": "^20.0.0", "ts-node": "^10.0.0", - "tsconfig-paths": "^4.1.0" + "tsconfig-paths": "^4.2.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/@angular-builders/jest": { - "version": "19.0.1", - "resolved": "https://registry.npmjs.org/@angular-builders/jest/-/jest-19.0.1.tgz", - "integrity": "sha512-mi4HMQkyb1Z+pPRIKt70Uk/EBoDUirPqhv3xlz1/WpPqpxXz8y+Y3ffutot4JJDmzJw2p4h3x2hh6D3Kbocraw==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@angular-builders/jest/-/jest-20.0.0.tgz", + "integrity": "sha512-3rnobnIdErtjyM3yAAAOdod79lgbkf1QWMFHiRDHW4tw4f+DLFiM2HMFircCoO5WIe/ILEJE9GNxs/vvYa3gvw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-builders/common": "3.0.1", - "@angular-devkit/architect": ">=0.1900.0 < 0.2000.0", - "@angular-devkit/core": "^19.0.0", - "jest-preset-angular": "14.5.4", + "@angular-builders/common": "4.0.0", + "@angular-devkit/architect": ">=0.2000.0 < 0.2100.0", + "@angular-devkit/core": "^20.0.0", + "jest-preset-angular": "14.6.0", "lodash": "^4.17.15" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular-devkit/build-angular": "^19.0.0", - "@angular/compiler-cli": "^19.0.0", - "@angular/core": "^19.0.0", - "@angular/platform-browser-dynamic": "^19.0.0", + "@angular-devkit/build-angular": "^20.0.0", + "@angular/compiler-cli": "^20.0.0", + "@angular/core": "^20.0.0", + "@angular/platform-browser-dynamic": "^20.0.0", "jest": ">=29" } }, - "node_modules/@angular-builders/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@angular-builders/jest/node_modules/jest-preset-angular": { - "version": "14.5.4", - "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-14.5.4.tgz", - "integrity": "sha512-vbil9qTrZljzVJNsDIxEhWVb4r6BQumXEgIHCAVkHJjpF1fYkIB4bczPAe58lBZH2gKeRHBSj8/IoGpGBI1qiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "esbuild-wasm": ">=0.15.13", - "jest-environment-jsdom": "^29.7.0", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0", - "ts-jest": "^29.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "optionalDependencies": { - "esbuild": ">=0.15.13" - }, - "peerDependencies": { - "@angular/compiler-cli": ">=15.0.0 <20.0.0", - "@angular/core": ">=15.0.0 <20.0.0", - "@angular/platform-browser-dynamic": ">=15.0.0 <20.0.0", - "jest": "^29.0.0", - "jsdom": ">=20.0.0", - "typescript": ">=4.8" - }, - "peerDependenciesMeta": { - "jsdom": { - "optional": true - } - } - }, - "node_modules/@angular-builders/jest/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@angular-builders/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, "node_modules/@angular-devkit/architect": { - "version": "0.1902.15", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1902.15.tgz", - "integrity": "sha512-RbqhStc6ZoRv57ZqLB36VOkBkAdU3nNezCvIs0AJV5V4+vLPMrb0hpIB0sF+9yMlMjWsolnRsj0/Fil+zQG3bw==", + "version": "0.2001.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2001.1.tgz", + "integrity": "sha512-jU+fvaiS5bjh3znpHLEeKQIYb+ZVKNP0xRu3+E9EmweyG4E8AdvZnLvKTe61Ikhul2zBTFBUv46er7CHjAGEEg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.2.15", - "rxjs": "7.8.1" + "@angular-devkit/core": "20.1.1", + "rxjs": "7.8.2" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "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/architect/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-angular": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-19.2.15.tgz", - "integrity": "sha512-mqudAcyrSp/E7ZQdQoHfys0/nvQuwyJDaAzj3qL3HUStuUzb5ULNOj2f6sFBo+xYo+/WT8IzmzDN9DCqDgvFaA==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.1.1.tgz", + "integrity": "sha512-a14mMnb5jpG9AtetW1IdGLVgb39aCdPXVTraCoBdiIY+TvKBnBb+zqDYCwytyXL7Q6aascVwl7QF2DHvWziyOQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1902.15", - "@angular-devkit/build-webpack": "0.1902.15", - "@angular-devkit/core": "19.2.15", - "@angular/build": "19.2.15", - "@babel/core": "7.26.10", - "@babel/generator": "7.26.10", - "@babel/helper-annotate-as-pure": "7.25.9", + "@angular-devkit/architect": "0.2001.1", + "@angular-devkit/build-webpack": "0.2001.1", + "@angular-devkit/core": "20.1.1", + "@angular/build": "20.1.1", + "@babel/core": "7.27.7", + "@babel/generator": "7.27.5", + "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-transform-async-generator-functions": "7.26.8", - "@babel/plugin-transform-async-to-generator": "7.25.9", - "@babel/plugin-transform-runtime": "7.26.10", - "@babel/preset-env": "7.26.9", - "@babel/runtime": "7.26.10", + "@babel/plugin-transform-async-generator-functions": "7.27.1", + "@babel/plugin-transform-async-to-generator": "7.27.1", + "@babel/plugin-transform-runtime": "7.27.4", + "@babel/preset-env": "7.27.2", + "@babel/runtime": "7.27.6", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "19.2.15", - "@vitejs/plugin-basic-ssl": "1.2.0", + "@ngtools/webpack": "20.1.1", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.20", - "babel-loader": "9.2.1", + "autoprefixer": "10.4.21", + "babel-loader": "10.0.0", "browserslist": "^4.21.5", - "copy-webpack-plugin": "12.0.2", + "copy-webpack-plugin": "13.0.0", "css-loader": "7.1.2", - "esbuild-wasm": "0.25.4", + "esbuild-wasm": "0.25.5", "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.2.2", - "less-loader": "12.2.0", + "less": "4.3.0", + "less-loader": "12.3.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", "mini-css-extract-plugin": "2.9.2", - "open": "10.1.0", - "ora": "5.4.1", + "open": "10.1.2", + "ora": "8.2.0", "picomatch": "4.0.2", - "piscina": "4.8.0", - "postcss": "8.5.2", + "piscina": "5.1.2", + "postcss": "8.5.6", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", - "rxjs": "7.8.1", - "sass": "1.85.0", + "rxjs": "7.8.2", + "sass": "1.89.2", "sass-loader": "16.0.5", - "semver": "7.7.1", + "semver": "7.7.2", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.39.0", + "terser": "5.43.1", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.98.0", + "webpack": "5.99.9", "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": "^18.19.1 || ^20.11.1 || >=22.0.0", + "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.4" + "esbuild": "0.25.5" }, "peerDependencies": { - "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0", - "@angular/localize": "^19.0.0 || ^19.2.0-next.0", - "@angular/platform-server": "^19.0.0 || ^19.2.0-next.0", - "@angular/service-worker": "^19.0.0 || ^19.2.0-next.0", - "@angular/ssr": "^19.2.15", + "@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.1.1", "@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": "^19.0.0 || ^19.2.0-next.0", + "ng-packagr": "^20.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "typescript": ">=5.5 <5.9" + "typescript": ">=5.8 <5.9" }, "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, "@angular/localize": { "optional": true }, + "@angular/platform-browser": { + "optional": true + }, "@angular/platform-server": { "optional": true }, @@ -446,52 +567,18 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/sass": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.0.tgz", - "integrity": "sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==", - "dev": true, - "license": "MIT", - "peer": true, - "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/@angular-devkit/build-webpack": { - "version": "0.1902.15", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1902.15.tgz", - "integrity": "sha512-pIfZeizWsViXx8bsMoBLZw7Tl7uFf7bM7hAfmNwk0bb0QGzx5k1BiW6IKWyaG+Dg6U4UCrlNpIiut2b78HwQZw==", + "version": "0.2001.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2001.1.tgz", + "integrity": "sha512-+UOleFjtW/OxehjaR+y4gFzNgVXdkhXcTC1XxiyeCr/ElQ8EBWMEYKBs/+QWTZqNJ/HSbZG4MnpGWl5djka1jw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@angular-devkit/architect": "0.1902.15", - "rxjs": "7.8.1" + "@angular-devkit/architect": "0.2001.1", + "rxjs": "7.8.2" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, @@ -500,21 +587,10 @@ "webpack-dev-server": "^5.0.2" } }, - "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/core": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.15.tgz", - "integrity": "sha512-pU2RZYX6vhd7uLSdLwPnuBcr0mXJSjp3EgOXKsrlQFQZevc+Qs+2JdXgIElnOT/aDqtRtriDmLlSbtdE8n3ZbA==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.1.1.tgz", + "integrity": "sha512-5rKL/WfMhZOi0MyYWXK95kPwxSd7zhZieyo3Idtg0B1VMFP4jIa4jRkV7uz55HRPOl5/kK3aIrsxgtKuxQg50Q==", "dev": true, "license": "MIT", "dependencies": { @@ -522,11 +598,11 @@ "ajv-formats": "3.0.1", "jsonc-parser": "3.3.1", "picomatch": "4.0.2", - "rxjs": "7.8.1", + "rxjs": "7.8.2", "source-map": "0.7.4" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, @@ -539,54 +615,34 @@ } } }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/schematics": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.15.tgz", - "integrity": "sha512-kNOJ+3vekJJCQKWihNmxBkarJzNW09kP5a9E1SRNiQVNOUEeSwcRR0qYotM65nx821gNzjjhJXnAZ8OazWldrg==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.1.1.tgz", + "integrity": "sha512-G87e0u3V9E2iqwoV8nBIuLNtMUAnb/A62LNq9eTJguyVEC0HSRWQnByhUvmv6mlABLa4worZJnE5vMbXW1LeQg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.2.15", + "@angular-devkit/core": "20.1.1", "jsonc-parser": "3.3.1", "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" + "ora": "8.2.0", + "rxjs": "7.8.2" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "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/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-eslint/builder": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-19.8.0.tgz", - "integrity": "sha512-+sDe92BpzlxNZWFuBbKD1L8xsW/dyOU+acPn4V84Vn55XMdhrBWOwDX7oxmBCOwuVTrS3mgHz7d22J1sdNwySw==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-20.1.1.tgz", + "integrity": "sha512-pfCYfocX79CZ5nokZF4gVScUGyLWRKQHZsUkQ5V/1hsaGsahvzDRjxsYz0J9rO0ligSa2pwgUCXEwSY8hhHQBw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": ">= 0.1900.0 < 0.2000.0", - "@angular-devkit/core": ">= 19.0.0 < 20.0.0" + "@angular-devkit/architect": ">= 0.2000.0 < 0.2100.0", + "@angular-devkit/core": ">= 20.0.0 < 21.0.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", @@ -594,21 +650,22 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-19.8.0.tgz", - "integrity": "sha512-nschDOyrAZPwS2mdC63pAf6vtVRZJ81imnosziOTx5jh1TTEwYdmFpfLA3LBvZUMkwDxkFOjxrMyl/k+c+oLBw==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-20.1.1.tgz", + "integrity": "sha512-hEWh/upyTj2bhyRmbNnGtlOXhBSEHwLg8/9YYhwmiNApQwKcvcg7lkstZMEVrKievNHZT6Wh4dWZvjRjMqLNSg==", "dev": true, "license": "MIT" }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-19.8.0.tgz", - "integrity": "sha512-4wmMopW9mEum3MI865WkWiVvQ7/Ia691LO006zr7Hp6VB+4+zzxZW4CH7X6tuxE2DMVILlU5fsSjR04ex9vuew==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-20.1.1.tgz", + "integrity": "sha512-h+D6T35UGIuG0keYPH7dc6OTdfTVJ8GoIhCIpoAmVGhdIdfXIISvDvvX/QPiZtTcefik3vEZEGRiI/Nzc5xImw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.8.0", - "@angular-eslint/utils": "19.8.0" + "@angular-eslint/bundled-angular-compiler": "20.1.1", + "@angular-eslint/utils": "20.1.1", + "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -617,19 +674,19 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-19.8.0.tgz", - "integrity": "sha512-LXruJuwmRwJR6wfCq1wRxtGeF8lZQFNnS4GHNaRB7BRqYisPQXHsHT8EAnNf2eDwIkkq4TzZC0EfC6eaLlsh0A==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-20.1.1.tgz", + "integrity": "sha512-dRqfxYvgOC4DZqvRTmxoIUMeIqTzcIkRcMVEuP8qvR10KHAWDkV7xT4f7BAee9deI/lzoAk3tk5wkQg6POQo7Q==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.8.0", - "@angular-eslint/utils": "19.8.0", + "@angular-eslint/bundled-angular-compiler": "20.1.1", + "@angular-eslint/utils": "20.1.1", "aria-query": "5.3.2", "axobject-query": "4.1.0" }, "peerDependencies": { - "@angular-eslint/template-parser": "19.8.0", + "@angular-eslint/template-parser": "20.1.1", "@typescript-eslint/types": "^7.11.0 || ^8.0.0", "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", "eslint": "^8.57.0 || ^9.0.0", @@ -637,29 +694,29 @@ } }, "node_modules/@angular-eslint/schematics": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-19.8.0.tgz", - "integrity": "sha512-jBzRioyfFb8ikhtvQHeSmtc48YhNw+Kb4LN/DqTvPm0dYeWqz8qpIVlUdKUT7wcC46i0vfILjMCSbWEnkRjHiA==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-20.1.1.tgz", + "integrity": "sha512-4sXU0Gr/RhdW3xSBFRzjhTO9mk6ugXUhUIPc1FRta1pmNnbmkvx22ewnKZE8IeRl8PMyk6xJuxZHq19CW1oWOA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": ">= 19.0.0 < 20.0.0", - "@angular-devkit/schematics": ">= 19.0.0 < 20.0.0", - "@angular-eslint/eslint-plugin": "19.8.0", - "@angular-eslint/eslint-plugin-template": "19.8.0", + "@angular-devkit/core": ">= 20.0.0 < 21.0.0", + "@angular-devkit/schematics": ">= 20.0.0 < 21.0.0", + "@angular-eslint/eslint-plugin": "20.1.1", + "@angular-eslint/eslint-plugin-template": "20.1.1", "ignore": "7.0.5", "semver": "7.7.2", "strip-json-comments": "3.1.1" } }, "node_modules/@angular-eslint/template-parser": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-19.8.0.tgz", - "integrity": "sha512-43hWc14pMc0LkqBD+ui7uF6NTUVpNrVnUSQqNCYsn3aoXeOdXKgKQEeBUhotKlxAOyAQjAet0tU24+IAW0xwkw==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-20.1.1.tgz", + "integrity": "sha512-giIMYORf8P8MbBxh6EUfiR/7Y+omxJtK2C7a8lYTtLSOIGO0D8c8hXx9hTlPcdupVX+xZXDuZ85c9JDen+JSSA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.8.0", + "@angular-eslint/bundled-angular-compiler": "20.1.1", "eslint-scope": "^8.0.2" }, "peerDependencies": { @@ -668,13 +725,13 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-19.8.0.tgz", - "integrity": "sha512-ue3seSy4b+H5MN/m1m0SgyWr0XpDjfkGwyYo+uz2bhxpCyhZNzTBKeNRPkTTs+yeq9NhSKEhjvgUSA2nK5LqmA==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-20.1.1.tgz", + "integrity": "sha512-hqbzGqa/0Ua90r4TMn4oZVnLuwIF6dqEfH7SlstB224h/7+nKoi67aHkmUq7VItWXpDDe+f1opeR01GKS9fNog==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.8.0" + "@angular-eslint/bundled-angular-compiler": "20.1.1" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -683,81 +740,91 @@ } }, "node_modules/@angular/animations": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.2.14.tgz", - "integrity": "sha512-xhl8fLto5HHJdVj8Nb6EoBEiTAcXuWDYn1q5uHcGxyVH3kiwENWy/2OQXgCr2CuWo2e6hNUGzSLf/cjbsMNqEA==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.1.2.tgz", + "integrity": "sha512-r1JnNXZEg2Rrz53Mr4D4/S7v6ozZ3FPzJJo38lDq2WJKSkKc09R9fjFWIB/rXwEXUuiWEfNfxx+O4g6rrbXWWA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "19.2.14", - "@angular/core": "19.2.14" + "@angular/common": "20.1.2", + "@angular/core": "20.1.2" } }, "node_modules/@angular/build": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.2.15.tgz", - "integrity": "sha512-iE4fp4d5ALu702uoL6/YkjM2JlGEXZ5G+RVzq3W2jg/Ft6ISAQnRKB6mymtetDD6oD7i87e8uSu9kFVNBauX2w==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.1.1.tgz", + "integrity": "sha512-N9tKfHatZEdy/uGX9atJQKVIejAvRbOMwpBj9Z5Y2RtR2vTDOOm0q86OYQW8baK19b2/HkHRe6PSPeiHpTG+8g==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1902.15", - "@babel/core": "7.26.10", - "@babel/helper-annotate-as-pure": "7.25.9", + "@angular-devkit/architect": "0.2001.1", + "@babel/core": "7.27.7", + "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-syntax-import-attributes": "7.26.0", - "@inquirer/confirm": "5.1.6", - "@vitejs/plugin-basic-ssl": "1.2.0", - "beasties": "0.3.2", + "@inquirer/confirm": "5.1.13", + "@vitejs/plugin-basic-ssl": "2.1.0", + "beasties": "0.3.4", "browserslist": "^4.23.0", - "esbuild": "0.25.4", - "fast-glob": "3.3.3", + "esbuild": "0.25.5", "https-proxy-agent": "7.0.6", "istanbul-lib-instrument": "6.0.3", - "listr2": "8.2.5", + "jsonc-parser": "3.3.1", + "listr2": "8.3.3", "magic-string": "0.30.17", "mrmime": "2.0.1", - "parse5-html-rewriting-stream": "7.0.0", + "parse5-html-rewriting-stream": "7.1.0", "picomatch": "4.0.2", - "piscina": "4.8.0", - "rollup": "4.34.8", - "sass": "1.85.0", - "semver": "7.7.1", + "piscina": "5.1.2", + "rollup": "4.44.1", + "sass": "1.89.2", + "semver": "7.7.2", "source-map-support": "0.5.21", - "vite": "6.2.7", - "watchpack": "2.4.2" + "tinyglobby": "0.2.14", + "vite": "7.0.0", + "watchpack": "2.4.4" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "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.2.6" + "lmdb": "3.4.1" }, "peerDependencies": { - "@angular/compiler": "^19.0.0 || ^19.2.0-next.0", - "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0", - "@angular/localize": "^19.0.0 || ^19.2.0-next.0", - "@angular/platform-server": "^19.0.0 || ^19.2.0-next.0", - "@angular/service-worker": "^19.0.0 || ^19.2.0-next.0", - "@angular/ssr": "^19.2.15", + "@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.1.1", "karma": "^6.4.0", "less": "^4.2.0", - "ng-packagr": "^19.0.0 || ^19.2.0-next.0", + "ng-packagr": "^20.0.0", "postcss": "^8.4.0", "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "typescript": ">=5.5 <5.9" + "tslib": "^2.3.0", + "typescript": ">=5.8 <5.9", + "vitest": "^3.1.1" }, "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, "@angular/localize": { "optional": true }, + "@angular/platform-browser": { + "optional": true + }, "@angular/platform-server": { "optional": true }, @@ -781,151 +848,139 @@ }, "tailwindcss": { "optional": true + }, + "vitest": { + "optional": true } } }, - "node_modules/@angular/build/node_modules/sass": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.0.tgz", - "integrity": "sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==", - "dev": true, + "node_modules/@angular/cdk": { + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-20.1.2.tgz", + "integrity": "sha512-mmQdXfC86FMnH6iZvXvEmHunQpp2KULfoMQ1KhIMzVEuAmHRpkct7onjLeGUqZ+VEXchRG7/gYkMKYQxtG8sag==", "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/@angular/cdk": { - "version": "19.2.18", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.2.18.tgz", - "integrity": "sha512-aGMHOYK/VV9PhxGTUDwiu/4ozoR/RKz8cimI+QjRxEBhzn4EPqjUDSganvlhmgS7cTN3+aqozdvF/GopMRJjLg==", - "license": "MIT", - "dependencies": { - "parse5": "^7.1.2", - "tslib": "^2.3.0" + "parse5": "^8.0.0", + "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^19.0.0 || ^20.0.0", - "@angular/core": "^19.0.0 || ^20.0.0", + "@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": "19.2.15", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-19.2.15.tgz", - "integrity": "sha512-YRIpARHWSOnWkHusUWTQgeUrPWMjWvtQrOkjWc6stF36z2KUzKMEng6EzUvH6sZolNSwVwOFpODEP0ut4aBkvQ==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.1.1.tgz", + "integrity": "sha512-/lS7haW6YWy+KWkITtmfcKqq9Qsi2PP5mnPnZ2CqPgnYe6PCw+yx57tsU3qHHmYNGWnqHIvZWafBbabie18g8g==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1902.15", - "@angular-devkit/core": "19.2.15", - "@angular-devkit/schematics": "19.2.15", - "@inquirer/prompts": "7.3.2", - "@listr2/prompt-adapter-inquirer": "2.0.18", - "@schematics/angular": "19.2.15", + "@angular-devkit/architect": "0.2001.1", + "@angular-devkit/core": "20.1.1", + "@angular-devkit/schematics": "20.1.1", + "@inquirer/prompts": "7.6.0", + "@listr2/prompt-adapter-inquirer": "2.0.22", + "@modelcontextprotocol/sdk": "1.13.3", + "@schematics/angular": "20.1.1", "@yarnpkg/lockfile": "1.1.0", + "algoliasearch": "5.32.0", "ini": "5.0.0", "jsonc-parser": "3.3.1", - "listr2": "8.2.5", + "listr2": "8.3.3", "npm-package-arg": "12.0.2", "npm-pick-manifest": "10.0.0", - "pacote": "20.0.0", + "pacote": "21.0.0", "resolve": "1.22.10", - "semver": "7.7.1", - "symbol-observable": "4.0.0", - "yargs": "17.7.2" + "semver": "7.7.2", + "yargs": "18.0.0", + "zod": "3.25.75" }, "bin": { "ng": "bin/ng.js" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "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": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.2.14.tgz", - "integrity": "sha512-NcNklcuyqaTjOVGf7aru8APX9mjsnZ01gFZrn47BxHozhaR0EMRrotYQTdi8YdVjPkeYFYanVntSLfhyobq/jg==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.1.2.tgz", + "integrity": "sha512-MQYP+4lvw81jBRknNYgIye7N36SD68SADUB7xO+7pF5+KbGundfmZkO29uWCnTBU86C4xU4DshlFVhzFK1lreQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "19.2.14", + "@angular/core": "20.1.2", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.14.tgz", - "integrity": "sha512-ZqJDYOdhgKpVGNq3+n/Gbxma8DVYElDsoRe0tvNtjkWBVdaOxdZZUqmJ3kdCBsqD/aqTRvRBu0KGo9s2fCChkA==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.1.2.tgz", + "integrity": "sha512-BCYQArXAknOyMB5rgx9yK3p5uYFhgN91Jxo5Fbuso6M+7p1PoxOE4E9XrqQfhpVJOl9hcz7vNFnQ4Oer0R83UQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/@angular/compiler-cli": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.2.14.tgz", - "integrity": "sha512-e9/h86ETjoIK2yTLE9aUeMCKujdg/du2pq7run/aINjop4RtnNOw+ZlSTUa6R65lP5CVwDup1kPytpAoifw8cA==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.1.2.tgz", + "integrity": "sha512-NMSDavN+CJYvSze6wq7DpbrUA/EqiAD7GQoeJtuOknzUpPlWQmFOoHzTMKW+S34XlNEw+YQT0trv3DKcrE+T/w==", "license": "MIT", "dependencies": { - "@babel/core": "7.26.9", + "@babel/core": "7.28.0", "@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": "^17.2.1" + "yargs": "^18.0.0" }, "bin": { "ng-xi18n": "bundles/src/bin/ng_xi18n.js", - "ngc": "bundles/src/bin/ngc.js", - "ngcc": "bundles/ngcc/index.js" + "ngc": "bundles/src/bin/ngc.js" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "19.2.14", - "typescript": ">=5.5 <5.9" + "@angular/compiler": "20.1.2", + "typescript": ">=5.8 <5.9" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", - "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -946,60 +1001,85 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, + "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@angular/core": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.2.14.tgz", - "integrity": "sha512-EVErpW9tGqJ/wNcAN3G/ErH8pHCJ8mM1E6bsJ8UJIpDTZkpqqYjBMtZS9YWH5n3KwUd1tAkAB2w8FK125AjDUQ==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.1.2.tgz", + "integrity": "sha512-8jAvpkHoXHSH0HoqNVgPstSMGmC0oaYN93HW7K2rMRxj1Uhtahkeb/7/kfnj7yLi5FDfm98ofOFT4Lxzf2eZXQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { + "@angular/compiler": "20.1.2", "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": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.2.14.tgz", - "integrity": "sha512-hWtDOj2B0AuRTf+nkMJeodnFpDpmEK9OIhIv1YxcRe73ooaxrIdjgugkElO8I9Tj0E4/7m117ezhWDUkbqm1zA==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.1.2.tgz", + "integrity": "sha512-ziOaeN0by1cTCNzwCo/IC2ekFzrM7ehc8uQHMQ6dYprSX45lJmdCsNnn+R0lx68VugvbMhHHO5ieOORf5sEmew==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "19.2.14", - "@angular/core": "19.2.14", - "@angular/platform-browser": "19.2.14", + "@angular/common": "20.1.2", + "@angular/core": "20.1.2", + "@angular/platform-browser": "20.1.2", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-19.2.14.tgz", - "integrity": "sha512-XgzZdBCe/obCrck5I6GIG4qSI9UGaOtbrvNuw0QAK0DySKaW5inRm6/QwCMPRmPkJBY0wLeYUVz//rtHpEjeTQ==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-20.1.2.tgz", + "integrity": "sha512-qeRrSJCfSZ5K01x+5bQntHPZOrXJOy17bLTtJdQ7iu5PBYh2hFwMipWOGp6SPeYgZ8yl88vmZI+YkLOEsNNniw==", "dev": true, "license": "MIT", "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/@angular/localize": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-19.2.14.tgz", - "integrity": "sha512-T2qPVE5N4qe1rQnx9tkxqUzXV+gUgAwSpVG+vHHRJe//jxCIVfk5zyPd2Z9nFzwGarHP61hvnEzbdbZHtCmbcQ==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-20.1.2.tgz", + "integrity": "sha512-stlG9ZmB71nBCDqu+9R3syNf/+Hny6/WlNL6whBB3hPN+LOXwb1LDHnu+YaIOoAoQ19ufNofYvGEsWWq6j4vEw==", "license": "MIT", "dependencies": { - "@babel/core": "7.26.9", + "@babel/core": "7.28.0", "@types/babel__core": "7.20.5", - "fast-glob": "3.3.3", - "yargs": "^17.2.1" + "tinyglobby": "^0.2.12", + "yargs": "^18.0.0" }, "bin": { "localize-extract": "tools/bundles/src/extract/cli.js", @@ -1007,29 +1087,29 @@ "localize-translate": "tools/bundles/src/translate/cli.js" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "19.2.14", - "@angular/compiler-cli": "19.2.14" + "@angular/compiler": "20.1.2", + "@angular/compiler-cli": "20.1.2" } }, "node_modules/@angular/localize/node_modules/@babel/core": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", - "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1044,6 +1124,22 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@angular/localize/node_modules/@babel/generator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@angular/localize/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -1051,37 +1147,37 @@ "license": "MIT" }, "node_modules/@angular/material": { - "version": "19.2.18", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-19.2.18.tgz", - "integrity": "sha512-xxedRQ9u7aiUYVrHAxASLUxnofN29xaqEGhBcHLAfOsFXdDMwDe/2ly79iKufwEs5BFBm3nfhJoarXZ3+8pucQ==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-20.1.2.tgz", + "integrity": "sha512-xs/6yl8e/8PGvHihFSg+/6C6MupxGN0S8ym2ITKQI4vwViL1MRL274r7Ppl9N+23Kq2qeYBzFsRkxx01vxdaEA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "19.2.18", - "@angular/common": "^19.0.0 || ^20.0.0", - "@angular/core": "^19.0.0 || ^20.0.0", - "@angular/forms": "^19.0.0 || ^20.0.0", - "@angular/platform-browser": "^19.0.0 || ^20.0.0", + "@angular/cdk": "20.1.2", + "@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": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.14.tgz", - "integrity": "sha512-hzkT5nmA64oVBQl6PRjdL4dIFT1n7lfM9rm5cAoS+6LUUKRgiE2d421Kpn/Hz3jaCJfo+calMIdtSMIfUJBmww==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.1.2.tgz", + "integrity": "sha512-jsgO4atyh6T3Rt+idHI29ENaq1a4VKfvtTgWf1S0qSCsfMt2kv5AAO+LkL6lYx8TtJu5zjAETiUwSiWUqY1jOg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "19.2.14", - "@angular/common": "19.2.14", - "@angular/core": "19.2.14" + "@angular/animations": "20.1.2", + "@angular/common": "20.1.2", + "@angular/core": "20.1.2" }, "peerDependenciesMeta": { "@angular/animations": { @@ -1090,45 +1186,45 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.2.14.tgz", - "integrity": "sha512-Hfz0z1KDQmIdnFXVFCwCPykuIsHPkr1uW2aY396eARwZ6PK8i0Aadcm1ZOnpd3MR1bMyDrJo30VRS5kx89QWvA==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.1.2.tgz", + "integrity": "sha512-KssXr0nDZxNjJChdyNFE1wFGaR374qEKBU6mburr2dTauV+jfaL7NrBRzQuTh7GfOOwHnW0uJ4b2dGK6m1tkNw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "19.2.14", - "@angular/compiler": "19.2.14", - "@angular/core": "19.2.14", - "@angular/platform-browser": "19.2.14" + "@angular/common": "20.1.2", + "@angular/compiler": "20.1.2", + "@angular/core": "20.1.2", + "@angular/platform-browser": "20.1.2" } }, "node_modules/@angular/router": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-19.2.14.tgz", - "integrity": "sha512-cBTWY9Jx7YhbmDYDb7Hqz4Q7UNIMlKTkdKToJd2pbhIXyoS+kHVQrySmyca+jgvYMjWnIjsAEa3dpje12D4mFw==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.1.2.tgz", + "integrity": "sha512-xMRDARfSgwDZSorrTMtv9Gdb9UtWflwn8LOgmPbj3waXyuGWUbgpoJCD0Mh6necc9fhQ60GbBRG5K2EVVr3ATQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "19.2.14", - "@angular/core": "19.2.14", - "@angular/platform-browser": "19.2.14", + "@angular/common": "20.1.2", + "@angular/core": "20.1.2", + "@angular/platform-browser": "20.1.2", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/service-worker": { - "version": "19.2.14", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-19.2.14.tgz", - "integrity": "sha512-ajH4kjsuzDvJNxnG18y8N47R0avXFKwOeLszoiirlr5160C+k4HmQvIbzcCjD5liW0OkmxJN1cMW6KdilP8/2w==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-20.1.2.tgz", + "integrity": "sha512-NHiKLZR/7AVX5Midia8K9/HPHWFqeFbjsk/DziqffuF+2lQTHgKi6TlrN7soIJoWeDIT/wdYH/1o/vYYwOSPiQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1137,10 +1233,10 @@ "ngsw-config": "ngsw-config.js" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "19.2.14", + "@angular/core": "20.1.2", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1180,30 +1276,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.7.tgz", - "integrity": "sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", - "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.7.tgz", + "integrity": "sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.27.7", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.7", + "@babel/types": "^7.27.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1225,13 +1321,13 @@ "license": "MIT" }, "node_modules/@babel/generator": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", - "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.10", - "@babel/types": "^7.26.10", + "@babel/parser": "^7.27.5", + "@babel/types": "^7.27.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -1241,12 +1337,12 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "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==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -1274,7 +1370,6 @@ "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-member-expression-to-functions": "^7.27.1", @@ -1291,27 +1386,12 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/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", - "peer": true, - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, "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", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "regexpu-core": "^6.2.0", @@ -1324,45 +1404,38 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/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", - "peer": true, - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", - "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", + "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", - "peer": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@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.14.2" + "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==", + "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", - "peer": true, "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" @@ -1407,7 +1480,6 @@ "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/types": "^7.27.1" }, @@ -1430,7 +1502,6 @@ "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-wrap-function": "^7.27.1", @@ -1443,27 +1514,12 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-remap-async-to-generator/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", - "peer": true, - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.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", - "peer": true, "dependencies": { "@babel/helper-member-expression-to-functions": "^7.27.1", "@babel/helper-optimise-call-expression": "^7.27.1", @@ -1482,7 +1538,6 @@ "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" @@ -1537,7 +1592,6 @@ "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/template": "^7.27.1", "@babel/traverse": "^7.27.1", @@ -1561,12 +1615,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.7.tgz", - "integrity": "sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.7" + "@babel/types": "^7.28.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -1581,7 +1635,6 @@ "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.27.1" @@ -1599,7 +1652,6 @@ "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1616,7 +1668,6 @@ "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1633,7 +1684,6 @@ "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", @@ -1652,7 +1702,6 @@ "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.27.1" @@ -1670,7 +1719,6 @@ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.9.0" }, @@ -1739,7 +1787,6 @@ "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1751,13 +1798,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "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.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1939,7 +1986,6 @@ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1957,7 +2003,6 @@ "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1969,16 +2014,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", - "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", + "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.26.8" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1988,16 +2032,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", - "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "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", - "peer": true, "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" + "@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" @@ -2012,7 +2055,6 @@ "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2024,12 +2066,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz", - "integrity": "sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==", + "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", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2046,7 +2087,6 @@ "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2064,7 +2104,6 @@ "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2077,19 +2116,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.7.tgz", - "integrity": "sha512-CuLkokN1PEZ0Fsjtq+001aog/C2drDK9nTfK/NRK0n6rBin6cBrvM+zfQjDE+UllhR6/J4a6w8Xq9i4yi3mQrw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", + "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", "dev": true, "license": "MIT", - "peer": true, "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.27.7", - "globals": "^11.1.0" + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -2098,27 +2136,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes/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", - "peer": true, - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.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", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/template": "^7.27.1" @@ -2131,15 +2154,14 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.7.tgz", - "integrity": "sha512-pg3ZLdIKWCP0CrJm0O4jYjVthyBeioVfvz9nwt6o5paUxsgJ/8GucSMAIaj6M7xA4WY+SrvtGu2LijzkdyecWQ==", + "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", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.7" + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -2154,7 +2176,6 @@ "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2172,7 +2193,6 @@ "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2189,7 +2209,6 @@ "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2207,7 +2226,6 @@ "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2224,7 +2242,6 @@ "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2241,7 +2258,6 @@ "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2258,7 +2274,6 @@ "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -2276,7 +2291,6 @@ "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -2295,7 +2309,6 @@ "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2312,7 +2325,6 @@ "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2329,7 +2341,6 @@ "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2346,7 +2357,6 @@ "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2363,7 +2373,6 @@ "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2381,7 +2390,6 @@ "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2399,7 +2407,6 @@ "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -2419,7 +2426,6 @@ "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2437,7 +2443,6 @@ "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2455,7 +2460,6 @@ "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2472,7 +2476,6 @@ "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2489,7 +2492,6 @@ "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2501,18 +2503,17 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.7.tgz", - "integrity": "sha512-201B1kFTWhckclcXpWHc8uUpYziDX/Pl4rxl0ZX0DiCZ3jknwfSUALL3QCYeeXXB37yWxJbo+g+Vfq8pAaHi3w==", + "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", - "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.7", + "@babel/plugin-transform-destructuring": "^7.28.0", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.27.7" + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -2527,7 +2528,6 @@ "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1" @@ -2545,7 +2545,6 @@ "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2562,7 +2561,6 @@ "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -2580,7 +2578,6 @@ "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2597,7 +2594,6 @@ "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2615,7 +2611,6 @@ "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-create-class-features-plugin": "^7.27.1", @@ -2628,27 +2623,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-private-property-in-object/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", - "peer": true, - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.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", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2660,12 +2640,11 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz", - "integrity": "sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==", + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz", + "integrity": "sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2682,7 +2661,6 @@ "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2700,7 +2678,6 @@ "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2712,15 +2689,14 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", - "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.27.4.tgz", + "integrity": "sha512-D68nR5zxU64EUzV8i7T3R5XP0Xhrou/amNnddsRQssx6GrTLdZl1rLxyjtVZBd+v/NVX4AbTPOB5aU8thAZV1A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", @@ -2739,7 +2715,6 @@ "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2756,7 +2731,6 @@ "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -2774,7 +2748,6 @@ "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2791,7 +2764,6 @@ "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2808,7 +2780,6 @@ "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2825,7 +2796,6 @@ "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -2842,7 +2812,6 @@ "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2860,7 +2829,6 @@ "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2878,7 +2846,6 @@ "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -2891,76 +2858,75 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", - "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz", + "integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@babel/compat-data": "^7.26.8", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/compat-data": "^7.27.2", + "@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.27.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@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.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.26.8", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.26.5", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.26.3", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.26.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.26.8", - "@babel/plugin-transform-typeof-symbol": "^7.26.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.27.1", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.27.1", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.1", + "@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-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.27.2", + "@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.1", + "@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.27.1", + "@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.10", "babel-plugin-polyfill-corejs3": "^0.11.0", @@ -2981,7 +2947,6 @@ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -3015,33 +2980,33 @@ } }, "node_modules/@babel/traverse": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.7.tgz", - "integrity": "sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.5", - "@babel/parser": "^7.27.7", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", "@babel/template": "^7.27.2", - "@babel/types": "^7.27.7", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/types": "^7.28.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", - "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.5", - "@babel/types": "^7.27.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -3049,9 +3014,9 @@ } }, "node_modules/@babel/types": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.7.tgz", - "integrity": "sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==", + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz", + "integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -3220,17 +3185,17 @@ } }, "node_modules/@danielmoncada/angular-datetime-picker": { - "version": "19.1.2", - "resolved": "https://registry.npmjs.org/@danielmoncada/angular-datetime-picker/-/angular-datetime-picker-19.1.2.tgz", - "integrity": "sha512-M9wmrnmDIlxA1PDDzQib6xdhCHFkb89oZcafmJcp+CQbfms2pqilCkiI1p/rMlgQNg+/1sxHVSTA/2aN5jAuAw==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@danielmoncada/angular-datetime-picker/-/angular-datetime-picker-20.0.0.tgz", + "integrity": "sha512-moF6Auj/nDKFl1z/gOEldBdtdbLxEJ3ZJOSeYyeLnzOeGaQegNrHysY0Lqr+qTQDx2l4O/O5MnX3IRCh+WbThQ==", "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, "peerDependencies": { - "@angular/cdk": "^19.0.0", - "@angular/common": "^19.0.0", - "@angular/core": "^19.0.0" + "@angular/cdk": "^19.0.0 || ^20.0.0", + "@angular/common": "^19.0.0 || ^20.0.0", + "@angular/core": "^19.0.0 || ^20.0.0" } }, "node_modules/@discoveryjs/json-ext": { @@ -3239,7 +3204,6 @@ "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=14.17.0" } @@ -3272,9 +3236,9 @@ "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", - "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz", + "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==", "cpu": [ "ppc64" ], @@ -3289,9 +3253,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", - "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz", + "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==", "cpu": [ "arm" ], @@ -3306,9 +3270,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", - "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz", + "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==", "cpu": [ "arm64" ], @@ -3323,9 +3287,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", - "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz", + "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==", "cpu": [ "x64" ], @@ -3340,9 +3304,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", - "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz", + "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==", "cpu": [ "arm64" ], @@ -3357,9 +3321,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", - "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz", + "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==", "cpu": [ "x64" ], @@ -3374,9 +3338,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", - "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz", + "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==", "cpu": [ "arm64" ], @@ -3391,9 +3355,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", - "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz", + "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==", "cpu": [ "x64" ], @@ -3408,9 +3372,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", - "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz", + "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==", "cpu": [ "arm" ], @@ -3425,9 +3389,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", - "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz", + "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==", "cpu": [ "arm64" ], @@ -3442,9 +3406,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", - "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz", + "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==", "cpu": [ "ia32" ], @@ -3459,9 +3423,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", - "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz", + "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==", "cpu": [ "loong64" ], @@ -3476,9 +3440,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", - "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz", + "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==", "cpu": [ "mips64el" ], @@ -3493,9 +3457,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", - "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz", + "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==", "cpu": [ "ppc64" ], @@ -3510,9 +3474,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", - "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz", + "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==", "cpu": [ "riscv64" ], @@ -3527,9 +3491,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", - "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz", + "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==", "cpu": [ "s390x" ], @@ -3544,9 +3508,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", - "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz", + "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==", "cpu": [ "x64" ], @@ -3561,9 +3525,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", - "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", + "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==", "cpu": [ "arm64" ], @@ -3578,9 +3542,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", - "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz", + "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==", "cpu": [ "x64" ], @@ -3595,9 +3559,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", - "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz", + "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==", "cpu": [ "arm64" ], @@ -3612,9 +3576,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", - "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz", + "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==", "cpu": [ "x64" ], @@ -3628,10 +3592,27 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", + "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", - "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz", + "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==", "cpu": [ "x64" ], @@ -3646,9 +3627,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", - "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz", + "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==", "cpu": [ "arm64" ], @@ -3663,9 +3644,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", - "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz", + "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==", "cpu": [ "ia32" ], @@ -3680,9 +3661,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", - "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", + "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==", "cpu": [ "x64" ], @@ -3726,9 +3707,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", - "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", + "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": { @@ -3765,9 +3746,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", - "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3775,9 +3756,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3839,19 +3820,6 @@ "concat-map": "0.0.1" } }, - "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3883,9 +3851,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.29.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", - "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", + "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", "dev": true, "license": "MIT", "engines": { @@ -3919,19 +3887,6 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", - "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/@fingerprintjs/fingerprintjs": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/@fingerprintjs/fingerprintjs/-/fingerprintjs-4.6.2.tgz", @@ -3942,16 +3897,16 @@ } }, "node_modules/@fortawesome/angular-fontawesome": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-1.0.0.tgz", - "integrity": "sha512-EC2fYuXIuw2ld1kzJi+zysWus6OeGGfLQtbh0hW9zyyq5aBo8ZJkcJKBsVQ8E6Mg7nHyTWaXn+sdcXTPDWz+UQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-2.0.1.tgz", + "integrity": "sha512-IdklZkuw+WS2GQWhFnr1EX/tOALnrKaj4YGnUmPaUg2Uf+Amj8Xi+M/qDrr915YJ5MaDxd9tZ1kqOHRcvQqq2A==", "license": "MIT", "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.7.1", + "@fortawesome/fontawesome-svg-core": "^6.7.2", "tslib": "^2.8.1" }, "peerDependencies": { - "@angular/core": "^19.0.0" + "@angular/core": "^20.0.0" } }, "node_modules/@fortawesome/fontawesome-common-types": { @@ -4075,13 +4030,13 @@ } }, "node_modules/@inquirer/checkbox": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.8.tgz", - "integrity": "sha512-d/QAsnwuHX2OPolxvYcgSj7A9DO9H6gVOy2DvBTx+P2LH2iRTo/RSGV3iwCzW024nP9hw98KIuDmdyhZQj1UQg==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.9.tgz", + "integrity": "sha512-DBJBkzI5Wx4jFaYm221LHvAhpKYkhVS0k9plqHwaHhofGNxvYB7J3Bz8w+bFJ05zaMb0sZNHo4KdmENQFlNTuQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", + "@inquirer/core": "^10.1.14", "@inquirer/figures": "^1.0.12", "@inquirer/type": "^3.0.7", "ansi-escapes": "^4.3.2", @@ -4100,14 +4055,14 @@ } }, "node_modules/@inquirer/confirm": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.6.tgz", - "integrity": "sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==", + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.13.tgz", + "integrity": "sha512-EkCtvp67ICIVVzjsquUiVSd+V5HRGOGQfsqA4E4vMWhYnB7InUL0pa0TIWt1i+OfP16Gkds8CdIu6yGZwOM1Yw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.7", - "@inquirer/type": "^3.0.4" + "@inquirer/core": "^10.1.14", + "@inquirer/type": "^3.0.7" }, "engines": { "node": ">=18" @@ -4122,9 +4077,9 @@ } }, "node_modules/@inquirer/core": { - "version": "10.1.13", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.13.tgz", - "integrity": "sha512-1viSxebkYN2nJULlzCxES6G9/stgHSepZ9LqqfdIGPHj5OHhiBUXVS0a6R0bEC2A+VL4D9w6QB66ebCr6HGllA==", + "version": "10.1.14", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.14.tgz", + "integrity": "sha512-Ma+ZpOJPewtIYl6HZHZckeX1STvDnHTCB2GVINNUlSEn2Am6LddWwfPkIGY0IUFVjUUrr/93XlBwTK6mfLjf0A==", "dev": true, "license": "MIT", "dependencies": { @@ -4150,13 +4105,13 @@ } }, "node_modules/@inquirer/editor": { - "version": "4.2.13", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.13.tgz", - "integrity": "sha512-WbicD9SUQt/K8O5Vyk9iC2ojq5RHoCLK6itpp2fHsWe44VxxcA9z3GTWlvjSTGmMQpZr+lbVmrxdHcumJoLbMA==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.14.tgz", + "integrity": "sha512-yd2qtLl4QIIax9DTMZ1ZN2pFrrj+yL3kgIWxm34SS6uwCr0sIhsNyudUjAo5q3TqI03xx4SEBkUJqZuAInp9uA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", + "@inquirer/core": "^10.1.14", "@inquirer/type": "^3.0.7", "external-editor": "^3.1.0" }, @@ -4173,13 +4128,13 @@ } }, "node_modules/@inquirer/expand": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.15.tgz", - "integrity": "sha512-4Y+pbr/U9Qcvf+N/goHzPEXiHH8680lM3Dr3Y9h9FFw4gHS+zVpbj8LfbKWIb/jayIB4aSO4pWiBTrBYWkvi5A==", + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.16.tgz", + "integrity": "sha512-oiDqafWzMtofeJyyGkb1CTPaxUkjIcSxePHHQCfif8t3HV9pHcw1Kgdw3/uGpDvaFfeTluwQtWiqzPVjAqS3zA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", + "@inquirer/core": "^10.1.14", "@inquirer/type": "^3.0.7", "yoctocolors-cjs": "^2.1.2" }, @@ -4206,13 +4161,13 @@ } }, "node_modules/@inquirer/input": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.12.tgz", - "integrity": "sha512-xJ6PFZpDjC+tC1P8ImGprgcsrzQRsUh9aH3IZixm1lAZFK49UGHxM3ltFfuInN2kPYNfyoPRh+tU4ftsjPLKqQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.0.tgz", + "integrity": "sha512-opqpHPB1NjAmDISi3uvZOTrjEEU5CWVu/HBkDby8t93+6UxYX0Z7Ps0Ltjm5sZiEbWenjubwUkivAEYQmy9xHw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", + "@inquirer/core": "^10.1.14", "@inquirer/type": "^3.0.7" }, "engines": { @@ -4228,13 +4183,13 @@ } }, "node_modules/@inquirer/number": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.15.tgz", - "integrity": "sha512-xWg+iYfqdhRiM55MvqiTCleHzszpoigUpN5+t1OMcRkJrUrw7va3AzXaxvS+Ak7Gny0j2mFSTv2JJj8sMtbV2g==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.16.tgz", + "integrity": "sha512-kMrXAaKGavBEoBYUCgualbwA9jWUx2TjMA46ek+pEKy38+LFpL9QHlTd8PO2kWPUgI/KB+qi02o4y2rwXbzr3Q==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", + "@inquirer/core": "^10.1.14", "@inquirer/type": "^3.0.7" }, "engines": { @@ -4250,13 +4205,13 @@ } }, "node_modules/@inquirer/password": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.15.tgz", - "integrity": "sha512-75CT2p43DGEnfGTaqFpbDC2p2EEMrq0S+IRrf9iJvYreMy5mAWj087+mdKyLHapUEPLjN10mNvABpGbk8Wdraw==", + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.16.tgz", + "integrity": "sha512-g8BVNBj5Zeb5/Y3cSN+hDUL7CsIFDIuVxb9EPty3lkxBaYpjL5BNRKSYOF9yOLe+JOcKFd+TSVeADQ4iSY7rbg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", + "@inquirer/core": "^10.1.14", "@inquirer/type": "^3.0.7", "ansi-escapes": "^4.3.2" }, @@ -4273,22 +4228,22 @@ } }, "node_modules/@inquirer/prompts": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", - "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.6.0.tgz", + "integrity": "sha512-jAhL7tyMxB3Gfwn4HIJ0yuJ5pvcB5maYUcouGcgd/ub79f9MqZ+aVnBtuFf+VC2GTkCBF+R+eo7Vi63w5VZlzw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/checkbox": "^4.1.2", - "@inquirer/confirm": "^5.1.6", - "@inquirer/editor": "^4.2.7", - "@inquirer/expand": "^4.0.9", - "@inquirer/input": "^4.1.6", - "@inquirer/number": "^3.0.9", - "@inquirer/password": "^4.0.9", - "@inquirer/rawlist": "^4.0.9", - "@inquirer/search": "^3.0.9", - "@inquirer/select": "^4.0.9" + "@inquirer/checkbox": "^4.1.9", + "@inquirer/confirm": "^5.1.13", + "@inquirer/editor": "^4.2.14", + "@inquirer/expand": "^4.0.16", + "@inquirer/input": "^4.2.0", + "@inquirer/number": "^3.0.16", + "@inquirer/password": "^4.0.16", + "@inquirer/rawlist": "^4.1.4", + "@inquirer/search": "^3.0.16", + "@inquirer/select": "^4.2.4" }, "engines": { "node": ">=18" @@ -4303,13 +4258,13 @@ } }, "node_modules/@inquirer/rawlist": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.3.tgz", - "integrity": "sha512-7XrV//6kwYumNDSsvJIPeAqa8+p7GJh7H5kRuxirct2cgOcSWwwNGoXDRgpNFbY/MG2vQ4ccIWCi8+IXXyFMZA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.4.tgz", + "integrity": "sha512-5GGvxVpXXMmfZNtvWw4IsHpR7RzqAR624xtkPd1NxxlV5M+pShMqzL4oRddRkg8rVEOK9fKdJp1jjVML2Lr7TQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", + "@inquirer/core": "^10.1.14", "@inquirer/type": "^3.0.7", "yoctocolors-cjs": "^2.1.2" }, @@ -4326,13 +4281,13 @@ } }, "node_modules/@inquirer/search": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.15.tgz", - "integrity": "sha512-YBMwPxYBrADqyvP4nNItpwkBnGGglAvCLVW8u4pRmmvOsHUtCAUIMbUrLX5B3tFL1/WsLGdQ2HNzkqswMs5Uaw==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.16.tgz", + "integrity": "sha512-POCmXo+j97kTGU6aeRjsPyuCpQQfKcMXdeTMw708ZMtWrj5aykZvlUxH4Qgz3+Y1L/cAVZsSpA+UgZCu2GMOMg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", + "@inquirer/core": "^10.1.14", "@inquirer/figures": "^1.0.12", "@inquirer/type": "^3.0.7", "yoctocolors-cjs": "^2.1.2" @@ -4350,13 +4305,13 @@ } }, "node_modules/@inquirer/select": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.3.tgz", - "integrity": "sha512-OAGhXU0Cvh0PhLz9xTF/kx6g6x+sP+PcyTiLvCrewI99P3BBeexD+VbuwkNDvqGkk3y2h5ZiWLeRP7BFlhkUDg==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.4.tgz", + "integrity": "sha512-unTppUcTjmnbl/q+h8XeQDhAqIOmwWYWNyiiP2e3orXrg6tOaa5DHXja9PChCSbChOsktyKgOieRZFnajzxoBg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", + "@inquirer/core": "^10.1.14", "@inquirer/figures": "^1.0.12", "@inquirer/type": "^3.0.7", "ansi-escapes": "^4.3.2", @@ -4679,16 +4634,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/console/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/core": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", @@ -4772,16 +4717,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@jest/core/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -4903,16 +4838,6 @@ } } }, - "node_modules/@jest/reporters/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -4973,16 +4898,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/test-sequencer/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/transform": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", @@ -5017,16 +4932,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@jest/transform/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", @@ -5046,17 +4951,13 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -5068,37 +4969,27 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", + "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -5111,7 +5002,6 @@ "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", "dev": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=10.0" }, @@ -5129,7 +5019,6 @@ "integrity": "sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@jsonjoy.com/base64": "^1.1.1", "@jsonjoy.com/util": "^1.1.2", @@ -5153,7 +5042,6 @@ "integrity": "sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A==", "dev": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=10.0" }, @@ -5170,13 +5058,12 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@listr2/prompt-adapter-inquirer": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.18.tgz", - "integrity": "sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==", + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.22.tgz", + "integrity": "sha512-hV36ZoY+xKL6pYOt1nPNnkciFkn89KZwqLhAFzJvYysAvL5uBQdiADZx/8bIDXIukzzwG0QlPYolgMzQUtKgpQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5213,9 +5100,9 @@ } }, "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.2.6.tgz", - "integrity": "sha512-yF/ih9EJJZc72psFQbwnn8mExIWfTnzWJg+N02hnpXtDPETYLmQswIMBn7+V88lfCaFrMozJsUvcEQIkEPU0Gg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.1.tgz", + "integrity": "sha512-kKeP5PaY3bFrrF6GY5aDd96iuh1eoS+5CHJ+7hIP629KIEwzGNwbIzBmEX9TAhRJOivSRDTHCIsbu//+NsYKkg==", "cpu": [ "arm64" ], @@ -5227,9 +5114,9 @@ ] }, "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.2.6.tgz", - "integrity": "sha512-5BbCumsFLbCi586Bb1lTWQFkekdQUw8/t8cy++Uq251cl3hbDIGEwD9HAwh8H6IS2F6QA9KdKmO136LmipRNkg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.1.tgz", + "integrity": "sha512-9CMB3seTyHs3EOVWdKiB8IIEDBJ3Gq00Tqyi0V7DS3HL90BjM/AkbZGuhzXwPrfeFazR24SKaRrUQF74f+CmWw==", "cpu": [ "x64" ], @@ -5241,9 +5128,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-arm": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.2.6.tgz", - "integrity": "sha512-+6XgLpMb7HBoWxXj+bLbiiB4s0mRRcDPElnRS3LpWRzdYSe+gFk5MT/4RrVNqd2MESUDmb53NUXw1+BP69bjiQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.1.tgz", + "integrity": "sha512-1Mi69vU0akHgCI7tF6YbimPaNEKJiBm/p5A+aM8egr0joj27cQmCCOm2mZQ+Ht2BqmCfZaIgQnMg4gFYNMlpCA==", "cpu": [ "arm" ], @@ -5255,9 +5142,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.2.6.tgz", - "integrity": "sha512-l5VmJamJ3nyMmeD1ANBQCQqy7do1ESaJQfKPSm2IG9/ADZryptTyCj8N6QaYgIWewqNUrcbdMkJajRQAt5Qjfg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.1.tgz", + "integrity": "sha512-d0vuXOdoKjHHJYZ/CRWopnkOiUpev+bgBBW+1tXtWsYWUj8uxl9ZmTBEmsL5mjUlpQDrlYiJSrhOU1hg5QWBSw==", "cpu": [ "arm64" ], @@ -5269,9 +5156,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-x64": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.2.6.tgz", - "integrity": "sha512-nDYT8qN9si5+onHYYaI4DiauDMx24OAiuZAUsEqrDy+ja/3EbpXPX/VAkMV8AEaQhy3xc4dRC+KcYIvOFefJ4Q==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.1.tgz", + "integrity": "sha512-00RbEpvfnyPodlICiGFuiOmyvWaL9nzCRSqZz82BVFsGTiSQnnF0gpD1C8tO6OvtptELbtRuM7BS9f97LcowZw==", "cpu": [ "x64" ], @@ -5282,10 +5169,24 @@ "linux" ] }, + "node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.1.tgz", + "integrity": "sha512-4h8tm3i1ODf+28UyqQZLP7c2jmRM26AyEEyYp994B4GiBdGvGAsYUu3oiHANYK9xFpvLuFzyGeqFm1kdNC0D1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@lmdb/lmdb-win32-x64": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.2.6.tgz", - "integrity": "sha512-XlqVtILonQnG+9fH2N3Aytria7P/1fwDgDhl29rde96uH2sLB8CHORIf2PfuLVzFQJ7Uqp8py9AYwr3ZUCFfWg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.1.tgz", + "integrity": "sha512-HqqKIhTbq6piJhkJpTTf3w1m/CgrmwXRAL9R9j7Ru5xdZSeO7Mg4AWiBC9B00uXR+LvVZKtUyRMVZfhmIZztmQ==", "cpu": [ "x64" ], @@ -5356,6 +5257,54 @@ "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==", "license": "BSD-2-Clause" }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.13.3.tgz", + "integrity": "sha512-bGwA78F/U5G2jrnsdRkPY3IwIwZeWUEfb5o764b79lb0rJmMT76TLwKhdNZOWakOQtedYefwIR4emisEMvInKA==", + "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", @@ -5441,9 +5390,9 @@ ] }, "node_modules/@napi-rs/canvas": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.72.tgz", - "integrity": "sha512-ypTJ/DXzsJbTU3o7qXFlWmZGgEbh42JWQl7v5/i+DJz/HURELcSnq9ler9e1ukqma70JzmCQcIseiE/Xs6sczw==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.74.tgz", + "integrity": "sha512-pOIyzuS+5Bz1vAhD7tdhaw5/936mMJZUn4aVajojUdjYOGSWmfpDYSgt0nQLZPZVN5GLgWgutqXPOi7Jsm3k+Q==", "license": "MIT", "optional": true, "workspaces": [ @@ -5453,22 +5402,22 @@ "node": ">= 10" }, "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.72", - "@napi-rs/canvas-darwin-arm64": "0.1.72", - "@napi-rs/canvas-darwin-x64": "0.1.72", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.72", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.72", - "@napi-rs/canvas-linux-arm64-musl": "0.1.72", - "@napi-rs/canvas-linux-riscv64-gnu": "0.1.72", - "@napi-rs/canvas-linux-x64-gnu": "0.1.72", - "@napi-rs/canvas-linux-x64-musl": "0.1.72", - "@napi-rs/canvas-win32-x64-msvc": "0.1.72" + "@napi-rs/canvas-android-arm64": "0.1.74", + "@napi-rs/canvas-darwin-arm64": "0.1.74", + "@napi-rs/canvas-darwin-x64": "0.1.74", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.74", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.74", + "@napi-rs/canvas-linux-arm64-musl": "0.1.74", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.74", + "@napi-rs/canvas-linux-x64-gnu": "0.1.74", + "@napi-rs/canvas-linux-x64-musl": "0.1.74", + "@napi-rs/canvas-win32-x64-msvc": "0.1.74" } }, "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.72.tgz", - "integrity": "sha512-OW99TDJEdfOhpJWQ7SXFsQi1BXd6UFuWM8AoQvJ0SQMHWY/iwuopmb1UqGV6Df9aM/SWxvCWBN/onjeCM8KVKQ==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.74.tgz", + "integrity": "sha512-aq5ode+9Z/ZR0H485dI2jdRdttg/hl9Ob+iPCt0nj+QFiirpxDrbUHKeTZWQWEtkWyC7vI5R2dMTbDINBfl9eg==", "cpu": [ "arm64" ], @@ -5482,9 +5431,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.72.tgz", - "integrity": "sha512-gB8Pn/4GdS+B6P4HYuNqPGx8iQJ16Go1D6e5hIxfUbA/efupVGZ7e3OMGWGCUgF0vgbEPEF31sPzhcad4mdR5g==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.74.tgz", + "integrity": "sha512-eO5Miz+ef1dEQyUMWDdcbAb1Wr7yMyxD9/CL9d4frQxO4pTTaCiMBUWup8XDPLr/g7XkSkGCZLP47xiXiyXSpQ==", "cpu": [ "arm64" ], @@ -5498,9 +5447,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.72.tgz", - "integrity": "sha512-x1zKtWVSnf+yLETHdSDAFJ1w6bctS/V2NP0wskTTBKkC+c/AmI2Dl+ZMIW11gF6rilBibrIzBeXJKPzV0GMWGA==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.74.tgz", + "integrity": "sha512-0EkO0IFkps7C3JpKC7lbM3IL+QDUYeUKagHLDbUry4PeQTghxp6JcgccpmU32ZbpFZgPnm7o0tTJO0J1d8S2rA==", "cpu": [ "x64" ], @@ -5514,9 +5463,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.72.tgz", - "integrity": "sha512-Ef6HMF+TBS+lqBNpcUj2D17ODJrbgevXaVPtr2nQFCao5IvoEhVMdmVwWk5YiI+GcgbAkg5AF3LiU47RoSY5yg==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.74.tgz", + "integrity": "sha512-qAVJEN2JqGayEI1kSpJy1Xr6ZmCFV9QhRyV35yWsS7e9X1jm+T4DAlCxI4PlKIlqVSzYMYhKrxchST20XBSzHg==", "cpu": [ "arm" ], @@ -5530,9 +5479,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.72.tgz", - "integrity": "sha512-i1tWu+Li1Z6G4t+ckT38JwuB/cAAREV6H8VD3dip2yTYU+qnLz6kG4i+whm+SEQb1e4vk3xA1lKnjYx3jlOy8g==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.74.tgz", + "integrity": "sha512-lOnop22qy6MYxI94GGunMMjo6D80I//2W/6pqKUfwXaDQtOfvHsTcVVzDu5cFXUTNrb9ZRfMCeol5YEd+9FJvg==", "cpu": [ "arm64" ], @@ -5546,9 +5495,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.72.tgz", - "integrity": "sha512-Mu+2hHZAT9SdrjiRtCxMD/Unac8vqVxF/p+Tvjb5sN1NZkLGu+l7WIfrug8aeX150OwrYgAvsR4mhrm0BZvLxg==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.74.tgz", + "integrity": "sha512-tfFqLHGtSEabBigOnPUfZviSTGmW2xHv5tYZYPBWmgGiTkoNJ7lEWFUxHjwvV5HXGqLs8ok/O7g1enSpxO6lmQ==", "cpu": [ "arm64" ], @@ -5562,9 +5511,9 @@ } }, "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.72.tgz", - "integrity": "sha512-xBPG/ImL58I4Ep6VM+sCrpwl8rE/8e7Dt9U7zzggNvYHrWD13vIF3q5L2/N9VxdBMh1pee6dBC/VcaXLYccZNQ==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.74.tgz", + "integrity": "sha512-j6H9dHTMtr1y3tu/zGm1ythYIL9vTl4EEv9f6CMx0n3Zn2M+OruUUwh9ylCj4afzSNEK9T8cr6zMnmTPzkpBvQ==", "cpu": [ "riscv64" ], @@ -5578,9 +5527,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.72.tgz", - "integrity": "sha512-jkC8L+QovHpzQrw+Jm1IUqxgLV5QB1hJ1cR8iYzxNRd0TOF7YfxLaIGxvd/ReRi9r48JT6PL7z2IGT7TqK8T4w==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.74.tgz", + "integrity": "sha512-73DIV4E7Y9CpIJuUXVl9H6+MEQXyRy4VJQoUGA1tOlcKQiStxqhq6UErL4decI28NxjyQXBhtYZKj5q8AJEuOg==", "cpu": [ "x64" ], @@ -5594,9 +5543,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.72.tgz", - "integrity": "sha512-PwPdPmHgJYnTMUr8Gff80eRVdpGjwrxueIqw+7v4aeFxbQjmQ+paa2xaGedFtkvdS2Dn5z8a0mVlrlbSfec+1Q==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.74.tgz", + "integrity": "sha512-FgDMEFdGIJT3I2xejflRJ82/ZgDphyirS43RgtoLaIXI6zihLiZcQ7rczpqeWgAwlJNjR0He2EustsKe1SkUOg==", "cpu": [ "x64" ], @@ -5610,9 +5559,9 @@ } }, "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.72", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.72.tgz", - "integrity": "sha512-hZhXJZZ/2ZjkAoOtyGUs3Mx6jA4o9ESbc5bk+NKYO6thZRvRNA7rqvT9WF9pZK0xcRK5EyWRymv8fCzqmSVEzg==", + "version": "0.1.74", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.74.tgz", + "integrity": "sha512-x6bhwlhn0wU7dfiP46mt5Bi6PowSUH4CJ4PTzGj58LRQ1HVasEIJgoMx7MLC48F738eJpzbfg3WR/D8+e9CeTA==", "cpu": [ "x64" ], @@ -5626,9 +5575,9 @@ } }, "node_modules/@napi-rs/nice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.1.tgz", - "integrity": "sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.4.tgz", + "integrity": "sha512-Sqih1YARrmMoHlXGgI9JrrgkzxcaaEso0AH+Y7j8NHonUs+xe4iDsgC3IBIDNdzEewbNpccNN6hip+b5vmyRLw==", "dev": true, "license": "MIT", "optional": true, @@ -5640,28 +5589,28 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "optionalDependencies": { - "@napi-rs/nice-android-arm-eabi": "1.0.1", - "@napi-rs/nice-android-arm64": "1.0.1", - "@napi-rs/nice-darwin-arm64": "1.0.1", - "@napi-rs/nice-darwin-x64": "1.0.1", - "@napi-rs/nice-freebsd-x64": "1.0.1", - "@napi-rs/nice-linux-arm-gnueabihf": "1.0.1", - "@napi-rs/nice-linux-arm64-gnu": "1.0.1", - "@napi-rs/nice-linux-arm64-musl": "1.0.1", - "@napi-rs/nice-linux-ppc64-gnu": "1.0.1", - "@napi-rs/nice-linux-riscv64-gnu": "1.0.1", - "@napi-rs/nice-linux-s390x-gnu": "1.0.1", - "@napi-rs/nice-linux-x64-gnu": "1.0.1", - "@napi-rs/nice-linux-x64-musl": "1.0.1", - "@napi-rs/nice-win32-arm64-msvc": "1.0.1", - "@napi-rs/nice-win32-ia32-msvc": "1.0.1", - "@napi-rs/nice-win32-x64-msvc": "1.0.1" + "@napi-rs/nice-android-arm-eabi": "1.0.4", + "@napi-rs/nice-android-arm64": "1.0.4", + "@napi-rs/nice-darwin-arm64": "1.0.4", + "@napi-rs/nice-darwin-x64": "1.0.4", + "@napi-rs/nice-freebsd-x64": "1.0.4", + "@napi-rs/nice-linux-arm-gnueabihf": "1.0.4", + "@napi-rs/nice-linux-arm64-gnu": "1.0.4", + "@napi-rs/nice-linux-arm64-musl": "1.0.4", + "@napi-rs/nice-linux-ppc64-gnu": "1.0.4", + "@napi-rs/nice-linux-riscv64-gnu": "1.0.4", + "@napi-rs/nice-linux-s390x-gnu": "1.0.4", + "@napi-rs/nice-linux-x64-gnu": "1.0.4", + "@napi-rs/nice-linux-x64-musl": "1.0.4", + "@napi-rs/nice-win32-arm64-msvc": "1.0.4", + "@napi-rs/nice-win32-ia32-msvc": "1.0.4", + "@napi-rs/nice-win32-x64-msvc": "1.0.4" } }, "node_modules/@napi-rs/nice-android-arm-eabi": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.0.1.tgz", - "integrity": "sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.0.4.tgz", + "integrity": "sha512-OZFMYUkih4g6HCKTjqJHhMUlgvPiDuSLZPbPBWHLjKmFTv74COzRlq/gwHtmEVaR39mJQ6ZyttDl2HNMUbLVoA==", "cpu": [ "arm" ], @@ -5676,9 +5625,9 @@ } }, "node_modules/@napi-rs/nice-android-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.0.1.tgz", - "integrity": "sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.0.4.tgz", + "integrity": "sha512-k8u7cjeA64vQWXZcRrPbmwjH8K09CBnNaPnI9L1D5N6iMPL3XYQzLcN6WwQonfcqCDv5OCY3IqX89goPTV4KMw==", "cpu": [ "arm64" ], @@ -5693,9 +5642,9 @@ } }, "node_modules/@napi-rs/nice-darwin-arm64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.0.1.tgz", - "integrity": "sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-GsLdQvUcuVzoyzmtjsThnpaVEizAqH5yPHgnsBmq3JdVoVZHELFo7PuJEdfOH1DOHi2mPwB9sCJEstAYf3XCJA==", "cpu": [ "arm64" ], @@ -5710,9 +5659,9 @@ } }, "node_modules/@napi-rs/nice-darwin-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.0.1.tgz", - "integrity": "sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.0.4.tgz", + "integrity": "sha512-1y3gyT3e5zUY5SxRl3QDtJiWVsbkmhtUHIYwdWWIQ3Ia+byd/IHIEpqAxOGW1nhhnIKfTCuxBadHQb+yZASVoA==", "cpu": [ "x64" ], @@ -5727,9 +5676,9 @@ } }, "node_modules/@napi-rs/nice-freebsd-x64": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.0.1.tgz", - "integrity": "sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.0.4.tgz", + "integrity": "sha512-06oXzESPRdXUuzS8n2hGwhM2HACnDfl3bfUaSqLGImM8TA33pzDXgGL0e3If8CcFWT98aHows5Lk7xnqYNGFeA==", "cpu": [ "x64" ], @@ -5744,9 +5693,9 @@ } }, "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.0.1.tgz", - "integrity": "sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.0.4.tgz", + "integrity": "sha512-CgklZ6g8WL4+EgVVkxkEvvsi2DSLf9QIloxWO0fvQyQBp6VguUSX3eHLeRpqwW8cRm2Hv/Q1+PduNk7VK37VZw==", "cpu": [ "arm" ], @@ -5761,9 +5710,9 @@ } }, "node_modules/@napi-rs/nice-linux-arm64-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.0.1.tgz", - "integrity": "sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.0.4.tgz", + "integrity": "sha512-wdAJ7lgjhAlsANUCv0zi6msRwq+D4KDgU+GCCHssSxWmAERZa2KZXO0H2xdmoJ/0i03i6YfK/sWaZgUAyuW2oQ==", "cpu": [ "arm64" ], @@ -5778,9 +5727,9 @@ } }, "node_modules/@napi-rs/nice-linux-arm64-musl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.0.1.tgz", - "integrity": "sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.0.4.tgz", + "integrity": "sha512-4b1KYG+sriufhFrpUS9uNOEYYJqSfcbnwGx6uGX7JjrH8tELG90cOpCawz5THNIwlS3DhLgnCOcn0+4p6z26QA==", "cpu": [ "arm64" ], @@ -5795,9 +5744,9 @@ } }, "node_modules/@napi-rs/nice-linux-ppc64-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.0.1.tgz", - "integrity": "sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.0.4.tgz", + "integrity": "sha512-iaf3vMRgr23oe1PUaKpxaH3DS0IMN0+N9iEiWVwYPm/U15vZFYdqVegGfN2PzrZLUl5lc8ZxbmEKDfuqslhAMA==", "cpu": [ "ppc64" ], @@ -5812,9 +5761,9 @@ } }, "node_modules/@napi-rs/nice-linux-riscv64-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.0.1.tgz", - "integrity": "sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.0.4.tgz", + "integrity": "sha512-UXoREY6Yw6rHrGuTwQgBxpfjK34t6mTjibE9/cXbefL9AuUCJ9gEgwNKZiONuR5QGswChqo9cnthjdKkYyAdDg==", "cpu": [ "riscv64" ], @@ -5829,9 +5778,9 @@ } }, "node_modules/@napi-rs/nice-linux-s390x-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.0.1.tgz", - "integrity": "sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.0.4.tgz", + "integrity": "sha512-eFbgYCRPmsqbYPAlLYU5hYTNbogmIDUvknilehHsFhCH1+0/kN87lP+XaLT0Yeq4V/rpwChSd9vlz4muzFArtw==", "cpu": [ "s390x" ], @@ -5846,9 +5795,9 @@ } }, "node_modules/@napi-rs/nice-linux-x64-gnu": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.0.1.tgz", - "integrity": "sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.0.4.tgz", + "integrity": "sha512-4T3E6uTCwWT6IPnwuPcWVz3oHxvEp/qbrCxZhsgzwTUBEwu78EGNXGdHfKJQt3soth89MLqZJw+Zzvnhrsg1mQ==", "cpu": [ "x64" ], @@ -5863,9 +5812,9 @@ } }, "node_modules/@napi-rs/nice-linux-x64-musl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.0.1.tgz", - "integrity": "sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.0.4.tgz", + "integrity": "sha512-NtbBkAeyBPLvCBkWtwkKXkNSn677eaT0cX3tygq+2qVv71TmHgX4gkX6o9BXjlPzdgPGwrUudavCYPT9tzkEqQ==", "cpu": [ "x64" ], @@ -5880,9 +5829,9 @@ } }, "node_modules/@napi-rs/nice-win32-arm64-msvc": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.0.1.tgz", - "integrity": "sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.0.4.tgz", + "integrity": "sha512-vubOe3i+YtSJGEk/++73y+TIxbuVHi+W8ZzrRm2eETCjCRwNlgbfToQZ85dSA+4iBB/NJRGNp+O4hfdbbttZWA==", "cpu": [ "arm64" ], @@ -5897,9 +5846,9 @@ } }, "node_modules/@napi-rs/nice-win32-ia32-msvc": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.0.1.tgz", - "integrity": "sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.0.4.tgz", + "integrity": "sha512-BMOVrUDZeg1RNRKVlh4eyLv5djAAVLiSddfpuuQ47EFjBcklg0NUeKMFKNrKQR4UnSn4HAiACLD7YK7koskwmg==", "cpu": [ "ia32" ], @@ -5914,9 +5863,9 @@ } }, "node_modules/@napi-rs/nice-win32-x64-msvc": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.0.1.tgz", - "integrity": "sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.0.4.tgz", + "integrity": "sha512-kCNk6HcRZquhw/whwh4rHsdPyOSCQCgnVDVik+Y9cuSVTDy3frpiCJTScJqPPS872h4JgZKkr/+CwcwttNEo9Q==", "cpu": [ "x64" ], @@ -5931,37 +5880,36 @@ } }, "node_modules/@ng-bootstrap/ng-bootstrap": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-18.0.0.tgz", - "integrity": "sha512-GeSAz4yiGq49psdte8kcf+Y562wB3jK/qKRAkh6iA32lcXmy2sfQXVAmlHdjZ3AyP+E8lf3yMwuPdSKiYcDgSg==", + "version": "19.0.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-19.0.1.tgz", + "integrity": "sha512-1lErAkwh0F+gWkzpiddViY4GfA9LVXkwLpgBsV9Mb3IC0zo6WNkY8WxCC+LqajirBTu20DCkZSqeRzrwaVLpZw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^19.0.0", - "@angular/core": "^19.0.0", - "@angular/forms": "^19.0.0", - "@angular/localize": "^19.0.0", + "@angular/common": "^20.0.0", + "@angular/core": "^20.0.0", + "@angular/forms": "^20.0.0", + "@angular/localize": "^20.0.0", "@popperjs/core": "^2.11.8", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@ngtools/webpack": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-19.2.15.tgz", - "integrity": "sha512-H37nop/wWMkSgoU2VvrMzanHePdLRRrX52nC5tT2ZhH3qP25+PrnMyw11PoLDLv3iWXC68uB1AiKNIT+jiQbuQ==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.1.1.tgz", + "integrity": "sha512-HBF/bQyDjGlzv2uOXlwjrLFxdERynen7JuX3ZgI1vijc41aBX/nyMNa4MsKiOwNOQmpHGJU6qn6/gAN4DhocKQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "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": "^19.0.0 || ^19.2.0-next.0", - "typescript": ">=5.5 <5.9", + "@angular/compiler-cli": "^20.0.0", + "typescript": ">=5.8 <5.9", "webpack": "^5.54.0" } }, @@ -5995,6 +5943,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -6008,6 +5957,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -6017,6 +5967,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -6674,21 +6625,30 @@ } }, "node_modules/@primeuix/styled": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@primeuix/styled/-/styled-0.3.2.tgz", - "integrity": "sha512-ColZes0+/WKqH4ob2x8DyNYf1NENpe5ZguOvx5yCLxaP8EIMVhLjWLO/3umJiDnQU4XXMLkn2mMHHw+fhTX/mw==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@primeuix/styled/-/styled-0.7.0.tgz", + "integrity": "sha512-xUqMdQb75izeDkNWFK1QlU15aUl5LIU97Fq68IXOhrqqLsKEBnj5ftntFZrENQW70jAHwALdWP4EOGi/poc9Tg==", "license": "MIT", "dependencies": { - "@primeuix/utils": "^0.3.2" + "@primeuix/utils": "^0.6.0" }, "engines": { "node": ">=12.11.0" } }, + "node_modules/@primeuix/styles": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@primeuix/styles/-/styles-1.2.1.tgz", + "integrity": "sha512-Tri7pPgZgxrVmhJG8ijZZFolQ6vu27xnkGoAB9EFY8YlaKTM5iqkWzEcqdxy2KmgFWMXi+BrPHwO0RdQ6JCT+g==", + "license": "MIT", + "dependencies": { + "@primeuix/styled": "^0.7.0" + } + }, "node_modules/@primeuix/utils": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@primeuix/utils/-/utils-0.3.2.tgz", - "integrity": "sha512-B+nphqTQeq+i6JuICLdVWnDMjONome2sNz0xI65qIOyeB4EF12CoKRiCsxuZ5uKAkHi/0d1LqlQ9mIWRSdkavw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@primeuix/utils/-/utils-0.6.0.tgz", + "integrity": "sha512-ULpB87ImNAiX36OMtyDeRceWB7N/mVlh6gGLqp/lx8UMKZlLIQH/UAFND86hYXHwNpXeNKcWfMGreb0Oc0hcZA==", "license": "MIT", "engines": { "node": ">=12.11.0" @@ -6751,9 +6711,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", - "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz", + "integrity": "sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==", "cpu": [ "arm" ], @@ -6765,9 +6725,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", - "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.1.tgz", + "integrity": "sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==", "cpu": [ "arm64" ], @@ -6779,9 +6739,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", - "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.1.tgz", + "integrity": "sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==", "cpu": [ "arm64" ], @@ -6793,9 +6753,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", - "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.1.tgz", + "integrity": "sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==", "cpu": [ "x64" ], @@ -6807,9 +6767,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", - "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.1.tgz", + "integrity": "sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==", "cpu": [ "arm64" ], @@ -6821,9 +6781,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", - "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.1.tgz", + "integrity": "sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==", "cpu": [ "x64" ], @@ -6835,9 +6795,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", - "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.1.tgz", + "integrity": "sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==", "cpu": [ "arm" ], @@ -6849,9 +6809,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", - "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.1.tgz", + "integrity": "sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==", "cpu": [ "arm" ], @@ -6863,11 +6823,11 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", - "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", - "cpu": [ - "arm64" + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.1.tgz", + "integrity": "sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==", + "cpu": [ + "arm64" ], "dev": true, "license": "MIT", @@ -6877,9 +6837,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", - "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.1.tgz", + "integrity": "sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==", "cpu": [ "arm64" ], @@ -6891,9 +6851,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", - "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.1.tgz", + "integrity": "sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==", "cpu": [ "loong64" ], @@ -6905,9 +6865,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", - "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.1.tgz", + "integrity": "sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==", "cpu": [ "ppc64" ], @@ -6919,9 +6879,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", - "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.1.tgz", + "integrity": "sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==", "cpu": [ "riscv64" ], @@ -6947,9 +6907,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", - "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.1.tgz", + "integrity": "sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==", "cpu": [ "s390x" ], @@ -6961,9 +6921,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", - "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.1.tgz", + "integrity": "sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==", "cpu": [ "x64" ], @@ -6975,9 +6935,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", - "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.1.tgz", + "integrity": "sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==", "cpu": [ "x64" ], @@ -6989,9 +6949,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", - "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.1.tgz", + "integrity": "sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==", "cpu": [ "arm64" ], @@ -7003,9 +6963,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", - "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.1.tgz", + "integrity": "sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A==", "cpu": [ "ia32" ], @@ -7017,9 +6977,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", - "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.1.tgz", + "integrity": "sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug==", "cpu": [ "x64" ], @@ -7031,80 +6991,80 @@ ] }, "node_modules/@schematics/angular": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-19.2.15.tgz", - "integrity": "sha512-dz/eoFQKG09POSygpEDdlCehFIMo35HUM2rVV8lx9PfQEibpbGwl1NNQYEbqwVjTyCyD/ILyIXCWPE+EfTnG4g==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.1.1.tgz", + "integrity": "sha512-eOEKBRcxt68xzZmqlgMJ5m9FOClzZumyltQhiBeAQfCrMAjxJZaB+pbyYreI+2DL91d/VkldJ9D/UcHZrhfLnQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.2.15", - "@angular-devkit/schematics": "19.2.15", + "@angular-devkit/core": "20.1.1", + "@angular-devkit/schematics": "20.1.1", "jsonc-parser": "3.3.1" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "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/@sentry-internal/browser-utils": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-9.32.0.tgz", - "integrity": "sha512-mVWdruSWXF+2WgS24jwLhWFyC/nDQbKXseLR8paU9LGSnVtlBlQseIx1GrANbJrhBxiEWSft4WiuxU34wPsbXg==", + "version": "9.40.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-9.40.0.tgz", + "integrity": "sha512-Ajvz6jN+EEMKrOHcUv2+HlhbRUh69uXhhRoBjJw8sc61uqA2vv3QWyBSmTRoHdTnLGboT5bKEhHIkzVXb+YgEw==", "license": "MIT", "dependencies": { - "@sentry/core": "9.32.0" + "@sentry/core": "9.40.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/feedback": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-9.32.0.tgz", - "integrity": "sha512-OaXaovXqlhN1sG2wtJMhxMEjyeuK7RwY57o96LgKE0bWM//Fs9WWCOkGa+7l8TOf0+0ib7gfhJZlpN0hlqOgRw==", + "version": "9.40.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-9.40.0.tgz", + "integrity": "sha512-39UbLdGWGvSJ7bAzRnkv91cBdd6fLbdkLVVvqE2ZUfegm7+rH1mRPglmEhw4VE4mQfKZM1zWr/xus2+XPqJcYw==", "license": "MIT", "dependencies": { - "@sentry/core": "9.32.0" + "@sentry/core": "9.40.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-9.32.0.tgz", - "integrity": "sha512-mOHUKjUtHbEwshikrCQPM1ZqWAMUEcpEGashnXQp3KQivvbTxrExiNnt6XK5TjJyGvsI3A907Bp/HvEzgneYgQ==", + "version": "9.40.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-9.40.0.tgz", + "integrity": "sha512-WrmCvqbLJQC45IFRVN3k0J5pU5NkdX0e9o6XxjcmDiATKk00RHnW4yajnCJ8J1cPR4918yqiJHPX5xpG08BZNA==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "9.32.0", - "@sentry/core": "9.32.0" + "@sentry-internal/browser-utils": "9.40.0", + "@sentry/core": "9.40.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-9.32.0.tgz", - "integrity": "sha512-tu+coeTRpJxknmWPMJC2jqmIM5IsVoRn9gEDdkSrcPbgx/GwgE03fSJVBJL1tOEA8yRNIhZPMR86ORE7/7n2ow==", + "version": "9.40.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-9.40.0.tgz", + "integrity": "sha512-GLoJ4R4Uipd7Vb+0LzSJA2qCyN1J6YalQIoDuOJTfYyykHvKltds5D8a/5S3Q6d8PcL/nxTn93fynauGEZt2Ow==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "9.32.0", - "@sentry/core": "9.32.0" + "@sentry-internal/replay": "9.40.0", + "@sentry/core": "9.40.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/angular": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/@sentry/angular/-/angular-9.32.0.tgz", - "integrity": "sha512-lUG0pnqx+k0TOS3Sf+H/khD3M7dBM5CsTF9HsBEo0vdfRI2qcTjF8IE634871pr90RsPoC28AUSqtuRXdy5JKw==", + "version": "9.40.0", + "resolved": "https://registry.npmjs.org/@sentry/angular/-/angular-9.40.0.tgz", + "integrity": "sha512-P/CLSi37TbDo2VvQkhV1WfjlGn1vBa/Wc3Hg1BqIJcPJCr1BOvlBZu7TWqNbplNBc0SQjuYaUUkBHjR7upkbsw==", "license": "MIT", "dependencies": { - "@sentry/browser": "9.32.0", - "@sentry/core": "9.32.0", + "@sentry/browser": "9.40.0", + "@sentry/core": "9.40.0", "tslib": "^2.4.1" }, "engines": { @@ -7118,56 +7078,56 @@ } }, "node_modules/@sentry/browser": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-9.32.0.tgz", - "integrity": "sha512-BzPogpH87n+sC9VPfXaXkiKJtagLpIB87LGg1hSBURpwGx6Rt2ORmaVYgwwuuFZX8Hia727IIM7pbcbNfrXGRQ==", + "version": "9.40.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-9.40.0.tgz", + "integrity": "sha512-qz/1Go817vcsbcIwgrz4/T34vi3oQ4UIqikosuaCTI9wjZvK0HyW3QmLvTbAnsE7G7h6+UZsVkpO5R16IQvQhQ==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "9.32.0", - "@sentry-internal/feedback": "9.32.0", - "@sentry-internal/replay": "9.32.0", - "@sentry-internal/replay-canvas": "9.32.0", - "@sentry/core": "9.32.0" + "@sentry-internal/browser-utils": "9.40.0", + "@sentry-internal/feedback": "9.40.0", + "@sentry-internal/replay": "9.40.0", + "@sentry-internal/replay-canvas": "9.40.0", + "@sentry/core": "9.40.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/core": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.32.0.tgz", - "integrity": "sha512-1wAXMMmeY4Ny2MJBCuri3b4LMVPjqXdgbVgTxxipGW+gzPsjv+8+LCSnJAR/cRBr8JoXV+qGC2tE06rI1XDj3A==", + "version": "9.40.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.40.0.tgz", + "integrity": "sha512-cZkuz6BDna6VXSqvlWnrRsaDx4QBKq1PcfQrqhVz8ljs0M7Gcl+Mtj8dCzUxx12fkYM62hQXG72DEGNlAQpH/Q==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sentry/types": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-9.32.0.tgz", - "integrity": "sha512-uJu770ClzCFXqd2zj2cBRa6v3PwnAx8jTwKkdA12/py3Tyn6OJ7RJhWsAXN5YRUhj2SDU1Uw1mRHS2GzuM2rLw==", + "version": "9.40.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-9.40.0.tgz", + "integrity": "sha512-6NKOL8baxxLfB79d81n7b5OvJZyYxqGdbA3BL+xAjj12IJD123OkajU06PF6K3RugLonHP2zmi0FPBmhm2ve/A==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/core": "9.32.0" + "@sentry/core": "9.40.0" }, "engines": { "node": ">=18" } }, "node_modules/@siemens/ngx-datatable": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/@siemens/ngx-datatable/-/ngx-datatable-22.4.1.tgz", - "integrity": "sha512-Z19zaxu7tpwMHWc1h5Om9/sZJ39MWTQypju6T6WH7QIkelKgZE7DbYk3siD41vkR/62vT+q0Z1voC2OyxgRX9g==", + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/@siemens/ngx-datatable/-/ngx-datatable-24.1.0.tgz", + "integrity": "sha512-e8HFLePF2yohBPgRQ5eTjXMgUezGAgekzxr3RfIApNMEdrfF5fl4ONAE07ZOtCaFSnxqh6+j1Tqn0G7RVc2ECw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": ">=17.0.0", - "@angular/core": ">=17.0.0", - "@angular/platform-browser": ">=17.0.0", - "rxjs": "^7.8.0" + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@angular/platform-browser": ">=19.0.0", + "rxjs": "^7.8.1" } }, "node_modules/@sigstore/bundle": { @@ -7257,20 +7217,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -7292,9 +7238,9 @@ } }, "node_modules/@swimlane/ngx-charts": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@swimlane/ngx-charts/-/ngx-charts-22.0.0.tgz", - "integrity": "sha512-ibWGGhzyA1RmNEFaQjDw0eXoLJN4gtngha0oZnZCDdqg1hPpWa/di9UXXTfRvotvzcfP4DdDJRbHvy0dnQrOWQ==", + "version": "23.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/@swimlane/ngx-charts/-/ngx-charts-23.0.0-alpha.0.tgz", + "integrity": "sha512-3ENgHscwVrTR1ARIGktZbfpx+MIMM/ikwrioOFDhj4crXU3ZvT9xAn59gn3dYOvfuiKIgWNC+TxlRnoPeCvoAw==", "license": "MIT", "dependencies": { "d3-array": "^3.2.0", @@ -7314,20 +7260,20 @@ "tslib": "^2.3.1" }, "peerDependencies": { - "@angular/animations": "17.x || 18.x || 19.x", - "@angular/cdk": "17.x || 18.x || 19.x", - "@angular/common": "17.x || 18.x || 19.x", - "@angular/core": "17.x || 18.x || 19.x", - "@angular/forms": "17.x || 18.x || 19.x", - "@angular/platform-browser": "17.x || 18.x || 19.x", - "@angular/platform-browser-dynamic": "17.x || 18.x || 19.x", + "@angular/animations": "18.x || 19.x || 20.x", + "@angular/cdk": "18.x || 19.x || 20.x", + "@angular/common": "18.x || 19.x || 20.x", + "@angular/core": "18.x || 19.x || 20.x", + "@angular/forms": "18.x || 19.x || 20.x", + "@angular/platform-browser": "18.x || 19.x || 20.x", + "@angular/platform-browser-dynamic": "18.x || 19.x || 20.x", "rxjs": "7.x" } }, "node_modules/@swimlane/ngx-graph": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@swimlane/ngx-graph/-/ngx-graph-10.0.0.tgz", - "integrity": "sha512-9/ZvLgTv+Df1DhOn4AYOSkYbHVvTb5sz/A06H/tUvL3w67bBtBxERpv4T2eo8AX+wHV/g4qcGgZ6FTmfQcvkbg==", + "version": "11.0.0-alpha.0", + "resolved": "https://registry.npmjs.org/@swimlane/ngx-graph/-/ngx-graph-11.0.0-alpha.0.tgz", + "integrity": "sha512-6mgWV7zlS9oPtijwOLeGOtHc364Ym7lDr99mqamWCUDW0RB2ghmJHxCzVzBclS4QJF0Q2+r0cM6WtFOzXK1HvQ==", "license": "MIT", "dependencies": { "d3-dispatch": "^3.0.1", @@ -7344,10 +7290,10 @@ "webcola": "^3.4.0" }, "peerDependencies": { - "@angular/animations": "15.x || 16.x || 17.x || 18.x || 19.x", - "@angular/cdk": "15.x || 16.x || 17.x || 18.x || 19.x", - "@angular/common": "15.x || 16.x || 17.x || 18.x || 19.x", - "@angular/core": "15.x || 16.x || 17.x || 18.x || 19.x", + "@angular/animations": "18.x || 19.x || 20.x", + "@angular/cdk": "18.x || 19.x || 20.x", + "@angular/common": "18.x || 19.x || 20.x", + "@angular/core": "18.x || 19.x || 20.x", "rxjs": "7.x" } }, @@ -7537,7 +7483,6 @@ "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -7549,7 +7494,6 @@ "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*" } @@ -7570,7 +7514,6 @@ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*" } @@ -7581,7 +7524,6 @@ "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -7631,7 +7573,6 @@ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -7643,7 +7584,6 @@ "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -7662,7 +7602,6 @@ "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -7676,7 +7615,6 @@ "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -7709,8 +7647,7 @@ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/http-proxy": { "version": "1.17.16", @@ -7718,7 +7655,6 @@ "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*" } @@ -7808,6 +7744,32 @@ "parse5": "^7.0.0" } }, + "node_modules/@types/jsdom/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/@types/jsdom/node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -7823,9 +7785,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-NYqRyg/hIQrYPT9lbOeYc3kIRabJDn/k4qQHIXUpx88CBDww2fD15Sg5kbXlW86zm2XEW4g0QxkTI3/Kfkc7xQ==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", "dev": true, "license": "MIT" }, @@ -7862,13 +7824,12 @@ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/node": { - "version": "22.15.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", - "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", + "version": "22.15.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz", + "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==", "dev": true, "license": "MIT", "dependencies": { @@ -7876,12 +7837,11 @@ } }, "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "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", - "peer": true, "dependencies": { "@types/node": "*" } @@ -7914,16 +7874,14 @@ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", "dev": true, - "license": "MIT", - "peer": 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", - "peer": true + "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.23", @@ -7940,8 +7898,7 @@ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.5", @@ -7949,7 +7906,6 @@ "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -7961,7 +7917,6 @@ "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/express": "*" } @@ -7972,7 +7927,6 @@ "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -7992,7 +7946,6 @@ "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*" } @@ -8057,7 +8010,6 @@ "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*" } @@ -8080,17 +8032,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.0.tgz", - "integrity": "sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.37.0.tgz", + "integrity": "sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.35.0", - "@typescript-eslint/type-utils": "8.35.0", - "@typescript-eslint/utils": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0", + "@typescript-eslint/scope-manager": "8.37.0", + "@typescript-eslint/type-utils": "8.37.0", + "@typescript-eslint/utils": "8.37.0", + "@typescript-eslint/visitor-keys": "8.37.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -8104,22 +8056,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.35.0", + "@typescript-eslint/parser": "^8.37.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.0.tgz", - "integrity": "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.37.0.tgz", + "integrity": "sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.35.0", - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/typescript-estree": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0", + "@typescript-eslint/scope-manager": "8.37.0", + "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/typescript-estree": "8.37.0", + "@typescript-eslint/visitor-keys": "8.37.0", "debug": "^4.3.4" }, "engines": { @@ -8135,14 +8087,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.0.tgz", - "integrity": "sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.37.0.tgz", + "integrity": "sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.35.0", - "@typescript-eslint/types": "^8.35.0", + "@typescript-eslint/tsconfig-utils": "^8.37.0", + "@typescript-eslint/types": "^8.37.0", "debug": "^4.3.4" }, "engines": { @@ -8157,14 +8109,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.0.tgz", - "integrity": "sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.37.0.tgz", + "integrity": "sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0" + "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/visitor-keys": "8.37.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8175,9 +8127,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.0.tgz", - "integrity": "sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.37.0.tgz", + "integrity": "sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==", "dev": true, "license": "MIT", "engines": { @@ -8192,14 +8144,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.35.0.tgz", - "integrity": "sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.37.0.tgz", + "integrity": "sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.35.0", - "@typescript-eslint/utils": "8.35.0", + "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/typescript-estree": "8.37.0", + "@typescript-eslint/utils": "8.37.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -8216,9 +8169,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz", - "integrity": "sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.37.0.tgz", + "integrity": "sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==", "dev": true, "license": "MIT", "engines": { @@ -8230,16 +8183,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.0.tgz", - "integrity": "sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.37.0.tgz", + "integrity": "sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.35.0", - "@typescript-eslint/tsconfig-utils": "8.35.0", - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/visitor-keys": "8.35.0", + "@typescript-eslint/project-service": "8.37.0", + "@typescript-eslint/tsconfig-utils": "8.37.0", + "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/visitor-keys": "8.37.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8259,16 +8212,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.0.tgz", - "integrity": "sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.37.0.tgz", + "integrity": "sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.35.0", - "@typescript-eslint/types": "8.35.0", - "@typescript-eslint/typescript-estree": "8.35.0" + "@typescript-eslint/scope-manager": "8.37.0", + "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/typescript-estree": "8.37.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8283,13 +8236,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.0.tgz", - "integrity": "sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.37.0.tgz", + "integrity": "sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/types": "8.37.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -8314,16 +8267,16 @@ } }, "node_modules/@vitejs/plugin-basic-ssl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.2.0.tgz", - "integrity": "sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==", + "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": ">=14.21.3" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + "vite": "^6.0.0 || ^7.0.0" } }, "node_modules/@vitest/expect": { @@ -8442,15 +8395,15 @@ } }, "node_modules/@vscode/codicons": { - "version": "0.0.36", - "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.36.tgz", - "integrity": "sha512-wsNOvNMMJ2BY8rC2N2MNBG7yOowV3ov8KlvUE/AiVUlHKTfWsw3OgAOQduX7h0Un6GssKD3aoTVH+TF3DSQwKQ==", + "version": "0.0.38", + "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.38.tgz", + "integrity": "sha512-g4uInb63ECu0URD0DlyBzwXu2TksWUOaMSzQcKRoc3mXSNrjR3wC7EB3PA0Iq83eK8KCEKoVzkC1clt/r1euqA==", "license": "CC-BY-4.0" }, "node_modules/@vscode/markdown-it-katex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vscode/markdown-it-katex/-/markdown-it-katex-1.1.1.tgz", - "integrity": "sha512-3KTlbsRBPJQLE2YmLL7K6nunTlU+W9T5+FjfNdWuIUKgxSS6HWLQHaO3L4MkJi7z7MpIPpY+g4N+cWNBPE/MSA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vscode/markdown-it-katex/-/markdown-it-katex-1.1.2.tgz", + "integrity": "sha512-+4IIv5PgrmhKvW/3LpkpkGg257OViEhXkOOgCyj5KMsjsOfnRXkni8XAuuF9Ui5p3B8WnUovlDXAQNb8RJ/RaQ==", "license": "MIT", "dependencies": { "katex": "^0.16.4" @@ -8462,7 +8415,6 @@ "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -8473,24 +8425,21 @@ "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", - "peer": 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", - "peer": 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", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", @@ -8498,7 +8447,6 @@ "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -8510,8 +8458,7 @@ "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", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", @@ -8519,7 +8466,6 @@ "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -8533,7 +8479,6 @@ "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -8544,7 +8489,6 @@ "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -8554,8 +8498,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", @@ -8563,7 +8506,6 @@ "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -8581,7 +8523,6 @@ "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -8596,7 +8537,6 @@ "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -8610,7 +8550,6 @@ "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -8626,7 +8565,6 @@ "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -8637,16 +8575,14 @@ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, - "license": "BSD-3-Clause", - "peer": 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", - "peer": true + "license": "Apache-2.0" }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", @@ -8671,7 +8607,6 @@ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" @@ -8680,31 +8615,6 @@ "node": ">= 0.6" } }, - "node_modules/accepts/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", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/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", - "peer": true, - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -8718,6 +8628,19 @@ "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", @@ -8747,7 +8670,6 @@ "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -8762,7 +8684,6 @@ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -8773,9 +8694,9 @@ } }, "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "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": { @@ -8823,7 +8744,6 @@ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -8831,20 +8751,45 @@ "ajv": "^8.8.2" } }, + "node_modules/algoliasearch": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.32.0.tgz", + "integrity": "sha512-84xBncKNPBK8Ae89F65+SyVcOihrIbm/3N7to+GpRBHEUXGjA3ydWTMpcRW6jmFzkBQ/eqYy/y+J+NBpJWYjBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-abtesting": "5.32.0", + "@algolia/client-analytics": "5.32.0", + "@algolia/client-common": "5.32.0", + "@algolia/client-insights": "5.32.0", + "@algolia/client-personalization": "5.32.0", + "@algolia/client-query-suggestions": "5.32.0", + "@algolia/client-search": "5.32.0", + "@algolia/ingestion": "1.32.0", + "@algolia/monitoring": "1.32.0", + "@algolia/recommend": "5.32.0", + "@algolia/requester-browser-xhr": "5.32.0", + "@algolia/requester-fetch": "5.32.0", + "@algolia/requester-node-http": "5.32.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/angular-eslint": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/angular-eslint/-/angular-eslint-19.8.0.tgz", - "integrity": "sha512-5CfrQpuLXb2h7KDfezEH2z/m8HSl3Cy2GCkrp6/7DzgJFZnA9dauokHJFqlrWWiHzfEjgOz3Y8F/1nbbjnTZMg==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/angular-eslint/-/angular-eslint-20.1.1.tgz", + "integrity": "sha512-sJ/7vdBMmmYGq5054UHfBXCWHABo79bPbNiXVznqBu6mV85RZsT+IBV1JKLHmV4JtfHoNx1ElkSL2hR3ZeJbkQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": ">= 19.0.0 < 20.0.0", - "@angular-devkit/schematics": ">= 19.0.0 < 20.0.0", - "@angular-eslint/builder": "19.8.0", - "@angular-eslint/eslint-plugin": "19.8.0", - "@angular-eslint/eslint-plugin-template": "19.8.0", - "@angular-eslint/schematics": "19.8.0", - "@angular-eslint/template-parser": "19.8.0", + "@angular-devkit/core": ">= 20.0.0 < 21.0.0", + "@angular-devkit/schematics": ">= 20.0.0 < 21.0.0", + "@angular-eslint/builder": "20.1.1", + "@angular-eslint/eslint-plugin": "20.1.1", + "@angular-eslint/eslint-plugin-template": "20.1.1", + "@angular-eslint/schematics": "20.1.1", + "@angular-eslint/template-parser": "20.1.1", "@typescript-eslint/types": "^8.0.0", "@typescript-eslint/utils": "^8.0.0" }, @@ -8860,7 +8805,6 @@ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -8890,7 +8834,6 @@ "node >= 0.8.0" ], "license": "Apache-2.0", - "peer": true, "bin": { "ansi-html": "bin/ansi-html" } @@ -8899,6 +8842,7 @@ "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" @@ -8908,6 +8852,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -9007,9 +8952,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "dev": true, "funding": [ { @@ -9026,13 +8971,12 @@ } ], "license": "MIT", - "peer": true, "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -9077,33 +9021,21 @@ "@babel/core": "^7.8.0" } }, - "node_modules/babel-jest/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/babel-loader": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", - "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "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", - "peer": true, "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" + "find-up": "^5.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" }, "peerDependencies": { "@babel/core": "^7.12.0", - "webpack": ">=5" + "webpack": ">=5.61.0" } }, "node_modules/babel-plugin-istanbul": { @@ -9157,15 +9089,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", - "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", + "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", - "peer": true, "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.4", + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", "semver": "^6.3.1" }, "peerDependencies": { @@ -9178,7 +9109,6 @@ "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.3", "core-js-compat": "^3.40.0" @@ -9188,14 +9118,13 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", - "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", + "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", - "peer": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.4" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -9280,39 +9209,17 @@ "dev": true, "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==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/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", - "peer": true + "license": "MIT" }, "node_modules/beasties": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.2.tgz", - "integrity": "sha512-p4AF8uYzm9Fwu8m/hSVTCPXrRBPmB34hQpHsec2KOaR9CZmgoU8IOv4Cvwq4hgz2p4hLMNbsdNl5XeA6XbAQwA==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.4.tgz", + "integrity": "sha512-NmzN1zN1cvGccXFyZ73335+ASXwBlVWcUPssiUDIlFdfyatHPRRufjCd5w8oPaQPvVnf9ELklaCGb1gi9FBwIw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -9335,7 +9242,6 @@ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -9346,7 +9252,6 @@ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" }, @@ -9354,40 +9259,12 @@ "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/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", - "peer": true, "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", @@ -9403,27 +9280,12 @@ "node": ">=18" } }, - "node_modules/body-parser/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==", + "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", - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -9469,6 +9331,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -9532,31 +9395,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "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", @@ -9570,7 +9408,6 @@ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "run-applescript": "^7.0.0" }, @@ -9587,7 +9424,6 @@ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -9788,9 +9624,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001726", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz", - "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==", + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", "funding": [ { "type": "opencollective", @@ -9808,9 +9644,9 @@ "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", "dev": true, "license": "MIT", "dependencies": { @@ -9821,7 +9657,7 @@ "pathval": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/chalk": { @@ -9899,7 +9735,6 @@ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.0" } @@ -9984,82 +9819,81 @@ } }, "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=12" + "node": ">=20" } }, - "node_modules/cliui/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/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } }, - "node_modules/cliui/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==", + "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==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cliui/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==", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/cliui/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==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "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==", - "dev": true, - "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", - "peer": true, "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -10075,7 +9909,6 @@ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "isobject": "^3.0.1" }, @@ -10122,6 +9955,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -10134,6 +9968,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/colorette": { @@ -10152,14 +9987,6 @@ "node": ">= 12" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true, - "license": "ISC", - "peer": true - }, "node_modules/compare-versions": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", @@ -10172,7 +9999,6 @@ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -10181,18 +10007,17 @@ } }, "node_modules/compression": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", - "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", - "on-headers": "~1.0.2", + "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" }, @@ -10206,33 +10031,10 @@ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -10246,7 +10048,6 @@ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8" } @@ -10257,7 +10058,6 @@ "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "5.2.1" }, @@ -10265,35 +10065,12 @@ "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, "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", - "peer": true, "engines": { "node": ">= 0.6" } @@ -10310,7 +10087,6 @@ "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -10321,7 +10097,6 @@ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.6.0" } @@ -10332,7 +10107,6 @@ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-what": "^3.14.1" }, @@ -10341,19 +10115,17 @@ } }, "node_modules/copy-webpack-plugin": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", - "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.0.tgz", + "integrity": "sha512-FgR/h5a6hzJqATDGd9YG41SeDViH+0bkHn6WNXCi5zKAZkeESeSxLySSsFLHqLEVCh0E+rITmCf0dusXWYukeQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "fast-glob": "^3.3.2", "glob-parent": "^6.0.1", - "globby": "^14.0.0", "normalize-path": "^3.0.0", "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2" + "serialize-javascript": "^6.0.2", + "tinyglobby": "^0.2.12" }, "engines": { "node": ">= 18.12.0" @@ -10367,9 +10139,9 @@ } }, "node_modules/core-js": { - "version": "3.43.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.43.0.tgz", - "integrity": "sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==", + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.44.0.tgz", + "integrity": "sha512-aFCtd4l6GvAXwVEh3XbbVqJGHDJt0OZRa+5ePGx3LLwi12WfexqQxcsohb2wgsa/92xtl19Hd66G/L+TaAxDMw==", "hasInstallScript": true, "license": "MIT", "funding": { @@ -10378,14 +10150,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.43.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", - "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.44.0.tgz", + "integrity": "sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "browserslist": "^4.25.0" + "browserslist": "^4.25.1" }, "funding": { "type": "opencollective", @@ -10398,13 +10169,26 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "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", - "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -10510,7 +10294,6 @@ "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -10542,9 +10325,9 @@ } }, "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -10570,9 +10353,9 @@ } }, "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -10588,7 +10371,6 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "cssesc": "bin/cssesc" }, @@ -10930,9 +10712,9 @@ } }, "node_modules/decimal.js": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", "dev": true, "license": "MIT" }, @@ -10984,7 +10766,6 @@ "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" @@ -11002,7 +10783,6 @@ "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -11010,19 +10790,6 @@ "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==", - "dev": true, - "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", @@ -11047,7 +10814,6 @@ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -11061,7 +10827,6 @@ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -11103,8 +10868,7 @@ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/diff": { "version": "4.0.2", @@ -11145,23 +10909,12 @@ "node": ">=8" } }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/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", - "peer": true, "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -11272,8 +11025,7 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/ejs": { "version": "3.1.10", @@ -11292,9 +11044,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.176", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.176.tgz", - "integrity": "sha512-2nDK9orkm7M9ZZkjO3PjbEd3VUulQLyg5T9O3enJdFvUg46Hzd4DUvTvAuEgbdHYXyFsiG4A5sO9IzToMH1cDg==", + "version": "1.5.187", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.187.tgz", + "integrity": "sha512-cl5Jc9I0KGUoOoSbxvTywTa40uspGJt/BDBoDLoxJRSBpWh4FFXBsjNRHfQrONsV/OoEjDfHUmZQa2d6Ze4YgA==", "license": "ISC" }, "node_modules/emittery": { @@ -11329,7 +11081,6 @@ "version": "10.4.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, "license": "MIT" }, "node_modules/emojis-list": { @@ -11338,7 +11089,6 @@ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4" } @@ -11349,7 +11099,6 @@ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -11365,27 +11114,12 @@ "iconv-lite": "^0.6.2" } }, - "node_modules/encoding/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==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/enhanced-resolve": { "version": "5.18.2", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -11443,7 +11177,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "prr": "~1.0.1" }, @@ -11502,9 +11235,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", - "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz", + "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -11515,37 +11248,38 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.5", - "@esbuild/android-arm": "0.25.5", - "@esbuild/android-arm64": "0.25.5", - "@esbuild/android-x64": "0.25.5", - "@esbuild/darwin-arm64": "0.25.5", - "@esbuild/darwin-x64": "0.25.5", - "@esbuild/freebsd-arm64": "0.25.5", - "@esbuild/freebsd-x64": "0.25.5", - "@esbuild/linux-arm": "0.25.5", - "@esbuild/linux-arm64": "0.25.5", - "@esbuild/linux-ia32": "0.25.5", - "@esbuild/linux-loong64": "0.25.5", - "@esbuild/linux-mips64el": "0.25.5", - "@esbuild/linux-ppc64": "0.25.5", - "@esbuild/linux-riscv64": "0.25.5", - "@esbuild/linux-s390x": "0.25.5", - "@esbuild/linux-x64": "0.25.5", - "@esbuild/netbsd-arm64": "0.25.5", - "@esbuild/netbsd-x64": "0.25.5", - "@esbuild/openbsd-arm64": "0.25.5", - "@esbuild/openbsd-x64": "0.25.5", - "@esbuild/sunos-x64": "0.25.5", - "@esbuild/win32-arm64": "0.25.5", - "@esbuild/win32-ia32": "0.25.5", - "@esbuild/win32-x64": "0.25.5" + "@esbuild/aix-ppc64": "0.25.6", + "@esbuild/android-arm": "0.25.6", + "@esbuild/android-arm64": "0.25.6", + "@esbuild/android-x64": "0.25.6", + "@esbuild/darwin-arm64": "0.25.6", + "@esbuild/darwin-x64": "0.25.6", + "@esbuild/freebsd-arm64": "0.25.6", + "@esbuild/freebsd-x64": "0.25.6", + "@esbuild/linux-arm": "0.25.6", + "@esbuild/linux-arm64": "0.25.6", + "@esbuild/linux-ia32": "0.25.6", + "@esbuild/linux-loong64": "0.25.6", + "@esbuild/linux-mips64el": "0.25.6", + "@esbuild/linux-ppc64": "0.25.6", + "@esbuild/linux-riscv64": "0.25.6", + "@esbuild/linux-s390x": "0.25.6", + "@esbuild/linux-x64": "0.25.6", + "@esbuild/netbsd-arm64": "0.25.6", + "@esbuild/netbsd-x64": "0.25.6", + "@esbuild/openbsd-arm64": "0.25.6", + "@esbuild/openbsd-x64": "0.25.6", + "@esbuild/openharmony-arm64": "0.25.6", + "@esbuild/sunos-x64": "0.25.6", + "@esbuild/win32-arm64": "0.25.6", + "@esbuild/win32-ia32": "0.25.6", + "@esbuild/win32-x64": "0.25.6" } }, "node_modules/esbuild-wasm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.25.4.tgz", - "integrity": "sha512-2HlCS6rNvKWaSKhWaG/YIyRsTsL3gUrMP2ToZMBIjw9LM7vVcIs+rz8kE2vExvTJgvM8OKPqNpcHawY/BQc/qQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.25.5.tgz", + "integrity": "sha512-V/rbdOws2gDcnCAECfPrajhuafI0WY4WumUgc8ZHwOLnvmM0doLQ+dqvVFI2qkVxQsvo6880aC9IjpyDqcwwTw==", "dev": true, "license": "MIT", "bin": { @@ -11569,8 +11303,7 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -11586,19 +11319,19 @@ } }, "node_modules/eslint": { - "version": "9.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", - "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz", + "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.1", - "@eslint/config-helpers": "^0.2.1", - "@eslint/core": "^0.14.0", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.15.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.29.0", + "@eslint/js": "9.31.0", "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -11780,51 +11513,10 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-plugin-deprecation/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-deprecation/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/eslint-plugin-deprecation/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint-plugin-deprecation/node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "node_modules/eslint-plugin-deprecation/node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, "license": "MIT", "engines": { @@ -11835,20 +11527,20 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.13.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.13.5.tgz", - "integrity": "sha512-ThdhaLPqK78iVjWY1zIfe4WdcVB0NgxZzsOE38SRCc/i3lPIcdfkOuWMC6m96LAg9zAbPPY7LSTXXT0Pf8J7pQ==", + "version": "29.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.0.1.tgz", + "integrity": "sha512-EE44T0OSMCeXhDrrdsbKAhprobKkPtJTbQz5yEktysNpHeDZTAL1SfDTNKmcFfJkY6yrQLtTKZALrD3j/Gpmiw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/utils": "^8.0.0" }, "engines": { - "node": "^16.10.0 || ^18.12.0 || >=20.0.0" + "node": "^20.12.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", "jest": "*" }, "peerDependenciesMeta": { @@ -12115,7 +11807,6 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -12125,8 +11816,7 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", @@ -12134,11 +11824,33 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "license": "MIT", - "peer": true, "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.3", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.3.tgz", + "integrity": "sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -12197,9 +11909,9 @@ } }, "node_modules/expect-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", - "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -12228,7 +11940,6 @@ "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", @@ -12266,29 +11977,20 @@ "url": "https://opencollective.com/express" } }, - "node_modules/express/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==", + "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", - "peer": true, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/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", - "peer": true, - "dependencies": { - "mime-db": "^1.54.0" + "node": ">= 16" }, - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" } }, "node_modules/external-editor": { @@ -12306,6 +12008,19 @@ "node": ">=4" } }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -12324,6 +12039,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -12340,6 +12056,7 @@ "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" @@ -12389,6 +12106,7 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -12400,7 +12118,6 @@ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -12422,7 +12139,6 @@ "version": "6.4.6", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", - "dev": true, "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" @@ -12473,6 +12189,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -12487,7 +12204,6 @@ "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", @@ -12500,24 +12216,6 @@ "node": ">= 0.8" } }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -12551,7 +12249,6 @@ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "bin": { "flat": "cli.js" } @@ -12622,7 +12319,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=4.0" }, @@ -12655,7 +12351,6 @@ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -12666,7 +12361,6 @@ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "*" }, @@ -12694,7 +12388,6 @@ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -12782,7 +12475,6 @@ "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==", - "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -12937,36 +12629,49 @@ } }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "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": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby/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/globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", @@ -13023,8 +12728,7 @@ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/has-flag": { "version": "4.0.0", @@ -13125,7 +12829,6 @@ "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -13204,8 +12907,7 @@ "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", @@ -13213,7 +12915,6 @@ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -13231,7 +12932,6 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -13241,8 +12941,7 @@ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", @@ -13250,7 +12949,6 @@ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -13280,7 +12978,6 @@ "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/http-proxy": "^1.17.15", "debug": "^4.3.6", @@ -13339,19 +13036,18 @@ "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10.18" } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -13363,7 +13059,6 @@ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": "^10 || ^12 || >= 14" }, @@ -13371,27 +13066,6 @@ "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==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", @@ -13422,7 +13096,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "bin": { "image-size": "bin/image-size.js" }, @@ -13480,117 +13153,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "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", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.8.19" } }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "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": "MIT", + "license": "ISC", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "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": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, + "license": "ISC", "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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/interactjs": { - "version": "1.10.27", - "resolved": "https://registry.npmjs.org/interactjs/-/interactjs-1.10.27.tgz", - "integrity": "sha512-y/8RcCftGAF24gSp76X2JS3XpHiUvDQyhF8i7ujemBz77hwiHDuJzftHx7thY8cxGogwGiPJ+o97kWB6eAXnsA==", + "node_modules/interactjs": { + "version": "1.10.27", + "resolved": "https://registry.npmjs.org/interactjs/-/interactjs-1.10.27.tgz", + "integrity": "sha512-y/8RcCftGAF24gSp76X2JS3XpHiUvDQyhF8i7ujemBz77hwiHDuJzftHx7thY8cxGogwGiPJ+o97kWB6eAXnsA==", "license": "MIT", "dependencies": { "@interactjs/types": "1.10.27" @@ -13620,14 +13224,13 @@ } }, "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==", + "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", - "peer": true, "engines": { - "node": ">= 10" + "node": ">= 0.10" } }, "node_modules/is-arrayish": { @@ -13643,7 +13246,6 @@ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -13673,7 +13275,6 @@ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "is-docker": "cli.js" }, @@ -13688,6 +13289,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13720,6 +13322,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -13734,7 +13337,6 @@ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-docker": "^3.0.0" }, @@ -13749,13 +13351,16 @@ } }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-mobile": { @@ -13770,7 +13375,6 @@ "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16" }, @@ -13782,6 +13386,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -13793,7 +13398,6 @@ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -13807,7 +13411,6 @@ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -13824,8 +13427,7 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/is-stream": { "version": "2.0.1", @@ -13841,13 +13443,13 @@ } }, "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==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13858,8 +13460,7 @@ "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/is-wsl": { "version": "3.1.0", @@ -13867,7 +13468,6 @@ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-inside-container": "^1.0.0" }, @@ -13904,7 +13504,6 @@ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -14169,16 +13768,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-circus/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-cli": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", @@ -14213,6 +13802,90 @@ } } }, + "node_modules/jest-cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-cli/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/jest-cli/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/jest-cli/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/jest-cli/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/jest-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/jest-config": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", @@ -14294,16 +13967,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-config/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-date-mock": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/jest-date-mock/-/jest-date-mock-1.0.10.tgz", @@ -14474,9 +14137,9 @@ } }, "node_modules/jest-extended": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/jest-extended/-/jest-extended-5.0.3.tgz", - "integrity": "sha512-sxrNxTvHd5S0qFSchkYdr7WhLQb55qhr5sHcllPaPXXGhv0kXy/0VTtFbrFUPOLHyZRDpNoEmhzcPRT7b90MZA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/jest-extended/-/jest-extended-6.0.0.tgz", + "integrity": "sha512-SM249N/q33YQ9XE8E06qZSnFuuV4GQFx7WrrmIj4wQUAP43jAo6budLT482jdBhf8ASwUiEEfJNjej0UusYs5A==", "dev": true, "license": "MIT", "dependencies": { @@ -14486,11 +14149,15 @@ "node": "^18.12.0 || ^20.9.0 || ^22.11.0 || >=23.0.0" }, "peerDependencies": { - "jest": ">=27.2.5" + "jest": ">=27.2.5", + "typescript": ">=5.0.0" }, "peerDependenciesMeta": { "jest": { "optional": true + }, + "typescript": { + "optional": false } } }, @@ -14719,16 +14386,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", @@ -14876,16 +14533,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runner": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", @@ -14974,16 +14621,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -15206,7 +14843,6 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", - "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -15283,6 +14919,32 @@ } } }, + "node_modules/jsdom/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/jsdom/node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -15422,7 +15084,6 @@ "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "source-map-support": "^0.5.5" } @@ -15459,7 +15120,6 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -15490,19 +15150,17 @@ "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" } }, "node_modules/less": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/less/-/less-4.2.2.tgz", - "integrity": "sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.3.0.tgz", + "integrity": "sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -15512,7 +15170,7 @@ "lessc": "bin/lessc" }, "engines": { - "node": ">=6" + "node": ">=14" }, "optionalDependencies": { "errno": "^0.1.1", @@ -15525,12 +15183,11 @@ } }, "node_modules/less-loader": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.2.0.tgz", - "integrity": "sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==", + "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", - "peer": true, "engines": { "node": ">= 18.12.0" }, @@ -15559,7 +15216,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -15575,7 +15231,6 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -15610,7 +15265,6 @@ "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "webpack-sources": "^3.0.0" }, @@ -15689,32 +15343,6 @@ "url": "https://opencollective.com/lint-staged" } }, - "node_modules/lint-staged/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/lint-staged/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/lint-staged/node_modules/chalk": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", @@ -15738,14 +15366,7 @@ "node": ">=20" } }, - "node_modules/lint-staged/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/lint-staged/node_modules/listr2": { + "node_modules/listr2": { "version": "8.3.3", "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", @@ -15763,58 +15384,6 @@ "node": ">=18.0.0" } }, - "node_modules/lint-staged/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/lint-staged/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/listr2": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", - "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", - "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": ">=18.0.0" - } - }, "node_modules/listr2/node_modules/ansi-regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", @@ -15883,9 +15452,9 @@ } }, "node_modules/lmdb": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.2.6.tgz", - "integrity": "sha512-SuHqzPl7mYStna8WRotY8XX/EUZBjjv3QyKIByeCLFfC9uXT/OIHByEcA07PzbMfQAM0KYJtLgtpMRlIe5dErQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.1.tgz", + "integrity": "sha512-hoG9RIv42kdGJiieyElgWcKCTaw5S6Jqwyd1gLSVdsJ3+8MVm8e4yLronThiRJI9DazFAAs9xfB9nWeMQ2DWKA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -15901,12 +15470,13 @@ "download-lmdb-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.2.6", - "@lmdb/lmdb-darwin-x64": "3.2.6", - "@lmdb/lmdb-linux-arm": "3.2.6", - "@lmdb/lmdb-linux-arm64": "3.2.6", - "@lmdb/lmdb-linux-x64": "3.2.6", - "@lmdb/lmdb-win32-x64": "3.2.6" + "@lmdb/lmdb-darwin-arm64": "3.4.1", + "@lmdb/lmdb-darwin-x64": "3.4.1", + "@lmdb/lmdb-linux-arm": "3.4.1", + "@lmdb/lmdb-linux-arm64": "3.4.1", + "@lmdb/lmdb-linux-x64": "3.4.1", + "@lmdb/lmdb-win32-arm64": "3.4.1", + "@lmdb/lmdb-win32-x64": "3.4.1" } }, "node_modules/loader-runner": { @@ -15915,7 +15485,6 @@ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.11.5" } @@ -15926,7 +15495,6 @@ "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 12.13.0" } @@ -15964,8 +15532,7 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -15982,17 +15549,43 @@ "license": "MIT" }, "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==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -16298,7 +15891,6 @@ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -16309,7 +15901,6 @@ "integrity": "sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@jsonjoy.com/json-pack": "^1.0.3", "@jsonjoy.com/util": "^1.3.0", @@ -16330,7 +15921,6 @@ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -16349,6 +15939,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -16358,6 +15949,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -16371,6 +15963,7 @@ "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" @@ -16386,7 +15979,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "bin": { "mime": "cli.js" }, @@ -16395,25 +15987,23 @@ } }, "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==", + "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", - "peer": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "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", - "peer": true, "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" @@ -16448,7 +16038,6 @@ "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -16469,8 +16058,7 @@ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/minimatch": { "version": "9.0.5", @@ -16703,9 +16291,9 @@ "license": "MIT" }, "node_modules/msgpackr": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.4.tgz", - "integrity": "sha512-uaff7RG9VIC4jacFW9xzL3jc0iM32DNHe4jYVycBcjUePT/Klnfj7pqtWJt9khvDFizmjN2TlYniYmSS2LIaZg==", + "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, @@ -16742,7 +16330,6 @@ "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -16817,7 +16404,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "iconv-lite": "^0.6.3", "sax": "^1.2.4" @@ -16829,21 +16415,6 @@ "node": ">= 4.4.x" } }, - "node_modules/needle/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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", @@ -16859,8 +16430,7 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/ng-mocks": { "version": "14.13.5", @@ -16879,16 +16449,16 @@ } }, "node_modules/ngx-infinite-scroll": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/ngx-infinite-scroll/-/ngx-infinite-scroll-19.0.0.tgz", - "integrity": "sha512-Ft4xNNDLXoDGi2hF6ylehjxbG8JIgfoL6qDWWcebGMcbh1CEfEsh0HGkDuFlX/cBBMenRh2HFbXlYq8BAtbvLw==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/ngx-infinite-scroll/-/ngx-infinite-scroll-20.0.0.tgz", + "integrity": "sha512-Mh7lg85jeDPzZirxPHjyMagCcC3vbk+yPO5uoXHNkmGer8MrO6vOydOX306qY4QYDyMJ+ngIQgpl5HJXfc590A==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": ">=19.0.0 <20.0.0", - "@angular/core": ">=19.0.0 <20.0.0" + "@angular/common": ">=20.0.0 <21.0.0", + "@angular/core": ">=20.0.0 <21.0.0" } }, "node_modules/ngx-webstorage": { @@ -16918,7 +16488,6 @@ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, "license": "(BSD-3-Clause OR GPL-2.0)", - "peer": true, "engines": { "node": ">= 6.13.0" } @@ -17101,7 +16670,6 @@ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -17159,16 +16727,16 @@ } }, "node_modules/npm-packlist": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-9.0.0.tgz", - "integrity": "sha512-8qSayfmHJQTx3nJWYbbUmflpyarbLMBc6LCAjYsiGtXxDB68HaZpb8re6zeaLGxZzDuMdhsg70jryJe+RrItVQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.0.tgz", + "integrity": "sha512-rht9U6nS8WOBDc53eipZNPo5qkAV4X2rhKE2Oj1DYUQ3DieXfj0mKkVmjnf3iuNdtMd8WfLdi2L6ASkD/8a+Kg==", "dev": true, "license": "ISC", "dependencies": { "ignore-walk": "^7.0.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm-pick-manifest": { @@ -17255,7 +16823,6 @@ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" }, @@ -17278,8 +16845,7 @@ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", @@ -17287,7 +16853,6 @@ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -17296,12 +16861,11 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -17333,12 +16897,11 @@ } }, "node_modules/open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz", + "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", @@ -17371,63 +16934,71 @@ } }, "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==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", "dev": true, "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" + "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": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/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==", + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ora/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==", + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/ora/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/ordered-binary": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz", @@ -17497,7 +17068,6 @@ "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/retry": "0.12.2", "is-network-error": "^1.0.0", @@ -17516,7 +17086,6 @@ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 4" } @@ -17539,9 +17108,9 @@ "license": "BlueOak-1.0.0" }, "node_modules/pacote": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-20.0.0.tgz", - "integrity": "sha512-pRjC5UFwZCgx9kUFDVM9YEahv4guZ1nSLqwmWiLUnDbGsjs+U5w7z6Uc8HNR1a6x8qnu5y9xtGE6D1uAuYz+0A==", + "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": { @@ -17554,7 +17123,7 @@ "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^12.0.0", - "npm-packlist": "^9.0.0", + "npm-packlist": "^10.0.0", "npm-pick-manifest": "^10.0.0", "npm-registry-fetch": "^18.0.0", "proc-log": "^5.0.0", @@ -17567,7 +17136,7 @@ "pacote": "bin/index.js" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/pako": { @@ -17627,15 +17196,14 @@ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.10" } }, "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "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" @@ -17645,13 +17213,13 @@ } }, "node_modules/parse5-html-rewriting-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", - "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.1.0.tgz", + "integrity": "sha512-2ifK6Jb+ONoqOy5f+cYHsqvx1obHQdvIk13Jmt/5ezxP0U9p+fqd+R6O73KblGswyuzBYfetmsfK9ThMgnuPPg==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^4.3.0", + "entities": "^6.0.0", "parse5": "^7.0.0", "parse5-sax-parser": "^7.0.0" }, @@ -17659,23 +17227,11 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5-sax-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", - "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { + "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" @@ -17684,13 +17240,76 @@ "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", - "peer": true, + "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-sax-parser/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/node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.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" } @@ -17856,23 +17475,18 @@ "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16" } }, "node_modules/path-type": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", - "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", - "peer": true, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/pathe": { @@ -17917,15 +17531,15 @@ "license": "0BSD" }, "node_modules/pdfjs-dist": { - "version": "5.3.31", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.3.31.tgz", - "integrity": "sha512-EhPdIjNX0fcdwYQO+e3BAAJPXt+XI29TZWC7COhIXs/K0JHcUt1Gdz1ITpebTwVMFiLsukdUZ3u0oTO7jij+VA==", + "version": "5.3.93", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.3.93.tgz", + "integrity": "sha512-w3fQKVL1oGn8FRyx5JUG5tnbblggDqyx2XzA5brsJ5hSuS+I0NdnJANhmeWKLjotdbPQucLBug5t0MeWr0AAdg==", "license": "Apache-2.0", "engines": { "node": ">=20.16.0 || >=22.3.0" }, "optionalDependencies": { - "@napi-rs/canvas": "^0.1.67" + "@napi-rs/canvas": "^0.1.71" } }, "node_modules/pepjs": { @@ -17944,7 +17558,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -17973,7 +17586,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6" } @@ -17989,124 +17601,95 @@ } }, "node_modules/piscina": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.8.0.tgz", - "integrity": "sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.1.2.tgz", + "integrity": "sha512-9cE/BTA/xhDiyNUEj6EKWLEQC17fh/24ydYzQwcA7QdYh75K6kzL2GHvxDF5i9rFGtUaaKk7/u4xp07qiKXccQ==", "dev": true, "license": "MIT", + "engines": { + "node": ">=20.x" + }, "optionalDependencies": { "@napi-rs/nice": "^1.0.1" } }, + "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/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "find-up": "^6.3.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/pkg-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/pkg-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "p-locate": "^6.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/pkg-dir/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "yocto-queue": "^1.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "p-limit": "^2.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", - "dev": true, - "license": "MIT", - "peer": true, "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/postcss": { @@ -18144,7 +17727,6 @@ "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cosmiconfig": "^9.0.0", "jiti": "^1.20.0", @@ -18184,7 +17766,6 @@ "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": "^10 || ^12 || >= 14" }, @@ -18198,7 +17779,6 @@ "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", @@ -18217,7 +17797,6 @@ "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -18234,7 +17813,6 @@ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "icss-utils": "^5.0.0" }, @@ -18251,7 +17829,6 @@ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -18277,9 +17854,9 @@ } }, "node_modules/prettier": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.1.tgz", - "integrity": "sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A==", + "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": { @@ -18344,23 +17921,24 @@ "peer": true }, "node_modules/primeng": { - "version": "19.1.3", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-19.1.3.tgz", - "integrity": "sha512-KsrvJFblKg28kA6d4npnnABjKClmJv0CgDT/kOxFq5onQNBy4547DJzRGMba4+CMLKjHWWkYWuC+XSkPMNFrZg==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-20.0.0.tgz", + "integrity": "sha512-F0r7tWqIGKInKSPxyVTXkj+XP/4mz78cWECHuu045JV0O1n7YMgi/2AuEAAqhgKOReLLkRBHB0pafEtH1tnYCQ==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@primeuix/styled": "^0.3.2", - "@primeuix/utils": "^0.3.2", + "@primeuix/styled": "^0.7.0", + "@primeuix/styles": "^1.2.1", + "@primeuix/utils": "^0.6.0", "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/animations": "^19.0.0", - "@angular/cdk": "^19.0.0", - "@angular/common": "^19.0.0", - "@angular/core": "^19.0.0", - "@angular/forms": "^19.0.0", - "@angular/platform-browser": "^19.0.0", - "@angular/router": "^19.0.0", + "@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" } }, @@ -18431,7 +18009,6 @@ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -18440,25 +18017,13 @@ "node": ">= 0.10" } }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "license": "MIT", - "peer": true, - "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, - "peer": true + "optional": true }, "node_modules/punycode": { "version": "2.3.1", @@ -18502,7 +18067,6 @@ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "side-channel": "^1.1.0" }, @@ -18517,6 +18081,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -18539,7 +18104,6 @@ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -18550,7 +18114,6 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -18561,7 +18124,6 @@ "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -18572,20 +18134,6 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -18737,6 +18285,12 @@ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "license": "MIT" }, + "node_modules/readable-stream/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==", + "license": "MIT" + }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", @@ -18788,8 +18342,7 @@ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.2.0", @@ -18797,7 +18350,6 @@ "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "regenerate": "^1.4.2" }, @@ -18810,8 +18362,7 @@ "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/regexpu-core": { "version": "6.2.0", @@ -18819,7 +18370,6 @@ "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", @@ -18837,8 +18387,7 @@ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/regjsparser": { "version": "0.12.0", @@ -18846,7 +18395,6 @@ "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "jsesc": "~3.0.2" }, @@ -18860,7 +18408,6 @@ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, "license": "MIT", - "peer": true, "bin": { "jsesc": "bin/jsesc" }, @@ -18872,6 +18419,7 @@ "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" @@ -18892,8 +18440,7 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.10", @@ -18955,7 +18502,6 @@ "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "adjust-sourcemap-loader": "^4.0.0", "convert-source-map": "^1.7.0", @@ -18973,7 +18519,6 @@ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -18989,7 +18534,6 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -19051,6 +18595,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -19168,13 +18713,13 @@ } }, "node_modules/rollup": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", - "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.1.tgz", + "integrity": "sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -19184,42 +18729,35 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.8", - "@rollup/rollup-android-arm64": "4.34.8", - "@rollup/rollup-darwin-arm64": "4.34.8", - "@rollup/rollup-darwin-x64": "4.34.8", - "@rollup/rollup-freebsd-arm64": "4.34.8", - "@rollup/rollup-freebsd-x64": "4.34.8", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", - "@rollup/rollup-linux-arm-musleabihf": "4.34.8", - "@rollup/rollup-linux-arm64-gnu": "4.34.8", - "@rollup/rollup-linux-arm64-musl": "4.34.8", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", - "@rollup/rollup-linux-riscv64-gnu": "4.34.8", - "@rollup/rollup-linux-s390x-gnu": "4.34.8", - "@rollup/rollup-linux-x64-gnu": "4.34.8", - "@rollup/rollup-linux-x64-musl": "4.34.8", - "@rollup/rollup-win32-arm64-msvc": "4.34.8", - "@rollup/rollup-win32-ia32-msvc": "4.34.8", - "@rollup/rollup-win32-x64-msvc": "4.34.8", + "@rollup/rollup-android-arm-eabi": "4.44.1", + "@rollup/rollup-android-arm64": "4.44.1", + "@rollup/rollup-darwin-arm64": "4.44.1", + "@rollup/rollup-darwin-x64": "4.44.1", + "@rollup/rollup-freebsd-arm64": "4.44.1", + "@rollup/rollup-freebsd-x64": "4.44.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.44.1", + "@rollup/rollup-linux-arm-musleabihf": "4.44.1", + "@rollup/rollup-linux-arm64-gnu": "4.44.1", + "@rollup/rollup-linux-arm64-musl": "4.44.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.44.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.44.1", + "@rollup/rollup-linux-riscv64-gnu": "4.44.1", + "@rollup/rollup-linux-riscv64-musl": "4.44.1", + "@rollup/rollup-linux-s390x-gnu": "4.44.1", + "@rollup/rollup-linux-x64-gnu": "4.44.1", + "@rollup/rollup-linux-x64-musl": "4.44.1", + "@rollup/rollup-win32-arm64-msvc": "4.44.1", + "@rollup/rollup-win32-ia32-msvc": "4.44.1", + "@rollup/rollup-win32-x64-msvc": "4.44.1", "fsevents": "~2.3.2" } }, - "node_modules/rollup/node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" - }, "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", - "peer": true, "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", @@ -19244,7 +18782,6 @@ "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -19256,6 +18793,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -19285,9 +18823,24 @@ } }, "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==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, "node_modules/safer-buffer": { @@ -19324,7 +18877,6 @@ "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "neo-async": "^2.6.2" }, @@ -19366,8 +18918,7 @@ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "dev": true, "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/saxes": { "version": "6.0.0", @@ -19397,7 +18948,6 @@ "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -19418,7 +18968,6 @@ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ajv": "^8.0.0" }, @@ -19436,8 +18985,7 @@ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", @@ -19445,7 +18993,6 @@ "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -19472,7 +19019,6 @@ "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "^4.3.5", "encodeurl": "^2.0.0", @@ -19490,38 +19036,12 @@ "node": ">= 18" } }, - "node_modules/send/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", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/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", - "peer": true, - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "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", - "peer": true, "dependencies": { "randombytes": "^2.1.0" } @@ -19532,7 +19052,6 @@ "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -19552,7 +19071,6 @@ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -19567,7 +19085,6 @@ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -19578,7 +19095,6 @@ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -19594,8 +19110,30 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true, - "license": "ISC", - "peer": 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/negotiator": { "version": "0.6.3", @@ -19603,7 +19141,6 @@ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -19613,8 +19150,7 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", @@ -19622,7 +19158,6 @@ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -19633,7 +19168,6 @@ "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", @@ -19684,8 +19218,7 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", @@ -19693,7 +19226,6 @@ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "kind-of": "^6.0.2" }, @@ -19736,7 +19268,6 @@ "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" }, @@ -19750,7 +19281,6 @@ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -19771,7 +19301,6 @@ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -19789,7 +19318,6 @@ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -19809,7 +19337,6 @@ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -19879,17 +19406,13 @@ "license": "MIT" }, "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/slice-ansi": { @@ -19945,7 +19468,6 @@ "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -19958,15 +19480,14 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/socks": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz", - "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.6.tgz", + "integrity": "sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==", "dev": true, "license": "MIT", "dependencies": { @@ -20019,7 +19540,6 @@ "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "iconv-lite": "^0.6.3", "source-map-js": "^1.0.2" @@ -20035,20 +19555,6 @@ "webpack": "^5.72.1" } }, - "node_modules/source-map-loader/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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -20112,7 +19618,6 @@ "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -20130,7 +19635,6 @@ "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -20146,7 +19650,6 @@ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -20218,7 +19721,6 @@ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -20230,6 +19732,19 @@ "dev": true, "license": "MIT" }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -20239,6 +19754,12 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/string_decoder/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==", + "license": "MIT" + }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", @@ -20267,7 +19788,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", @@ -20318,7 +19838,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -20331,7 +19850,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -20347,6 +19865,7 @@ "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" @@ -20499,16 +20018,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -20538,7 +20047,6 @@ "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -20632,15 +20140,14 @@ "license": "ISC" }, "node_modules/terser": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", - "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "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", - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", + "acorn": "^8.14.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -20657,7 +20164,6 @@ "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -20693,7 +20199,6 @@ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -20709,7 +20214,6 @@ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -20725,8 +20229,7 @@ "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", - "peer": true + "license": "MIT" }, "node_modules/test-exclude": { "version": "6.0.0", @@ -20773,7 +20276,6 @@ "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", "dev": true, "license": "Unlicense", - "peer": true, "engines": { "node": ">=10.18" }, @@ -20786,8 +20288,7 @@ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/tinybench": { "version": "2.9.0", @@ -20813,7 +20314,6 @@ "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", @@ -20910,6 +20410,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -20924,7 +20425,6 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.6" } @@ -20970,7 +20470,6 @@ "integrity": "sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==", "dev": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=10.0" }, @@ -20988,7 +20487,6 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", - "peer": true, "bin": { "tree-kill": "cli.js" } @@ -21203,15 +20701,15 @@ "license": "0BSD" }, "node_modules/tuf-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-3.0.1.tgz", - "integrity": "sha512-+68OP1ZzSF84rTckf3FA95vJ1Zlx/uaXyiiKyPd1pA4rZNkpEvDAKmsu1xUSmbF/chCRYgZ6UZkDwC7PmzmAyA==", + "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.3.6", - "make-fetch-happen": "^14.0.1" + "debug": "^4.4.1", + "make-fetch-happen": "^14.0.3" }, "engines": { "node": "^18.17.0 || >=20.5.0" @@ -21268,7 +20766,6 @@ "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", @@ -21278,43 +20775,18 @@ "node": ">= 0.6" } }, - "node_modules/type-is/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", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/type-is/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", - "peer": true, - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "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", - "peer": 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==", + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -21334,15 +20806,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.35.0.tgz", - "integrity": "sha512-uEnz70b7kBz6eg/j0Czy6K5NivaYopgxRjsnAJ2Fx5oTLo3wefTHIbL7AkQr1+7tJCRVpTs/wiM8JR/11Loq9A==", + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.37.0.tgz", + "integrity": "sha512-TnbEjzkE9EmcO0Q2zM+GE8NQLItNAJpMmED1BdgoBMYNdqMhzlbqfdSwiRlAzEK2pA9UzVW0gzaaIzXWg2BjfA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.35.0", - "@typescript-eslint/parser": "8.35.0", - "@typescript-eslint/utils": "8.35.0" + "@typescript-eslint/eslint-plugin": "8.37.0", + "@typescript-eslint/parser": "8.37.0", + "@typescript-eslint/typescript-estree": "8.37.0", + "@typescript-eslint/utils": "8.37.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -21390,7 +20863,6 @@ "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -21401,7 +20873,6 @@ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -21416,7 +20887,6 @@ "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -21427,25 +20897,10 @@ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/unique-filename": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz", @@ -21502,7 +20957,6 @@ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -21631,7 +21085,6 @@ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -21667,427 +21120,121 @@ } }, "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "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/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vite-tsconfig-paths": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-5.1.4.tgz", - "integrity": "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "globrex": "^0.1.2", - "tsconfck": "^3.0.3" - }, - "peerDependencies": { - "vite": "*" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz", - "integrity": "sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-android-arm64": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.1.tgz", - "integrity": "sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.1.tgz", - "integrity": "sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.1.tgz", - "integrity": "sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.1.tgz", - "integrity": "sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.1.tgz", - "integrity": "sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.1.tgz", - "integrity": "sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.1.tgz", - "integrity": "sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.1.tgz", - "integrity": "sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.1.tgz", - "integrity": "sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.1.tgz", - "integrity": "sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.1.tgz", - "integrity": "sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.1.tgz", - "integrity": "sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.1.tgz", - "integrity": "sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.1.tgz", - "integrity": "sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.1.tgz", - "integrity": "sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.1.tgz", - "integrity": "sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.1.tgz", - "integrity": "sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/vite/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.1.tgz", - "integrity": "sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/vite/node_modules/rollup": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.1.tgz", - "integrity": "sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.5.tgz", + "integrity": "sha512-1mncVwJxy2C9ThLwz0+2GKZyEXuC3MyWtAAlNftlZZXZDP3AJt5FmwcMit/IGGaNZ8ZOB2BNO/HFUB+CpN0NQw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "esbuild": "^0.25.0", + "fdir": "^6.4.6", + "picomatch": "^4.0.2", + "postcss": "^8.5.6", + "rollup": "^4.40.0", + "tinyglobby": "^0.2.14" }, "bin": { - "rollup": "dist/bin/rollup" + "vite": "bin/vite.js" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.44.1", - "@rollup/rollup-android-arm64": "4.44.1", - "@rollup/rollup-darwin-arm64": "4.44.1", - "@rollup/rollup-darwin-x64": "4.44.1", - "@rollup/rollup-freebsd-arm64": "4.44.1", - "@rollup/rollup-freebsd-x64": "4.44.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.44.1", - "@rollup/rollup-linux-arm-musleabihf": "4.44.1", - "@rollup/rollup-linux-arm64-gnu": "4.44.1", - "@rollup/rollup-linux-arm64-musl": "4.44.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.44.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.44.1", - "@rollup/rollup-linux-riscv64-gnu": "4.44.1", - "@rollup/rollup-linux-riscv64-musl": "4.44.1", - "@rollup/rollup-linux-s390x-gnu": "4.44.1", - "@rollup/rollup-linux-x64-gnu": "4.44.1", - "@rollup/rollup-linux-x64-musl": "4.44.1", - "@rollup/rollup-win32-arm64-msvc": "4.44.1", - "@rollup/rollup-win32-ia32-msvc": "4.44.1", - "@rollup/rollup-win32-x64-msvc": "4.44.1", - "fsevents": "~2.3.2" + "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/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-tsconfig-paths": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-5.1.4.tgz", + "integrity": "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^3.0.3" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } } }, "node_modules/vitest": { @@ -22187,9 +21334,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "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": { @@ -22206,21 +21353,10 @@ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "license": "MIT", - "peer": true, "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==", - "dev": true, - "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", @@ -22315,23 +21451,23 @@ } }, "node_modules/webpack": { - "version": "5.99.9", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz", - "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==", + "version": "5.100.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.100.2.tgz", + "integrity": "sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", + "@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.14.0", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", + "enhanced-resolve": "^5.17.2", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -22345,7 +21481,7 @@ "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" + "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" @@ -22369,7 +21505,6 @@ "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "colorette": "^2.0.10", "memfs": "^4.6.0", @@ -22394,13 +21529,35 @@ } } }, + "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", - "peer": true, "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", @@ -22459,7 +21616,6 @@ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -22485,7 +21641,6 @@ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -22499,7 +21654,6 @@ "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -22519,13 +21673,22 @@ } } }, + "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/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8.6" }, @@ -22539,7 +21702,6 @@ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -22553,7 +21715,6 @@ "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -22569,7 +21730,6 @@ "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10.13.0" } @@ -22580,7 +21740,6 @@ "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "typed-assert": "^1.0.8" }, @@ -22603,7 +21762,6 @@ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -22618,7 +21776,6 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=4.0" } @@ -22628,8 +21785,30 @@ "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", - "peer": true + "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", @@ -22637,7 +21816,6 @@ "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -22653,7 +21831,6 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=0.8.0" } @@ -22677,19 +21854,6 @@ "node": ">=18" } }, - "node_modules/whatwg-encoding/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -22752,8 +21916,7 @@ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/word-wrap": { "version": "1.2.5", @@ -22892,9 +22055,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "license": "MIT", "engines": { @@ -22978,21 +22141,20 @@ } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^7.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yargs-parser": { @@ -23004,35 +22166,6 @@ "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/yargs/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/yargs/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/yargs/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/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -23069,6 +22202,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "3.25.75", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.75.tgz", + "integrity": "sha512-OhpzAmVzabPOL6C3A3gpAifqr9MqihV/Msx3gor2b2kviCgcb+HM9SEOpMWwwNp9MRunWnhtAKUoo0AHhjyPPg==", + "dev": 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", diff --git a/package.json b/package.json index 63846b637fcb..b2ff0c6f15d4 100644 --- a/package.json +++ b/package.json @@ -13,38 +13,38 @@ "node_modules" ], "dependencies": { - "@angular/animations": "19.2.14", - "@angular/cdk": "19.2.18", - "@angular/common": "19.2.14", - "@angular/compiler": "19.2.14", - "@angular/core": "19.2.14", - "@angular/forms": "19.2.14", - "@angular/localize": "19.2.14", - "@angular/material": "19.2.18", - "@angular/platform-browser": "19.2.14", - "@angular/platform-browser-dynamic": "19.2.14", - "@angular/router": "19.2.14", - "@angular/service-worker": "19.2.14", + "@angular/animations": "20.1.2", + "@angular/cdk": "20.1.2", + "@angular/common": "20.1.2", + "@angular/compiler": "20.1.2", + "@angular/core": "20.1.2", + "@angular/forms": "20.1.2", + "@angular/localize": "20.1.2", + "@angular/material": "20.1.2", + "@angular/platform-browser": "20.1.2", + "@angular/platform-browser-dynamic": "20.1.2", + "@angular/router": "20.1.2", + "@angular/service-worker": "20.1.2", "@ctrl/ngx-emoji-mart": "9.2.0", - "@danielmoncada/angular-datetime-picker": "19.1.2", + "@danielmoncada/angular-datetime-picker": "20.0.0", "@fingerprintjs/fingerprintjs": "4.6.2", - "@fortawesome/angular-fontawesome": "1.0.0", + "@fortawesome/angular-fontawesome": "2.0.1", "@fortawesome/fontawesome-svg-core": "6.7.2", "@fortawesome/free-regular-svg-icons": "6.7.2", "@fortawesome/free-solid-svg-icons": "6.7.2", "@ls1intum/apollon": "3.4.0", - "@ng-bootstrap/ng-bootstrap": "18.0.0", + "@ng-bootstrap/ng-bootstrap": "19.0.1", "@ngx-translate/core": "16.0.4", "@ngx-translate/http-loader": "16.0.1", - "@sentry/angular": "9.32.0", - "@siemens/ngx-datatable": "22.4.1", - "@swimlane/ngx-charts": "22.0.0", - "@swimlane/ngx-graph": "10.0.0", - "@vscode/codicons": "0.0.36", - "@vscode/markdown-it-katex": "1.1.1", + "@sentry/angular": "9.40.0", + "@siemens/ngx-datatable": "24.1.0", + "@swimlane/ngx-charts": "23.0.0-alpha.0", + "@swimlane/ngx-graph": "11.0.0-alpha.0", + "@vscode/codicons": "0.0.38", + "@vscode/markdown-it-katex": "1.1.2", "bootstrap": "5.3.7", "compare-versions": "6.1.1", - "core-js": "3.43.0", + "core-js": "3.44.0", "crypto-js": "4.2.0", "dayjs": "1.11.13", "diff-match-patch-typescript": "1.1.0", @@ -65,13 +65,13 @@ "markdown-it-highlightjs": "4.2.0", "mobile-drag-drop": "3.0.0-rc.0", "monaco-editor": "0.52.2", - "ngx-infinite-scroll": "19.0.0", + "ngx-infinite-scroll": "20.0.0", "ngx-webstorage": "19.0.1", "pako": "2.1.0", "papaparse": "5.5.3", "pdf-lib": "1.17.1", - "pdfjs-dist": "5.3.31", - "primeng": "19.1.3", + "pdfjs-dist": "5.3.93", + "primeng": "20.0.0", "rxjs": "7.8.2", "simple-statistics": "7.8.8", "smoothscroll-polyfill": "0.4.4", @@ -90,44 +90,44 @@ "cookie": "1.0.2", "critters": "0.0.25", "debug": "4.4.1", - "esbuild": "0.25.5", + "esbuild": "0.25.6", "eslint-plugin-deprecation": { - "eslint": "^9.29.0" + "eslint": "^9.31.0" }, "express": "5.1.0", "jsdom": "26.1.0", "katex": "0.16.22", - "ng-mocks": { - "@angular/common": "^19.2.0", - "@angular/core": "^19.2.0", - "@angular/forms": "^19.2.0", - "@angular/platform-browser": "^19.2.0" + "ngx-webstorage": { + "@angular/common": "^20.0.0", + "@angular/core": "^20.0.0", + "@angular/platform-browser": "^20.0.0" }, "postcss": "8.5.6", "rimraf": "6.0.1", "semver": "7.7.2", "tough-cookie": "5.1.2", - "vite": "6.3.5", - "webpack": "5.99.9", + "vite": "7.0.5", + "webpack": "5.100.2", "webpack-dev-middleware": "7.4.2", "webpack-dev-server": "5.2.2", "word-wrap": "1.2.5", - "ws": "8.18.2", + "ws": "8.18.3", "yargs-parser": "22.0.0" }, "devDependencies": { - "@analogjs/vite-plugin-angular": "1.19.0", - "@angular-builders/jest": "19.0.1", - "@angular-eslint/builder": "19.8.0", - "@angular-eslint/eslint-plugin": "19.8.0", - "@angular-eslint/eslint-plugin-template": "19.8.0", - "@angular-eslint/schematics": "19.8.0", - "@angular-eslint/template-parser": "19.8.0", - "@angular/build": "19.2.15", - "@angular/cli": "19.2.15", - "@angular/compiler-cli": "19.2.14", - "@angular/language-service": "19.2.14", - "@sentry/types": "9.32.0", + "@analogjs/vite-plugin-angular": "1.19.1", + "@angular-builders/jest": "20.0.0", + "@angular-devkit/build-angular": "20.1.1", + "@angular-eslint/builder": "20.1.1", + "@angular-eslint/eslint-plugin": "20.1.1", + "@angular-eslint/eslint-plugin-template": "20.1.1", + "@angular-eslint/schematics": "20.1.1", + "@angular-eslint/template-parser": "20.1.1", + "@angular/build": "20.1.1", + "@angular/cli": "20.1.1", + "@angular/compiler-cli": "20.1.2", + "@angular/language-service": "20.1.2", + "@sentry/types": "9.40.0", "@testing-library/angular": "17.4.0", "@types/crypto-js": "4.2.2", "@types/d3-shape": "3.1.7", @@ -135,21 +135,21 @@ "@types/jest": "29.5.14", "@types/lodash-es": "4.17.12", "@types/markdown-it": "14.1.2", - "@types/node": "22.15.31", + "@types/node": "22.15.33", "@types/pako": "2.0.3", "@types/papaparse": "5.3.16", "@types/smoothscroll-polyfill": "0.3.4", "@types/turndown": "5.0.5", "@types/uuid": "10.0.0", - "@typescript-eslint/eslint-plugin": "8.35.0", - "@typescript-eslint/parser": "8.35.0", - "@typescript-eslint/utils": "8.35.0", - "angular-eslint": "19.8.0", + "@typescript-eslint/eslint-plugin": "8.37.0", + "@typescript-eslint/parser": "8.37.0", + "@typescript-eslint/utils": "8.37.0", + "angular-eslint": "20.1.1", "cross-env": "7.0.3", - "eslint": "9.29.0", + "eslint": "9.31.0", "eslint-config-prettier": "10.1.5", "eslint-plugin-deprecation": "3.0.0", - "eslint-plugin-jest": "28.13.5", + "eslint-plugin-jest": "29.0.1", "eslint-plugin-jest-extended": "3.0.0", "eslint-plugin-prettier": "5.5.1", "folder-hash": "4.1.1", @@ -157,19 +157,19 @@ "jest": "29.7.0", "jest-canvas-mock": "2.5.2", "jest-date-mock": "1.0.10", - "jest-extended": "5.0.3", + "jest-extended": "6.0.0", "jest-fail-on-console": "3.3.1", "jest-junit": "16.0.0", "jest-preset-angular": "14.6.0", "lint-staged": "16.1.2", "ng-mocks": "14.13.5", "patch-package": "8.0.0", - "prettier": "3.6.1", + "prettier": "3.6.2", "rimraf": "6.0.1", "sass": "1.89.2", "ts-jest": "29.4.0", "typescript": "5.8.3", - "typescript-eslint": "8.35.0", + "typescript-eslint": "8.37.0", "vite-tsconfig-paths": "5.1.4", "vitest": "3.2.4", "weak-napi": "2.0.2" diff --git a/patches/@swimlane+ngx-graph+10.0.0.patch b/patches/@swimlane+ngx-graph+10.0.0.patch deleted file mode 100644 index 2843ab5eb28d..000000000000 --- a/patches/@swimlane+ngx-graph+10.0.0.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/node_modules/@swimlane/ngx-graph/esm2022/lib/graph/graph.component.mjs b/node_modules/@swimlane/ngx-graph/esm2022/lib/graph/graph.component.mjs -index fadcfa7..6a6ab52 100644 ---- a/node_modules/@swimlane/ngx-graph/esm2022/lib/graph/graph.component.mjs -+++ b/node_modules/@swimlane/ngx-graph/esm2022/lib/graph/graph.component.mjs -@@ -197,7 +197,7 @@ export class GraphComponent { - if (layoutSettings) { - this.setLayoutSettings(this.layoutSettings); - } -- if (this.layout && this.nodes.length && this.links.length) { -+ if (this.layout && this.nodes && this.links) { - this.update(); - } - } -diff --git a/node_modules/@swimlane/ngx-graph/fesm2022/swimlane-ngx-graph.mjs b/node_modules/@swimlane/ngx-graph/fesm2022/swimlane-ngx-graph.mjs -index 0e851a7..c8dce60 100644 ---- a/node_modules/@swimlane/ngx-graph/fesm2022/swimlane-ngx-graph.mjs -+++ b/node_modules/@swimlane/ngx-graph/fesm2022/swimlane-ngx-graph.mjs -@@ -1478,7 +1478,7 @@ class GraphComponent { - if (layoutSettings) { - this.setLayoutSettings(this.layoutSettings); - } -- if (this.layout && this.nodes.length && this.links.length) { -+ if (this.layout && this.nodes && this.links) { - this.update(); - } - } diff --git a/patches/@swimlane+ngx-graph+11.0.0-alpha.0.patch b/patches/@swimlane+ngx-graph+11.0.0-alpha.0.patch new file mode 100644 index 000000000000..2065f2fee2f7 --- /dev/null +++ b/patches/@swimlane+ngx-graph+11.0.0-alpha.0.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/@swimlane/ngx-graph/fesm2022/swimlane-ngx-graph.mjs b/node_modules/@swimlane/ngx-graph/fesm2022/swimlane-ngx-graph.mjs +index 84d6b7f..a6584da 100644 +--- a/node_modules/@swimlane/ngx-graph/fesm2022/swimlane-ngx-graph.mjs ++++ b/node_modules/@swimlane/ngx-graph/fesm2022/swimlane-ngx-graph.mjs +@@ -1482,7 +1482,7 @@ class GraphComponent { + if (layoutSettings) { + this.setLayoutSettings(this.layoutSettings); + } +- if (this.layout && this.nodes.length && this.links.length) { ++ if (this.layout && this.nodes && this.links) { + this.update(); + } + } diff --git a/src/main/webapp/app/assessment/manage/assessment-layout/assessment-layout.component.spec.ts b/src/main/webapp/app/assessment/manage/assessment-layout/assessment-layout.component.spec.ts index bebefa1432e7..5ecaea0abd35 100644 --- a/src/main/webapp/app/assessment/manage/assessment-layout/assessment-layout.component.spec.ts +++ b/src/main/webapp/app/assessment/manage/assessment-layout/assessment-layout.component.spec.ts @@ -16,6 +16,7 @@ import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; import { AssessmentNoteComponent } from 'app/assessment/manage/assessment-note/assessment-note.component'; import { TranslateService } from '@ngx-translate/core'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('AssessmentLayoutComponent', () => { let component: AssessmentLayoutComponent; @@ -23,7 +24,7 @@ describe('AssessmentLayoutComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockModule(NgbTooltipModule), MockComponent(ComplaintsForTutorComponent)], + imports: [MockModule(NgbTooltipModule), MockComponent(ComplaintsForTutorComponent), FaIconComponent], declarations: [ AssessmentLayoutComponent, AssessmentHeaderComponent, diff --git a/src/main/webapp/app/assessment/manage/grading-system/grading-key-overview/grading-key-overview.component.spec.ts b/src/main/webapp/app/assessment/manage/grading-system/grading-key-overview/grading-key-overview.component.spec.ts index fb497553326e..a2b1e6ab0896 100644 --- a/src/main/webapp/app/assessment/manage/grading-system/grading-key-overview/grading-key-overview.component.spec.ts +++ b/src/main/webapp/app/assessment/manage/grading-system/grading-key-overview/grading-key-overview.component.spec.ts @@ -41,7 +41,7 @@ describe('GradingKeyOverviewComponent', () => { imports: [ GradingKeyOverviewComponent, MockComponent(GradingKeyTableComponent), - MockComponent(FaIconComponent), + FaIconComponent, MockPipe(ArtemisTranslatePipe), MockDirective(TranslateDirective), MockPipe(SafeHtmlPipe), diff --git a/src/main/webapp/app/assessment/manage/structured-grading-instructions-assessment-layout/structured-grading-instructions-assessment-layout.component.spec.ts b/src/main/webapp/app/assessment/manage/structured-grading-instructions-assessment-layout/structured-grading-instructions-assessment-layout.component.spec.ts index 43ead1c3d30f..00e05935b175 100644 --- a/src/main/webapp/app/assessment/manage/structured-grading-instructions-assessment-layout/structured-grading-instructions-assessment-layout.component.spec.ts +++ b/src/main/webapp/app/assessment/manage/structured-grading-instructions-assessment-layout/structured-grading-instructions-assessment-layout.component.spec.ts @@ -12,6 +12,7 @@ import { HelpIconComponent } from 'app/shared/components/help-icon/help-icon.com import { NgbCollapse, NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('StructuredGradingInstructionsAssessmentLayoutComponent', () => { let comp: StructuredGradingInstructionsAssessmentLayoutComponent; @@ -19,7 +20,7 @@ describe('StructuredGradingInstructionsAssessmentLayoutComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockDirective(NgbTooltip), MockDirective(NgbCollapse)], + imports: [MockDirective(NgbTooltip), MockDirective(NgbCollapse), FaIconComponent], declarations: [ StructuredGradingInstructionsAssessmentLayoutComponent, MockComponent(HelpIconComponent), diff --git a/src/main/webapp/app/assessment/shared/assessment-dashboard/exercise-dashboard/exercise-assessment-dashboard.component.spec.ts b/src/main/webapp/app/assessment/shared/assessment-dashboard/exercise-dashboard/exercise-assessment-dashboard.component.spec.ts index 15028f061805..6f96e2a1b29c 100644 --- a/src/main/webapp/app/assessment/shared/assessment-dashboard/exercise-dashboard/exercise-assessment-dashboard.component.spec.ts +++ b/src/main/webapp/app/assessment/shared/assessment-dashboard/exercise-dashboard/exercise-assessment-dashboard.component.spec.ts @@ -65,6 +65,7 @@ import { TutorParticipationService } from 'app/assessment/shared/assessment-dash import { InfoPanelComponent } from 'app/assessment/shared/info-panel/info-panel.component'; import { SecondCorrectionEnableButtonComponent } from 'app/assessment/shared/assessment-dashboard/exercise-dashboard/second-correction-button/second-correction-enable-button.component'; import { LanguageTableCellComponent } from 'app/assessment/shared/assessment-dashboard/exercise-dashboard/language-table-cell/language-table-cell.component'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('ExerciseAssessmentDashboardComponent', () => { let comp: ExerciseAssessmentDashboardComponent; @@ -206,7 +207,7 @@ describe('ExerciseAssessmentDashboardComponent', () => { }), }, } as any as ActivatedRoute; - const imports = [RouterModule.forRoot([]), ExerciseAssessmentDashboardComponent]; + const imports = [RouterModule.forRoot([]), ExerciseAssessmentDashboardComponent, FaIconComponent]; const declarations = [ MockComponent(TutorLeaderboardComponent), diff --git a/src/main/webapp/app/atlas/manage/import-standardized-competencies/course-import-standardized-competencies.spec.ts b/src/main/webapp/app/atlas/manage/import-standardized-competencies/course-import-standardized-competencies.spec.ts index b327534d74e4..367b847611aa 100644 --- a/src/main/webapp/app/atlas/manage/import-standardized-competencies/course-import-standardized-competencies.spec.ts +++ b/src/main/webapp/app/atlas/manage/import-standardized-competencies/course-import-standardized-competencies.spec.ts @@ -22,6 +22,7 @@ import { StandardizedCompetencyFilterComponent } from 'app/atlas/shared/standard import { StandardizedCompetencyService } from 'app/atlas/shared/standardized-competencies/standardized-competency.service'; import { StandardizedCompetencyDetailComponent } from 'app/atlas/shared/standardized-competencies/standardized-competency-detail.component'; import { KnowledgeAreaTreeComponent } from 'app/atlas/shared/standardized-competencies/knowledge-area-tree.component'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('CourseImportStandardizedCompetenciesComponent', () => { let componentFixture: ComponentFixture; @@ -33,7 +34,13 @@ describe('CourseImportStandardizedCompetenciesComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [CourseImportStandardizedCompetenciesComponent, StandardizedCompetencyFilterComponent, StandardizedCompetencyDetailComponent, KnowledgeAreaTreeComponent], + imports: [ + CourseImportStandardizedCompetenciesComponent, + StandardizedCompetencyFilterComponent, + StandardizedCompetencyDetailComponent, + KnowledgeAreaTreeComponent, + FaIconComponent, + ], declarations: [ StandardizedCompetencyFilterStubComponent, StandardizedCompetencyDetailStubComponent, diff --git a/src/main/webapp/app/atlas/manage/import-standardized-competencies/course-import-standardized-prerequisites.spec.ts b/src/main/webapp/app/atlas/manage/import-standardized-competencies/course-import-standardized-prerequisites.spec.ts index 1542abde4493..491ef0ed2b40 100644 --- a/src/main/webapp/app/atlas/manage/import-standardized-competencies/course-import-standardized-prerequisites.spec.ts +++ b/src/main/webapp/app/atlas/manage/import-standardized-competencies/course-import-standardized-prerequisites.spec.ts @@ -22,6 +22,7 @@ import { StandardizedCompetencyFilterComponent } from 'app/atlas/shared/standard import { StandardizedCompetencyService } from 'app/atlas/shared/standardized-competencies/standardized-competency.service'; import { StandardizedCompetencyDetailComponent } from 'app/atlas/shared/standardized-competencies/standardized-competency-detail.component'; import { KnowledgeAreaTreeComponent } from 'app/atlas/shared/standardized-competencies/knowledge-area-tree.component'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('CourseImportStandardizedPrerequisitesComponent', () => { let componentFixture: ComponentFixture; @@ -33,7 +34,13 @@ describe('CourseImportStandardizedPrerequisitesComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [CourseImportStandardizedPrerequisitesComponent, StandardizedCompetencyFilterComponent, StandardizedCompetencyDetailComponent, KnowledgeAreaTreeComponent], + imports: [ + CourseImportStandardizedPrerequisitesComponent, + StandardizedCompetencyFilterComponent, + StandardizedCompetencyDetailComponent, + KnowledgeAreaTreeComponent, + FaIconComponent, + ], declarations: [ StandardizedCompetencyFilterStubComponent, StandardizedCompetencyDetailStubComponent, diff --git a/src/main/webapp/app/atlas/overview/competency-card/competency-card.component.spec.ts b/src/main/webapp/app/atlas/overview/competency-card/competency-card.component.spec.ts index c64b442cdbcc..a3b46465e3c4 100644 --- a/src/main/webapp/app/atlas/overview/competency-card/competency-card.component.spec.ts +++ b/src/main/webapp/app/atlas/overview/competency-card/competency-card.component.spec.ts @@ -17,11 +17,11 @@ describe('CompetencyCardComponent', () => { let competencyCardComponent: CompetencyCardComponent; beforeEach(() => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ CompetencyCardComponent, MockPipe(ArtemisTranslatePipe), MockPipe(HtmlForMarkdownPipe), - MockComponent(FaIconComponent), MockComponent(CompetencyRingsComponent), MockPipe(ArtemisTimeAgoPipe), MockDirective(TranslateDirective), diff --git a/src/main/webapp/app/atlas/overview/course-competencies/course-competencies-details.component.spec.ts b/src/main/webapp/app/atlas/overview/course-competencies/course-competencies-details.component.spec.ts index 243ce9de6a07..40b4900a870a 100644 --- a/src/main/webapp/app/atlas/overview/course-competencies/course-competencies-details.component.spec.ts +++ b/src/main/webapp/app/atlas/overview/course-competencies/course-competencies-details.component.spec.ts @@ -54,7 +54,7 @@ describe('CourseCompetenciesDetails', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockModule(NgbTooltipModule)], + imports: [MockModule(NgbTooltipModule), FaIconComponent], declarations: [ CourseCompetenciesDetailsComponent, MockPipe(ArtemisTranslatePipe), @@ -66,7 +66,6 @@ describe('CourseCompetenciesDetails', () => { MockComponent(CompetencyRingsComponent), MockComponent(SidePanelComponent), MockComponent(HelpIconComponent), - MockComponent(FaIconComponent), MockComponent(FireworksComponent), MockPipe(ArtemisTimeAgoPipe), MockPipe(HtmlForMarkdownPipe), diff --git a/src/main/webapp/app/atlas/overview/learning-path-student-nav/learning-path-student-nav.component.spec.ts b/src/main/webapp/app/atlas/overview/learning-path-student-nav/learning-path-student-nav.component.spec.ts index fcf025e7689a..dbef8fd56c90 100644 --- a/src/main/webapp/app/atlas/overview/learning-path-student-nav/learning-path-student-nav.component.spec.ts +++ b/src/main/webapp/app/atlas/overview/learning-path-student-nav/learning-path-student-nav.component.spec.ts @@ -7,6 +7,7 @@ import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate. import { LearningPathNavigationService } from 'app/atlas/overview/learning-path-navigation.service'; import { MockComponent, MockProvider } from 'ng-mocks'; import { ScienceService } from 'app/shared/science/science.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('LearningPathStudentNavComponent', () => { let component: LearningPathNavComponent; @@ -49,7 +50,7 @@ describe('LearningPathStudentNavComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [LearningPathNavComponent, MockComponent(LearningPathNavOverviewComponent)], + imports: [LearningPathNavComponent, MockComponent(LearningPathNavOverviewComponent), FaIconComponent], providers: [ { provide: TranslateService, diff --git a/src/main/webapp/app/atlas/shared/competencies-popover/competencies-popover.component.spec.ts b/src/main/webapp/app/atlas/shared/competencies-popover/competencies-popover.component.spec.ts index 5013c615189c..b6934dd1dd12 100644 --- a/src/main/webapp/app/atlas/shared/competencies-popover/competencies-popover.component.spec.ts +++ b/src/main/webapp/app/atlas/shared/competencies-popover/competencies-popover.component.spec.ts @@ -1,7 +1,7 @@ import { Location } from '@angular/common'; import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; -import { MockComponent, MockPipe } from 'ng-mocks'; +import { MockPipe } from 'ng-mocks'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { CompetenciesPopoverComponent } from 'app/atlas/shared/competencies-popover/competencies-popover.component'; import { By } from '@angular/platform-browser'; @@ -35,8 +35,9 @@ describe('CompetencyPopoverComponent', () => { { path: 'courses/:courseId/competencies', component: DummyStatisticsComponent }, { path: 'course-management/:courseId/competency-management', component: DummyManagementComponent }, ]), + FaIconComponent, ], - declarations: [CompetenciesPopoverComponent, MockPipe(ArtemisTranslatePipe), MockComponent(FaIconComponent), DummyStatisticsComponent, DummyManagementComponent], + declarations: [CompetenciesPopoverComponent, MockPipe(ArtemisTranslatePipe), DummyStatisticsComponent, DummyManagementComponent], providers: [{ provide: TranslateService, useClass: MockTranslateService }], }) .compileComponents() diff --git a/src/main/webapp/app/atlas/shared/competency-contribution/competency-contribution-card/competency-contribution-card.component.spec.ts b/src/main/webapp/app/atlas/shared/competency-contribution/competency-contribution-card/competency-contribution-card.component.spec.ts index 5458013fcf17..7fa09df0059e 100644 --- a/src/main/webapp/app/atlas/shared/competency-contribution/competency-contribution-card/competency-contribution-card.component.spec.ts +++ b/src/main/webapp/app/atlas/shared/competency-contribution/competency-contribution-card/competency-contribution-card.component.spec.ts @@ -5,7 +5,7 @@ import { TranslateDirective } from 'app/shared/language/translate.directive'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { provideRouter } from '@angular/router'; import { MockComponent, MockDirective, MockModule, MockPipe } from 'ng-mocks'; -import { input, runInInjectionContext } from '@angular/core'; +import { input } from '@angular/core'; import { NgbProgressbar, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; import { MockRouterLinkDirective } from 'test/helpers/mocks/directive/mock-router-link.directive'; import { FaIconComponent, FaLayersComponent } from '@fortawesome/angular-fontawesome'; @@ -20,7 +20,7 @@ describe('CompetencyContributionCardComponent', () => { CompetencyContributionCardComponent, MockDirective(TranslateDirective), MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), + FaIconComponent, MockComponent(FaLayersComponent), MockComponent(NgbProgressbar), MockModule(NgbTooltipModule), @@ -32,7 +32,7 @@ describe('CompetencyContributionCardComponent', () => { fixture = TestBed.createComponent(CompetencyContributionCardComponent); component = fixture.componentInstance; - runInInjectionContext(TestBed, () => { + TestBed.runInInjectionContext(() => { component.courseId = input(1); component.competencyId = input(2); component.title = input('Test Title'); diff --git a/src/main/webapp/app/atlas/shared/competency-contribution/competency-contribution.component.spec.ts b/src/main/webapp/app/atlas/shared/competency-contribution/competency-contribution.component.spec.ts index 36b2376fc98b..028efe568eaa 100644 --- a/src/main/webapp/app/atlas/shared/competency-contribution/competency-contribution.component.spec.ts +++ b/src/main/webapp/app/atlas/shared/competency-contribution/competency-contribution.component.spec.ts @@ -3,7 +3,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { CompetencyContributionComponent } from './competency-contribution.component'; import { TranslateDirective } from 'app/shared/language/translate.directive'; import { CompetencyContributionCardComponent } from 'app/atlas/shared/competency-contribution/competency-contribution-card/competency-contribution-card.component'; -import { input, runInInjectionContext } from '@angular/core'; +import { input } from '@angular/core'; import { MockComponent, MockDirective, MockModule, MockProvider } from 'ng-mocks'; import { CourseCompetencyService } from 'app/atlas/shared/services/course-competency.service'; import { CarouselModule } from 'primeng/carousel'; @@ -47,7 +47,7 @@ describe('CompetencyContributionComponent', () => { }); it('should fetch for exercise', () => { - runInInjectionContext(TestBed, () => { + TestBed.runInInjectionContext(() => { component.courseId = input(1); component.isExercise = input(true); component.learningObjectId = input(2); @@ -60,7 +60,7 @@ describe('CompetencyContributionComponent', () => { }); it('should fetch for lecture unit', () => { - runInInjectionContext(TestBed, () => { + TestBed.runInInjectionContext(() => { component.courseId = input(1); component.isExercise = input(false); component.learningObjectId = input(2); diff --git a/src/main/webapp/app/communication/course-conversations-components/course-wide-search/course-wide-search.component.spec.ts b/src/main/webapp/app/communication/course-conversations-components/course-wide-search/course-wide-search.component.spec.ts index d54ef4b98dd2..c31274957a31 100644 --- a/src/main/webapp/app/communication/course-conversations-components/course-wide-search/course-wide-search.component.spec.ts +++ b/src/main/webapp/app/communication/course-conversations-components/course-wide-search/course-wide-search.component.spec.ts @@ -59,13 +59,12 @@ describe('CourseWideSearchComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [FormsModule, ReactiveFormsModule], + imports: [FormsModule, ReactiveFormsModule, FaIconComponent], declarations: [ CourseWideSearchComponent, InfiniteScrollStubDirective, MockPipe(ArtemisTranslatePipe), MockComponent(ButtonComponent), - MockComponent(FaIconComponent), MockComponent(PostingThreadComponent), MockComponent(MessageInlineInputComponent), MockComponent(PostCreateEditModalComponent), diff --git a/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-members/conversation-member-row/conversation-member-row.component.spec.ts b/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-members/conversation-member-row/conversation-member-row.component.spec.ts index 6f9a1b5bcf61..49dbbf023e43 100644 --- a/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-members/conversation-member-row/conversation-member-row.component.spec.ts +++ b/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-members/conversation-member-row/conversation-member-row.component.spec.ts @@ -66,14 +66,8 @@ examples.forEach((activeConversation) => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [NgbTooltipModule], - declarations: [ - ConversationMemberRowComponent, - MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), - MockComponent(ProfilePictureComponent), - MockDirective(TranslateDirective), - ], + imports: [NgbTooltipModule, FaIconComponent], + declarations: [ConversationMemberRowComponent, MockPipe(ArtemisTranslatePipe), MockComponent(ProfilePictureComponent), MockDirective(TranslateDirective)], providers: [ MockProvider(AccountService), MockProvider(NgbModal), diff --git a/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-members/conversation-members.component.spec.ts b/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-members/conversation-members.component.spec.ts index 154552de2d7f..16ae192f66a7 100644 --- a/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-members/conversation-members.component.spec.ts +++ b/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-members/conversation-members.component.spec.ts @@ -42,14 +42,8 @@ examples.forEach((activeConversation) => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [FormsModule, ReactiveFormsModule], - declarations: [ - ConversationMembersComponent, - MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), - MockComponent(ItemCountComponent), - MockDirective(TranslateDirective), - ], + imports: [FormsModule, ReactiveFormsModule, FaIconComponent], + declarations: [ConversationMembersComponent, MockPipe(ArtemisTranslatePipe), MockComponent(ItemCountComponent), MockDirective(TranslateDirective)], providers: [ MockProvider(ConversationService), MockProvider(AlertService), diff --git a/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-settings/conversation-settings.component.spec.ts b/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-settings/conversation-settings.component.spec.ts index 5ffc1d357a71..4fd0b0b35cf0 100644 --- a/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-settings/conversation-settings.component.spec.ts +++ b/src/main/webapp/app/communication/course-conversations-components/dialogs/conversation-detail-dialog/tabs/conversation-settings/conversation-settings.component.spec.ts @@ -1,7 +1,7 @@ import { ComponentFixture, TestBed, fakeAsync, tick, waitForAsync } from '@angular/core/testing'; import { ConversationDTO } from 'app/communication/shared/entities/conversation/conversation.model'; -import { generateExampleChannelDTO, generateExampleGroupChatDTO } from '../../../../../../../../../test/javascript/spec/helpers/sample/conversationExampleModels'; -import { MockComponent, MockDirective, MockPipe, MockProvider } from 'ng-mocks'; +import { generateExampleChannelDTO, generateExampleGroupChatDTO } from 'test/helpers/sample/conversationExampleModels'; +import { MockDirective, MockPipe, MockProvider } from 'ng-mocks'; import { DeleteButtonDirective } from 'app/shared/delete-dialog/directive/delete-button.directive'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { Course } from 'app/core/course/shared/entities/course.model'; @@ -35,13 +35,8 @@ examples.forEach((activeConversation) => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [ - ConversationSettingsComponent, - MockDirective(DeleteButtonDirective), - MockComponent(FaIconComponent), - MockPipe(ArtemisTranslatePipe), - MockDirective(TranslateDirective), - ], + imports: [FaIconComponent], + declarations: [ConversationSettingsComponent, MockDirective(DeleteButtonDirective), MockPipe(ArtemisTranslatePipe), MockDirective(TranslateDirective)], providers: [MockProvider(NgbModal), MockProvider(ChannelService), MockProvider(GroupChatService), MockProvider(AlertService)], }).compileComponents(); })); diff --git a/src/main/webapp/app/communication/course-conversations-components/layout/conversation-messages/conversation-messages.component.spec.ts b/src/main/webapp/app/communication/course-conversations-components/layout/conversation-messages/conversation-messages.component.spec.ts index a3285815e79f..1e8448ecd60c 100644 --- a/src/main/webapp/app/communication/course-conversations-components/layout/conversation-messages/conversation-messages.component.spec.ts +++ b/src/main/webapp/app/communication/course-conversations-components/layout/conversation-messages/conversation-messages.component.spec.ts @@ -62,13 +62,12 @@ examples.forEach((activeConversation) => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [FormsModule, ReactiveFormsModule], + imports: [FormsModule, ReactiveFormsModule, FaIconComponent], declarations: [ ConversationMessagesComponent, InfiniteScrollStubDirective, MockPipe(ArtemisTranslatePipe), MockComponent(ButtonComponent), - MockComponent(FaIconComponent), MockComponent(PostingThreadComponent), MockComponent(MessageInlineInputComponent), MockComponent(PostCreateEditModalComponent), diff --git a/src/main/webapp/app/communication/course-conversations-components/layout/conversation-thread-sidebar/conversation-thread-sidebar.component.spec.ts b/src/main/webapp/app/communication/course-conversations-components/layout/conversation-thread-sidebar/conversation-thread-sidebar.component.spec.ts index f414ca45d2cb..6689c6bcf782 100644 --- a/src/main/webapp/app/communication/course-conversations-components/layout/conversation-thread-sidebar/conversation-thread-sidebar.component.spec.ts +++ b/src/main/webapp/app/communication/course-conversations-components/layout/conversation-thread-sidebar/conversation-thread-sidebar.component.spec.ts @@ -20,9 +20,9 @@ describe('ConversationThreadSidebarComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ ConversationThreadSidebarComponent, - MockComponent(FaIconComponent), MockPipe(ArtemisTranslatePipe), MockComponent(PostComponent), MockComponent(MessageReplyInlineInputComponent), diff --git a/src/main/webapp/app/communication/course-conversations-components/other/channel-icon/channel-icon.component.spec.ts b/src/main/webapp/app/communication/course-conversations-components/other/channel-icon/channel-icon.component.spec.ts index 8b416b31646b..97d4cc11c8ef 100644 --- a/src/main/webapp/app/communication/course-conversations-components/other/channel-icon/channel-icon.component.spec.ts +++ b/src/main/webapp/app/communication/course-conversations-components/other/channel-icon/channel-icon.component.spec.ts @@ -1,6 +1,5 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { ChannelIconComponent } from 'app/communication/course-conversations-components/other/channel-icon/channel-icon.component'; -import { MockComponent } from 'ng-mocks'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { input, runInInjectionContext } from '@angular/core'; import { faBullhorn, faHashtag, faLock } from '@fortawesome/free-solid-svg-icons'; @@ -10,7 +9,7 @@ describe('ChannelIconComponent', () => { let fixture: ComponentFixture; beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ declarations: [ChannelIconComponent, MockComponent(FaIconComponent)] }).compileComponents(); + TestBed.configureTestingModule({ imports: [ChannelIconComponent, FaIconComponent] }).compileComponents(); })); beforeEach(() => { diff --git a/src/main/webapp/app/communication/course-conversations-components/posting-summary/posting-summary.component.spec.ts b/src/main/webapp/app/communication/course-conversations-components/posting-summary/posting-summary.component.spec.ts index ffb14ed0b013..8f2b677e878f 100644 --- a/src/main/webapp/app/communication/course-conversations-components/posting-summary/posting-summary.component.spec.ts +++ b/src/main/webapp/app/communication/course-conversations-components/posting-summary/posting-summary.component.spec.ts @@ -34,10 +34,10 @@ describe('PostingSummaryComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ PostingSummaryComponent, MockPipe(ArtemisDatePipe), - MockComponent(FaIconComponent), MockComponent(ProfilePictureComponent), MockComponent(PostingContentComponent), MockDirective(TranslateDirective), diff --git a/src/main/webapp/app/communication/course-conversations-components/saved-posts/saved-posts.component.spec.ts b/src/main/webapp/app/communication/course-conversations-components/saved-posts/saved-posts.component.spec.ts index f2ce14d19b06..44a7df1821d8 100644 --- a/src/main/webapp/app/communication/course-conversations-components/saved-posts/saved-posts.component.spec.ts +++ b/src/main/webapp/app/communication/course-conversations-components/saved-posts/saved-posts.component.spec.ts @@ -29,7 +29,8 @@ describe('SavedPostsComponent', () => { }; await TestBed.configureTestingModule({ - declarations: [SavedPostsComponent, MockDirective(TranslateDirective), MockComponent(FaIconComponent), MockComponent(PostingSummaryComponent)], + imports: [FaIconComponent], + declarations: [SavedPostsComponent, MockDirective(TranslateDirective), MockComponent(PostingSummaryComponent)], providers: [{ provide: SavedPostService, useValue: mockSavedPostService }], }).compileComponents(); diff --git a/src/main/webapp/app/communication/course-faq/course-faq.component.spec.ts b/src/main/webapp/app/communication/course-faq/course-faq.component.spec.ts index 77c8f7192c58..eb2291dd8d14 100644 --- a/src/main/webapp/app/communication/course-faq/course-faq.component.spec.ts +++ b/src/main/webapp/app/communication/course-faq/course-faq.component.spec.ts @@ -49,14 +49,8 @@ describe('CourseFaqs', () => { faq3 = createFaq(3, 'category3', '#0ab84f'); TestBed.configureTestingModule({ - imports: [MockComponent(CustomExerciseCategoryBadgeComponent), MockComponent(CourseFaqAccordionComponent)], - declarations: [ - CourseFaqComponent, - MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), - MockDirective(TranslateDirective), - MockComponent(SearchFilterComponent), - ], + imports: [MockComponent(CustomExerciseCategoryBadgeComponent), MockComponent(CourseFaqAccordionComponent), FaIconComponent], + declarations: [CourseFaqComponent, MockPipe(ArtemisTranslatePipe), MockDirective(TranslateDirective), MockComponent(SearchFilterComponent)], providers: [ MockProvider(FaqService), { provide: Router, useClass: MockRouter }, diff --git a/src/main/webapp/app/communication/course-notification/course-notification-popup-overlay/course-notification-popup-overlay.component.spec.ts b/src/main/webapp/app/communication/course-notification/course-notification-popup-overlay/course-notification-popup-overlay.component.spec.ts index a49de1be73bf..e4fe98eb7b11 100644 --- a/src/main/webapp/app/communication/course-notification/course-notification-popup-overlay/course-notification-popup-overlay.component.spec.ts +++ b/src/main/webapp/app/communication/course-notification/course-notification-popup-overlay/course-notification-popup-overlay.component.spec.ts @@ -53,8 +53,8 @@ describe('CourseNotificationPopupOverlayComponent', () => { } as unknown as CourseNotificationService; await TestBed.configureTestingModule({ - imports: [BrowserAnimationsModule, CommonModule, NoopAnimationsModule], - declarations: [CourseNotificationPopupOverlayComponent, MockComponent(CourseNotificationComponent), MockComponent(FaIconComponent)], + imports: [BrowserAnimationsModule, CommonModule, NoopAnimationsModule, FaIconComponent], + declarations: [CourseNotificationPopupOverlayComponent, MockComponent(CourseNotificationComponent)], providers: [ { provide: CourseNotificationWebsocketService, useValue: courseNotificationWebsocketService }, { provide: CourseNotificationService, useValue: courseNotificationService }, diff --git a/src/main/webapp/app/communication/course-notification/course-notification-preset-picker/course-notification-preset-picker.component.spec.ts b/src/main/webapp/app/communication/course-notification/course-notification-preset-picker/course-notification-preset-picker.component.spec.ts index 75f30a33c64b..3ad49f2afc29 100644 --- a/src/main/webapp/app/communication/course-notification/course-notification-preset-picker/course-notification-preset-picker.component.spec.ts +++ b/src/main/webapp/app/communication/course-notification/course-notification-preset-picker/course-notification-preset-picker.component.spec.ts @@ -2,7 +2,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { CourseNotificationPresetPickerComponent } from 'app/communication/course-notification/course-notification-preset-picker/course-notification-preset-picker.component'; import { CourseNotificationSettingPreset } from 'app/communication/shared/entities/course-notification/course-notification-setting-preset'; import { By } from '@angular/platform-browser'; -import { MockComponent, MockDirective } from 'ng-mocks'; +import { MockDirective } from 'ng-mocks'; import { TranslateDirective } from 'app/shared/language/translate.directive'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { NgbDropdown, NgbDropdownItem, NgbDropdownMenu, NgbDropdownToggle } from '@ng-bootstrap/ng-bootstrap'; @@ -33,7 +33,7 @@ describe('CourseNotificationPresetPickerComponent', () => { imports: [ CourseNotificationPresetPickerComponent, MockDirective(TranslateDirective), - MockComponent(FaIconComponent), + FaIconComponent, MockDirective(NgbDropdown), MockDirective(NgbDropdownToggle), MockDirective(NgbDropdownMenu), diff --git a/src/main/webapp/app/communication/course-notification/course-notification/course-notification.component.spec.ts b/src/main/webapp/app/communication/course-notification/course-notification/course-notification.component.spec.ts index 2a7c10fc61fb..b89a008268b3 100644 --- a/src/main/webapp/app/communication/course-notification/course-notification/course-notification.component.spec.ts +++ b/src/main/webapp/app/communication/course-notification/course-notification/course-notification.component.spec.ts @@ -45,8 +45,8 @@ describe('CourseNotificationComponent', () => { } as unknown as CourseNotificationService; await TestBed.configureTestingModule({ - imports: [NoopAnimationsModule, CommonModule], - declarations: [CourseNotificationComponent, MockComponent(FaIconComponent), MockComponent(ProfilePictureComponent), MockDirective(TranslateDirective)], + imports: [NoopAnimationsModule, CommonModule, FaIconComponent], + declarations: [CourseNotificationComponent, MockComponent(ProfilePictureComponent), MockDirective(TranslateDirective)], providers: [{ provide: CourseNotificationService, useValue: courseNotificationService }], }).compileComponents(); diff --git a/src/main/webapp/app/communication/faq/faq-update.component.spec.ts b/src/main/webapp/app/communication/faq/faq-update.component.spec.ts index 25a639e3ba02..16b254697946 100644 --- a/src/main/webapp/app/communication/faq/faq-update.component.spec.ts +++ b/src/main/webapp/app/communication/faq/faq-update.component.spec.ts @@ -20,6 +20,7 @@ import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from 'test/helpers/mocks/service/mock-account.service'; import { ProfileInfo } from 'app/core/layouts/profiles/profile-info.model'; import { FaqCategory } from 'app/communication/shared/entities/faq-category.model'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { FaqConsistencyComponent } from './faq-consistency.component'; import { RewriteAction } from '../../shared/monaco-editor/model/actions/artemis-intelligence/rewrite.action'; @@ -45,7 +46,7 @@ describe('FaqUpdateComponent', () => { courseId = 1; const mockProfileInfo = { activeProfiles: ['iris'] } as ProfileInfo; TestBed.configureTestingModule({ - imports: [MockModule(BrowserAnimationsModule)], + imports: [MockModule(BrowserAnimationsModule), FaIconComponent], declarations: [ FaqUpdateComponent, MockComponent(MarkdownEditorMonacoComponent), diff --git a/src/main/webapp/app/communication/posting-button/postings.button.component.spec.ts b/src/main/webapp/app/communication/posting-button/postings.button.component.spec.ts index 304e0f1c89e2..9cb0cac17fbe 100644 --- a/src/main/webapp/app/communication/posting-button/postings.button.component.spec.ts +++ b/src/main/webapp/app/communication/posting-button/postings.button.component.spec.ts @@ -2,8 +2,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { DebugElement } from '@angular/core'; import { PostingButtonComponent } from 'app/communication/posting-button/posting-button.component'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; -import { MockComponent } from 'ng-mocks'; import { getElement } from 'test/helpers/utils/general-test.utils'; +import { faPlus } from '@fortawesome/free-solid-svg-icons'; describe('PostingButtonComponent', () => { let component: PostingButtonComponent; @@ -12,7 +12,7 @@ describe('PostingButtonComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - declarations: [PostingButtonComponent, MockComponent(FaIconComponent)], + imports: [PostingButtonComponent, FaIconComponent], }) .compileComponents() .then(() => { @@ -23,7 +23,7 @@ describe('PostingButtonComponent', () => { }); it('should have icon shown if property set', () => { - component.buttonIcon = 'plus'; + component.buttonIcon = faPlus; fixture.detectChanges(); const button = getElement(debugElement, 'fa-icon'); expect(button).not.toBeNull(); diff --git a/src/main/webapp/app/communication/shared/conversation-global-search/conversation-global-search.component.spec.ts b/src/main/webapp/app/communication/shared/conversation-global-search/conversation-global-search.component.spec.ts index 9e25e04bef32..52bcc82de453 100644 --- a/src/main/webapp/app/communication/shared/conversation-global-search/conversation-global-search.component.spec.ts +++ b/src/main/webapp/app/communication/shared/conversation-global-search/conversation-global-search.component.spec.ts @@ -37,12 +37,11 @@ describe('ConversationGlobalSearchComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [FormsModule], + imports: [FormsModule, FaIconComponent], declarations: [ ConversationGlobalSearchComponent, MockPipe(ArtemisTranslatePipe), MockComponent(ButtonComponent), - MockComponent(FaIconComponent), MockComponent(ProfilePictureComponent), MockDirective(TranslateDirective), ], diff --git a/src/main/webapp/app/communication/shared/discussion-section/discussion-section.component.spec.ts b/src/main/webapp/app/communication/shared/discussion-section/discussion-section.component.spec.ts index 2dd6940298ce..e048639f9ce8 100644 --- a/src/main/webapp/app/communication/shared/discussion-section/discussion-section.component.spec.ts +++ b/src/main/webapp/app/communication/shared/discussion-section/discussion-section.component.spec.ts @@ -70,7 +70,14 @@ describe('DiscussionSectionComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MockModule(FormsModule), MockModule(ReactiveFormsModule), MockModule(NgbTooltipModule), DiscussionSectionComponent, MockModule(BrowserAnimationsModule)], + imports: [ + MockModule(FormsModule), + MockModule(ReactiveFormsModule), + MockModule(NgbTooltipModule), + DiscussionSectionComponent, + MockModule(BrowserAnimationsModule), + FaIconComponent, + ], providers: [ provideHttpClient(), provideHttpClientTesting(), @@ -95,7 +102,7 @@ describe('DiscussionSectionComponent', () => { useValue: new MockActivatedRoute({ postId: metisPostTechSupport.id, courseId: metisCourse.id }), }, ], - declarations: [InfiniteScrollStubDirective, MockComponent(FaIconComponent), MockComponent(ProfilePictureComponent)], + declarations: [InfiniteScrollStubDirective, MockComponent(ProfilePictureComponent)], }) .overrideComponent(DiscussionSectionComponent, { set: { diff --git a/src/main/webapp/app/core/admin/legal/legal-document-update.component.spec.ts b/src/main/webapp/app/core/admin/legal/legal-document-update.component.spec.ts index 597311245033..83a0cb47502c 100644 --- a/src/main/webapp/app/core/admin/legal/legal-document-update.component.spec.ts +++ b/src/main/webapp/app/core/admin/legal/legal-document-update.component.spec.ts @@ -20,6 +20,7 @@ import { PrivacyStatement } from 'app/core/shared/entities/privacy-statement.mod import { MarkdownEditorMonacoComponent } from 'app/shared/markdown-editor/monaco/markdown-editor-monaco.component'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { provideHttpClient } from '@angular/common/http'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('LegalDocumentUpdateComponent', () => { let component: LegalDocumentUpdateComponent; @@ -30,7 +31,7 @@ describe('LegalDocumentUpdateComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MockDirective(NgbTooltip)], + imports: [MockDirective(NgbTooltip), FaIconComponent], declarations: [ LegalDocumentUpdateComponent, MockComponent(UnsavedChangesWarningComponent), diff --git a/src/main/webapp/app/core/admin/lti-configuration/edit/edit-lti-configuration.component.spec.ts b/src/main/webapp/app/core/admin/lti-configuration/edit/edit-lti-configuration.component.spec.ts index 5a5f39eb1c9a..7892194a6fdf 100644 --- a/src/main/webapp/app/core/admin/lti-configuration/edit/edit-lti-configuration.component.spec.ts +++ b/src/main/webapp/app/core/admin/lti-configuration/edit/edit-lti-configuration.component.spec.ts @@ -14,6 +14,7 @@ import { LtiPlatformConfiguration } from 'app/lti/shared/entities/lti-configurat import { of, throwError } from 'rxjs'; import { HttpClient, HttpErrorResponse, HttpResponse } from '@angular/common/http'; import { AlertService } from 'app/shared/service/alert.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('Edit LTI Configuration Component', () => { let comp: EditLtiConfigurationComponent; @@ -44,7 +45,7 @@ describe('Edit LTI Configuration Component', () => { }; TestBed.configureTestingModule({ - imports: [NgbNavModule, MockModule(NgbTooltipModule), MockModule(ReactiveFormsModule)], + imports: [NgbNavModule, MockModule(NgbTooltipModule), MockModule(ReactiveFormsModule), FaIconComponent], declarations: [EditLtiConfigurationComponent, MockDirective(TranslateDirective), MockPipe(ArtemisTranslatePipe), MockComponent(HelpIconComponent)], providers: [ MockProvider(LtiConfigurationService), diff --git a/src/main/webapp/app/core/admin/organization-management/organization-management-detail.component.ts b/src/main/webapp/app/core/admin/organization-management/organization-management-detail.component.ts index ee53d027fb2c..1b54111aef12 100644 --- a/src/main/webapp/app/core/admin/organization-management/organization-management-detail.component.ts +++ b/src/main/webapp/app/core/admin/organization-management/organization-management-detail.component.ts @@ -45,7 +45,7 @@ export class OrganizationManagementDetailComponent implements OnInit { searchFailed = false; searchNoResults = false; isTransitioning = false; - rowClass: string | undefined = undefined; + rowClass: string; // Icons faUserSlash = faUserSlash; @@ -224,7 +224,7 @@ export class OrganizationManagementDetailComponent implements OnInit { */ flashRowClass = (className: string) => { this.rowClass = className; - setTimeout(() => (this.rowClass = undefined)); + setTimeout(() => (this.rowClass = '')); }; /** diff --git a/src/main/webapp/app/core/admin/standardized-competencies/knowledge-area-edit.component.spec.ts b/src/main/webapp/app/core/admin/standardized-competencies/knowledge-area-edit.component.spec.ts index 894549377171..42ed812d7c16 100644 --- a/src/main/webapp/app/core/admin/standardized-competencies/knowledge-area-edit.component.spec.ts +++ b/src/main/webapp/app/core/admin/standardized-competencies/knowledge-area-edit.component.spec.ts @@ -11,6 +11,7 @@ import { DeleteButtonDirective } from 'app/shared/delete-dialog/directive/delete import { KnowledgeAreaDTO } from 'app/atlas/shared/entities/standardized-competency.model'; import { By } from '@angular/platform-browser'; import { MarkdownEditorMonacoComponent } from 'app/shared/markdown-editor/monaco/markdown-editor-monaco.component'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('KnowledgeAreaEditComponent', () => { let componentFixture: ComponentFixture; @@ -36,7 +37,7 @@ describe('KnowledgeAreaEditComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ReactiveFormsModule], + imports: [ReactiveFormsModule, FaIconComponent], declarations: [ KnowledgeAreaEditComponent, MockComponent(ButtonComponent), diff --git a/src/main/webapp/app/core/admin/standardized-competencies/standardized-competency-edit.spec.ts b/src/main/webapp/app/core/admin/standardized-competencies/standardized-competency-edit.spec.ts index b8e71fb06fb0..228b71a8493e 100644 --- a/src/main/webapp/app/core/admin/standardized-competencies/standardized-competency-edit.spec.ts +++ b/src/main/webapp/app/core/admin/standardized-competencies/standardized-competency-edit.spec.ts @@ -11,6 +11,7 @@ import { TranslateDirective } from 'app/shared/language/translate.directive'; import { DeleteButtonDirective } from 'app/shared/delete-dialog/directive/delete-button.directive'; import { KnowledgeAreaDTO, StandardizedCompetencyDTO } from 'app/atlas/shared/entities/standardized-competency.model'; import { MarkdownEditorMonacoComponent } from 'app/shared/markdown-editor/monaco/markdown-editor-monaco.component'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('StandardizedCompetencyEditComponent', () => { let componentFixture: ComponentFixture; @@ -39,7 +40,7 @@ describe('StandardizedCompetencyEditComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ReactiveFormsModule], + imports: [ReactiveFormsModule, FaIconComponent], declarations: [ StandardizedCompetencyEditComponent, MockComponent(ButtonComponent), diff --git a/src/main/webapp/app/core/admin/system-notification-management/system-notification-update.component.spec.ts b/src/main/webapp/app/core/admin/system-notification-management/system-notification-update.component.spec.ts index 453d44b4b759..e740a0dd9f9c 100644 --- a/src/main/webapp/app/core/admin/system-notification-management/system-notification-update.component.spec.ts +++ b/src/main/webapp/app/core/admin/system-notification-management/system-notification-update.component.spec.ts @@ -15,6 +15,7 @@ import { TranslateService } from '@ngx-translate/core'; import { MockRouter } from '../../../../../../test/javascript/spec/helpers/mocks/mock-router'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { AdminSystemNotificationService } from 'app/core/notification/system-notification/admin-system-notification.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('SystemNotificationManagementUpdateComponent', () => { let updateComponentFixture: ComponentFixture; @@ -29,7 +30,7 @@ describe('SystemNotificationManagementUpdateComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ReactiveFormsModule], + imports: [ReactiveFormsModule, FaIconComponent], declarations: [SystemNotificationManagementUpdateComponent, MockPipe(ArtemisTranslatePipe), MockComponent(FormDateTimePickerComponent)], providers: [ { provide: ActivatedRoute, useValue: route }, diff --git a/src/main/webapp/app/core/calendar/overview/calendar-month-presentation/calendar-month-presentation.component.ts b/src/main/webapp/app/core/calendar/overview/calendar-month-presentation/calendar-month-presentation.component.ts index 923806f4cf91..ad6c4ab015f2 100644 --- a/src/main/webapp/app/core/calendar/overview/calendar-month-presentation/calendar-month-presentation.component.ts +++ b/src/main/webapp/app/core/calendar/overview/calendar-month-presentation/calendar-month-presentation.component.ts @@ -1,4 +1,4 @@ -import { Component, Signal, computed, input, signal } from '@angular/core'; +import { Component, computed, inject, input, signal } from '@angular/core'; import { NgClass, NgTemplateOutlet } from '@angular/common'; import { NgbPopover } from '@ng-bootstrap/ng-bootstrap'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; @@ -18,19 +18,15 @@ import { CalendarEventDetailPopoverComponent } from 'app/core/calendar/shared/ca styleUrls: ['./calendar-month-presentation.component.scss'], }) export class CalendarMonthPresentationComponent { + private popover?: NgbPopover; + firstDayOfCurrentMonth = input.required(); selectedEvent = signal(undefined); readonly utils = utils; readonly CalendarEventType = CalendarEventType; readonly weeks = computed(() => this.computeWeeksFrom(this.firstDayOfCurrentMonth())); - readonly eventMap: Signal>; - - private popover?: NgbPopover; - - constructor(private eventService: CalendarEventService) { - this.eventMap = this.eventService.eventMap; - } + readonly eventMap = inject(CalendarEventService).eventMap; getEventsOf(day: Dayjs): CalendarEvent[] { const key = day.format('YYYY-MM-DD'); diff --git a/src/main/webapp/app/core/calendar/overview/calendar-overview/calendar-overview.component.spec.ts b/src/main/webapp/app/core/calendar/overview/calendar-overview/calendar-overview.component.spec.ts index 259d67552e58..3b6b82da70d1 100644 --- a/src/main/webapp/app/core/calendar/overview/calendar-overview/calendar-overview.component.spec.ts +++ b/src/main/webapp/app/core/calendar/overview/calendar-overview/calendar-overview.component.spec.ts @@ -16,6 +16,7 @@ import { CalendarEventFilterComponent } from 'app/core/calendar/shared/calendar- import { CalendarEventDetailPopoverComponent } from 'app/core/calendar/shared/calendar-event-detail-popover/calendar-event-detail-popover.component'; import { CalendarDayBadgeComponent } from 'app/core/calendar/shared/calendar-day-badge/calendar-day-badge.component'; import { CalendarOverviewComponent } from './calendar-overview.component'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('CalendarOverviewComponent', () => { let component: CalendarOverviewComponent; @@ -39,7 +40,7 @@ describe('CalendarOverviewComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [CalendarOverviewComponent, CalendarWeekPresentationComponent, CalendarMonthPresentationComponent], + imports: [CalendarOverviewComponent, CalendarWeekPresentationComponent, CalendarMonthPresentationComponent, FaIconComponent], declarations: [ MockComponent(CalendarEventDetailPopoverComponent), MockComponent(CalendarDayBadgeComponent), diff --git a/src/main/webapp/app/core/calendar/overview/calendar-overview/calendar-overview.component.ts b/src/main/webapp/app/core/calendar/overview/calendar-overview/calendar-overview.component.ts index a9604f14f749..b19eff2e2846 100644 --- a/src/main/webapp/app/core/calendar/overview/calendar-overview/calendar-overview.component.ts +++ b/src/main/webapp/app/core/calendar/overview/calendar-overview/calendar-overview.component.ts @@ -1,12 +1,12 @@ -import { Component, OnInit, WritableSignal, inject, signal } from '@angular/core'; +import { Component, OnInit, inject, signal } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { NgClass } from '@angular/common'; import { finalize } from 'rxjs/operators'; import dayjs, { Dayjs } from 'dayjs/esm'; -import 'dayjs/locale/de'; -import 'dayjs/locale/en'; -import isoWeek from 'dayjs/plugin/isoWeek'; -import isSameOrBefore from 'dayjs/plugin/isSameOrBefore'; +import 'dayjs/esm/locale/en'; +import 'dayjs/esm/locale/de'; +import isoWeek from 'dayjs/esm/plugin/isoWeek'; +import isSameOrBefore from 'dayjs/esm/plugin/isSameOrBefore'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { faChevronLeft, faChevronRight } from '@fortawesome/free-solid-svg-icons'; import { TranslateService } from '@ngx-translate/core'; @@ -34,9 +34,11 @@ dayjs.extend(isSameOrBefore); styleUrl: './calendar-overview.component.scss', }) export class CalendarOverviewComponent implements OnInit { + private calendarEventService = inject(CalendarEventService); + private translateService = inject(TranslateService); private activatedRoute = inject(ActivatedRoute); private courseId?: number; - private currentLocale: WritableSignal; + private currentLocale = signal(this.translateService.currentLang); readonly faChevronRight = faChevronRight; readonly faChevronLeft = faChevronLeft; @@ -45,13 +47,6 @@ export class CalendarOverviewComponent implements OnInit { firstDayOfCurrentWeek = signal(dayjs().startOf('isoWeek')); isLoading = signal(false); - constructor( - private calendarEventService: CalendarEventService, - private translateService: TranslateService, - ) { - this.currentLocale = signal(this.translateService.currentLang); - } - ngOnInit(): void { this.translateService.onLangChange.subscribe((event) => { this.currentLocale.set(event.lang); diff --git a/src/main/webapp/app/core/calendar/overview/calendar-week-presentation/calendar-week-presentation.component.ts b/src/main/webapp/app/core/calendar/overview/calendar-week-presentation/calendar-week-presentation.component.ts index 4a90ffc1ab34..bfe04721fba7 100644 --- a/src/main/webapp/app/core/calendar/overview/calendar-week-presentation/calendar-week-presentation.component.ts +++ b/src/main/webapp/app/core/calendar/overview/calendar-week-presentation/calendar-week-presentation.component.ts @@ -1,4 +1,4 @@ -import { AfterViewInit, Component, ElementRef, computed, input, signal, viewChild } from '@angular/core'; +import { AfterViewInit, Component, ElementRef, computed, inject, input, signal, viewChild } from '@angular/core'; import { NgClass, NgStyle } from '@angular/common'; import { NgbPopover } from '@ng-bootstrap/ng-bootstrap'; import { Dayjs } from 'dayjs/esm'; @@ -17,6 +17,8 @@ import { CalendarDayBadgeComponent } from 'app/core/calendar/shared/calendar-day styleUrl: './calendar-week-presentation.component.scss', }) export class CalendarWeekPresentationComponent implements AfterViewInit { + private eventService = inject(CalendarEventService); + firstDayOfCurrentWeek = input.required(); selectedEvent = signal(undefined); scrollContainer = viewChild('scrollContainer'); @@ -30,8 +32,6 @@ export class CalendarWeekPresentationComponent implements AfterViewInit { private static readonly PIXELS_PER_REM = 16; private static readonly HOUR_SEGMENT_HEIGHT_IN_PIXEL = 3.5 * CalendarWeekPresentationComponent.PIXELS_PER_REM; - constructor(private eventService: CalendarEventService) {} - ngAfterViewInit(): void { const container = this.scrollContainer(); if (container) { diff --git a/src/main/webapp/app/core/calendar/shared/calendar-event-filter/calendar-event-filter.component.ts b/src/main/webapp/app/core/calendar/shared/calendar-event-filter/calendar-event-filter.component.ts index 05b886ddc986..f02f5487f5aa 100644 --- a/src/main/webapp/app/core/calendar/shared/calendar-event-filter/calendar-event-filter.component.ts +++ b/src/main/webapp/app/core/calendar/shared/calendar-event-filter/calendar-event-filter.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { faChevronDown, faXmark } from '@fortawesome/free-solid-svg-icons'; import { NgbPopover } from '@ng-bootstrap/ng-bootstrap'; @@ -14,18 +14,15 @@ import { CalendarEventFilterOption } from 'app/core/calendar/shared/util/calenda styleUrl: './calendar-event-filter.component.scss', }) export class CalendarEventFilterComponent { - includedOptions; + private calendarEventService = inject(CalendarEventService); + includedOptions = this.calendarEventService.includedEventFilterOptions; + + readonly options = this.calendarEventService.eventFilterOptions; readonly utils = utils; - readonly options; readonly faChevronDown = faChevronDown; readonly faXmark = faXmark; - constructor(private calendarEventService: CalendarEventService) { - this.options = calendarEventService.eventFilterOptions; - this.includedOptions = calendarEventService.includedEventFilterOptions; - } - toggleOption(option: CalendarEventFilterOption) { this.calendarEventService.toggleEventFilterOption(option); } diff --git a/src/main/webapp/app/core/calendar/shared/service/calendar-event.service.ts b/src/main/webapp/app/core/calendar/shared/service/calendar-event.service.ts index 307079b6189d..b245ad00a077 100644 --- a/src/main/webapp/app/core/calendar/shared/service/calendar-event.service.ts +++ b/src/main/webapp/app/core/calendar/shared/service/calendar-event.service.ts @@ -2,7 +2,7 @@ import { Injectable, computed, inject, signal } from '@angular/core'; import { HttpClient, HttpParams, HttpResponse } from '@angular/common/http'; import { Observable, catchError, map, throwError } from 'rxjs'; import dayjs, { Dayjs } from 'dayjs/esm'; -import timezone from 'dayjs/plugin/timezone'; +import timezone from 'dayjs/esm/plugin/timezone'; import { CalendarEvent, CalendarEventDTO, CalendarEventSubtype, CalendarEventType } from 'app/core/calendar/shared/entities/calendar-event.model'; import { CalendarEventFilterOption } from 'app/core/calendar/shared/util/calendar-util'; import { AlertService } from 'app/shared/service/alert.service'; diff --git a/src/main/webapp/app/core/calendar/shared/util/calendar-util.ts b/src/main/webapp/app/core/calendar/shared/util/calendar-util.ts index 656f6a7a7757..6512e95e15bc 100644 --- a/src/main/webapp/app/core/calendar/shared/util/calendar-util.ts +++ b/src/main/webapp/app/core/calendar/shared/util/calendar-util.ts @@ -1,5 +1,5 @@ import dayjs, { Dayjs } from 'dayjs/esm'; -import isoWeek from 'dayjs/plugin/isoWeek'; +import isoWeek from 'dayjs/esm/plugin/isoWeek'; import { IconProp } from '@fortawesome/fontawesome-svg-core'; import { faChalkboardUser, faCheckDouble, faDiagramProject, faFileArrowUp, faFont, faGraduationCap, faKeyboard, faPersonChalkboard } from '@fortawesome/free-solid-svg-icons'; import { CalendarEvent, CalendarEventSubtype, CalendarEventType } from 'app/core/calendar/shared/entities/calendar-event.model'; diff --git a/src/main/webapp/app/core/course/manage/control-center/control-center.component.spec.ts b/src/main/webapp/app/core/course/manage/control-center/control-center.component.spec.ts index 1c9a879bf155..91231aa56155 100644 --- a/src/main/webapp/app/core/course/manage/control-center/control-center.component.spec.ts +++ b/src/main/webapp/app/core/course/manage/control-center/control-center.component.spec.ts @@ -21,8 +21,8 @@ describe('ControlCenterComponent', () => { course = { id: 1, isAtLeastInstructor: true } as Course; await TestBed.configureTestingModule({ - imports: [MockDirective(TranslateDirective)], - declarations: [ControlCenterComponent, MockComponent(HelpIconComponent), MockComponent(FaIconComponent), MockComponent(IrisEnabledComponent)], + imports: [MockDirective(TranslateDirective), FaIconComponent], + declarations: [ControlCenterComponent, MockComponent(HelpIconComponent), MockComponent(IrisEnabledComponent)], providers: [{ provide: TranslateService, useClass: MockTranslateService }], }).compileComponents(); diff --git a/src/main/webapp/app/core/course/manage/course-management-tab-bar/course-management-tab-bar.component.spec.ts b/src/main/webapp/app/core/course/manage/course-management-tab-bar/course-management-tab-bar.component.spec.ts index 86312bae2ae5..6544225932a0 100644 --- a/src/main/webapp/app/core/course/manage/course-management-tab-bar/course-management-tab-bar.component.spec.ts +++ b/src/main/webapp/app/core/course/manage/course-management-tab-bar/course-management-tab-bar.component.spec.ts @@ -21,6 +21,7 @@ import { TranslateService } from '@ngx-translate/core'; import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service'; import { MockProfileService } from 'test/helpers/mocks/service/mock-profile.service'; import { CourseAccessStorageService } from 'app/core/course/shared/services/course-access-storage.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('Course Management Tab Bar Component', () => { let component: CourseManagementTabBarComponent; @@ -53,7 +54,7 @@ describe('Course Management Tab Bar Component', () => { MockDirective(FeatureToggleLinkDirective), MockDirective(FeatureToggleHideDirective), ], - imports: [RouterModule], + imports: [RouterModule, FaIconComponent], providers: [ provideHttpClient(), provideHttpClientTesting(), diff --git a/src/main/webapp/app/core/course/manage/course-scores/course-scores.component.spec.ts b/src/main/webapp/app/core/course/manage/course-scores/course-scores.component.spec.ts index 9b9bb57a35f4..296e4fead77f 100644 --- a/src/main/webapp/app/core/course/manage/course-scores/course-scores.component.spec.ts +++ b/src/main/webapp/app/core/course/manage/course-scores/course-scores.component.spec.ts @@ -51,6 +51,7 @@ import { MODULE_FEATURE_PLAGIARISM } from 'app/app.constants'; import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service'; import { MockProfileService } from 'test/helpers/mocks/service/mock-profile.service'; import { ProfileInfo } from '../../../layouts/profiles/profile-info.model'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('CourseScoresComponent', () => { let fixture: ComponentFixture; @@ -261,7 +262,7 @@ describe('CourseScoresComponent', () => { pointsOfStudent2.setValue(ExerciseType.TEXT, textIncludedWith10Points10BonusPoints, Number.NaN); return TestBed.configureTestingModule({ - imports: [MockModule(NgbTooltipModule)], + imports: [MockModule(NgbTooltipModule), FaIconComponent], declarations: [ CourseScoresComponent, MockComponent(ParticipantScoresDistributionComponent), diff --git a/src/main/webapp/app/core/course/manage/overview/course-management-card.component.spec.ts b/src/main/webapp/app/core/course/manage/overview/course-management-card.component.spec.ts index 89675e6c99d8..34db4f85229c 100644 --- a/src/main/webapp/app/core/course/manage/overview/course-management-card.component.spec.ts +++ b/src/main/webapp/app/core/course/manage/overview/course-management-card.component.spec.ts @@ -20,6 +20,7 @@ import { MockActivatedRoute } from 'test/helpers/mocks/activated-route/mock-acti import { ActivatedRoute } from '@angular/router'; import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service'; import { MockProfileService } from 'test/helpers/mocks/service/mock-profile.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('CourseManagementCardComponent', () => { let fixture: ComponentFixture; @@ -54,6 +55,7 @@ describe('CourseManagementCardComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ CourseManagementCardComponent, MockPipe(ArtemisTranslatePipe), diff --git a/src/main/webapp/app/core/course/manage/quick-actions/add-exercise-popover/add-exercise-popover.component.spec.ts b/src/main/webapp/app/core/course/manage/quick-actions/add-exercise-popover/add-exercise-popover.component.spec.ts index 9fe4e37c6e68..caade6fbf78a 100644 --- a/src/main/webapp/app/core/course/manage/quick-actions/add-exercise-popover/add-exercise-popover.component.spec.ts +++ b/src/main/webapp/app/core/course/manage/quick-actions/add-exercise-popover/add-exercise-popover.component.spec.ts @@ -6,6 +6,7 @@ import { AddExercisePopoverComponent } from 'app/core/course/manage/quick-action import { MockComponent } from 'ng-mocks'; import { ExerciseCreateButtonComponent } from 'app/exercise/exercise-create-buttons/exercise-create-button/exercise-create-button.component'; import { ExerciseImportButtonComponent } from 'app/exercise/exercise-create-buttons/exercise-import-button/exercise-import-button.component'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('AddExercisePopoverComponent', () => { let component: AddExercisePopoverComponent; @@ -13,7 +14,7 @@ describe('AddExercisePopoverComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MockComponent(ExerciseCreateButtonComponent), MockComponent(ExerciseImportButtonComponent), AddExercisePopoverComponent], + imports: [MockComponent(ExerciseCreateButtonComponent), MockComponent(ExerciseImportButtonComponent), AddExercisePopoverComponent, FaIconComponent], providers: [{ provide: TranslateService, useClass: MockTranslateService }], }).compileComponents(); diff --git a/src/main/webapp/app/core/course/manage/update/course-update.component.spec.ts b/src/main/webapp/app/core/course/manage/update/course-update.component.spec.ts index b716861a59b3..5ec2173f1310 100644 --- a/src/main/webapp/app/core/course/manage/update/course-update.component.spec.ts +++ b/src/main/webapp/app/core/course/manage/update/course-update.component.spec.ts @@ -47,6 +47,7 @@ import { MockProfileService } from 'test/helpers/mocks/service/mock-profile.serv import { ProgrammingLanguage } from 'app/programming/shared/entities/programming-exercise.model'; import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service'; import { ProfileInfo } from 'app/core/layouts/profiles/profile-info.model'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; @Component({ selector: 'jhi-markdown-editor-monaco', template: '' }) class MarkdownEditorStubComponent { @@ -105,7 +106,7 @@ describe('Course Management Update Component', () => { data: of({ course }), } as any as ActivatedRoute; TestBed.configureTestingModule({ - imports: [MockModule(ReactiveFormsModule), MockModule(FormsModule), ImageCropperComponent, MockDirective(NgbTypeahead), MockModule(NgbTooltipModule)], + imports: [FaIconComponent, MockModule(ReactiveFormsModule), MockModule(FormsModule), ImageCropperComponent, MockDirective(NgbTypeahead), MockModule(NgbTooltipModule)], providers: [ { provide: ActivatedRoute, useValue: route }, { provide: LocalStorageService, useClass: MockSyncStorage }, @@ -850,7 +851,7 @@ describe('Course Management Student Course Analytics Dashboard Update', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockModule(ReactiveFormsModule), MockModule(FormsModule), ImageCropperComponent, MockDirective(NgbTypeahead), MockModule(NgbTooltipModule)], + imports: [MockModule(ReactiveFormsModule), MockModule(FormsModule), ImageCropperComponent, MockDirective(NgbTypeahead), MockModule(NgbTooltipModule), FaIconComponent], providers: [ provideHttpClient(), provideHttpClientTesting(), @@ -973,7 +974,7 @@ describe('Course Management Update Component Create', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockModule(ReactiveFormsModule), MockModule(FormsModule), ImageCropperComponent, MockDirective(NgbTypeahead), MockModule(NgbTooltipModule)], + imports: [MockModule(ReactiveFormsModule), MockModule(FormsModule), ImageCropperComponent, MockDirective(NgbTypeahead), MockModule(NgbTooltipModule), FaIconComponent], providers: [ provideHttpClient(), provideHttpClientTesting(), diff --git a/src/main/webapp/app/core/course/overview/course-archive/course-archive.component.spec.ts b/src/main/webapp/app/core/course/overview/course-archive/course-archive.component.spec.ts index da7f2c0e87c2..5096fae5d247 100644 --- a/src/main/webapp/app/core/course/overview/course-archive/course-archive.component.spec.ts +++ b/src/main/webapp/app/core/course/overview/course-archive/course-archive.component.spec.ts @@ -231,7 +231,7 @@ describe('CourseArchiveComponent', () => { const iconComponent = fixture.debugElement.query(By.css('#icon-test-down')).componentInstance; expect(iconComponent).not.toBeNull(); - expect(iconComponent.icon).toBe(component.faArrowUp19); + expect(iconComponent.icon()).toBe(component.faArrowUp19); })); it('should find the correct course and call toggle', fakeAsync(() => { diff --git a/src/main/webapp/app/core/course/overview/course-exercises/course-exercise-row/course-exercise-row.component.spec.ts b/src/main/webapp/app/core/course/overview/course-exercises/course-exercise-row/course-exercise-row.component.spec.ts index 8bd1360777a3..590bfa797ed6 100644 --- a/src/main/webapp/app/core/course/overview/course-exercises/course-exercise-row/course-exercise-row.component.spec.ts +++ b/src/main/webapp/app/core/course/overview/course-exercises/course-exercise-row/course-exercise-row.component.spec.ts @@ -33,6 +33,7 @@ import { ExerciseCategoriesComponent } from 'app/exercise/exercise-categories/ex import { CourseExerciseRowComponent } from 'app/core/course/overview/course-exercises/course-exercise-row/course-exercise-row.component'; import { CourseManagementService } from 'app/core/course/manage/services/course-management.service'; import { ParticipationWebsocketService } from 'app/core/course/shared/services/participation-websocket.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; @Component({ template: '', @@ -54,6 +55,7 @@ describe('CourseExerciseRowComponent', () => { { path: 'courses/:courseId/exercises/:exerciseId', component: DummyComponent }, ]), NgbModule, + FaIconComponent, ], declarations: [ MockComponent(SubmissionResultStatusComponent), diff --git a/src/main/webapp/app/core/course/overview/course-exercises/course-exercises.component.spec.ts b/src/main/webapp/app/core/course/overview/course-exercises/course-exercises.component.spec.ts index a7debf06b93e..ed6cbc29a96e 100644 --- a/src/main/webapp/app/core/course/overview/course-exercises/course-exercises.component.spec.ts +++ b/src/main/webapp/app/core/course/overview/course-exercises/course-exercises.component.spec.ts @@ -33,6 +33,7 @@ import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service'; import { MockProfileService } from 'test/helpers/mocks/service/mock-profile.service'; import { ExerciseService } from 'app/exercise/services/exercise.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('CourseExercisesComponent', () => { let fixture: ComponentFixture; @@ -54,7 +55,7 @@ describe('CourseExercisesComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [FormsModule, RouterModule.forRoot([]), MockModule(ReactiveFormsModule), MockDirective(TranslateDirective)], + imports: [FormsModule, RouterModule.forRoot([]), MockModule(ReactiveFormsModule), MockDirective(TranslateDirective), FaIconComponent], declarations: [ CourseExercisesComponent, SidebarComponent, diff --git a/src/main/webapp/app/core/course/overview/course-overview/course-overview.component.spec.ts b/src/main/webapp/app/core/course/overview/course-overview/course-overview.component.spec.ts index a22671909017..e7907c27895c 100644 --- a/src/main/webapp/app/core/course/overview/course-overview/course-overview.component.spec.ts +++ b/src/main/webapp/app/core/course/overview/course-overview/course-overview.component.spec.ts @@ -64,6 +64,7 @@ import { CourseNotificationService } from 'app/communication/course-notification import { CourseNotificationSettingPreset } from 'app/communication/shared/entities/course-notification/course-notification-setting-preset'; import { CourseNotificationSettingInfo } from 'app/communication/shared/entities/course-notification/course-notification-setting-info'; import { CourseNotificationInfo } from 'app/communication/shared/entities/course-notification/course-notification-info'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { CalendarEventService } from 'app/core/calendar/shared/service/calendar-event.service'; const endDate1 = dayjs().add(1, 'days'); @@ -188,7 +189,7 @@ describe('CourseOverviewComponent', () => { router = new MockRouter(); TestBed.configureTestingModule({ - imports: [RouterModule.forRoot([]), MockModule(MatSidenavModule), MockModule(NgbTooltipModule), MockModule(BrowserAnimationsModule)], + imports: [RouterModule.forRoot([]), MockModule(MatSidenavModule), MockModule(NgbTooltipModule), MockModule(BrowserAnimationsModule), FaIconComponent], declarations: [ CourseOverviewComponent, MockDirective(MockHasAnyAuthorityDirective), diff --git a/src/main/webapp/app/core/course/overview/course-settings/notification-settings/notification-settings.component.spec.ts b/src/main/webapp/app/core/course/overview/course-settings/notification-settings/notification-settings.component.spec.ts index a344b22c60f1..7dccd7194721 100644 --- a/src/main/webapp/app/core/course/overview/course-settings/notification-settings/notification-settings.component.spec.ts +++ b/src/main/webapp/app/core/course/overview/course-settings/notification-settings/notification-settings.component.spec.ts @@ -92,7 +92,7 @@ describe('NotificationSettingsComponent', () => { imports: [ NotificationSettingsComponent, MockDirective(TranslateDirective), - MockComponent(FaIconComponent), + FaIconComponent, MockComponent(CourseNotificationPresetPickerComponent), MockComponent(CourseNotificationSettingSpecificationCardComponent), ], diff --git a/src/main/webapp/app/core/course/overview/courses/course.component.spec.ts b/src/main/webapp/app/core/course/overview/courses/course.component.spec.ts index 93c76c259f6d..b4c7b995bbbb 100644 --- a/src/main/webapp/app/core/course/overview/courses/course.component.spec.ts +++ b/src/main/webapp/app/core/course/overview/courses/course.component.spec.ts @@ -33,6 +33,7 @@ import { Exam } from 'app/exam/shared/entities/exam.model'; import { SearchFilterPipe } from 'app/shared/pipes/search-filter.pipe'; import { SearchFilterComponent } from 'app/shared/search-filter/search-filter.component'; import { CourseAccessStorageService } from 'app/core/course/shared/services/course-access-storage.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; const endDate1 = dayjs().add(1, 'days'); const visibleDate1 = dayjs().subtract(1, 'days'); @@ -92,7 +93,7 @@ describe('CoursesComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [RouterModule.forRoot([{ path: 'courses/:courseId/exams/:examId', component: DummyComponent }])], + imports: [RouterModule.forRoot([{ path: 'courses/:courseId/exams/:examId', component: DummyComponent }]), FaIconComponent], declarations: [ CoursesComponent, MockDirective(MockHasAnyAuthorityDirective), diff --git a/src/main/webapp/app/core/course/overview/exercise-details/course-exercise-details.component.spec.ts b/src/main/webapp/app/core/course/overview/exercise-details/course-exercise-details.component.spec.ts index ae1ccb079fa7..d867be733740 100644 --- a/src/main/webapp/app/core/course/overview/exercise-details/course-exercise-details.component.spec.ts +++ b/src/main/webapp/app/core/course/overview/exercise-details/course-exercise-details.component.spec.ts @@ -136,7 +136,7 @@ describe('CourseExerciseDetailsComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockComponent(DiscussionSectionComponent)], + imports: [MockComponent(DiscussionSectionComponent), FaIconComponent], declarations: [ CourseExerciseDetailsComponent, MockPipe(ArtemisTranslatePipe), @@ -156,7 +156,6 @@ describe('CourseExerciseDetailsComponent', () => { MockComponent(RatingComponent), MockRouterLinkDirective, MockComponent(ExerciseDetailsStudentActionsComponent), - MockComponent(FaIconComponent), MockDirective(ExtensionPointDirective), MockPipe(ArtemisDatePipe), MockComponent(LtiInitializerComponent), diff --git a/src/main/webapp/app/core/course/shared/course-group/course-group.component.ts b/src/main/webapp/app/core/course/shared/course-group/course-group.component.ts index 8f66b6fdc2e5..e1b19c316fc4 100644 --- a/src/main/webapp/app/core/course/shared/course-group/course-group.component.ts +++ b/src/main/webapp/app/core/course/shared/course-group/course-group.component.ts @@ -66,7 +66,7 @@ export class CourseGroupComponent implements OnDestroy { searchFailed = false; searchNoResults = false; isTransitioning = false; - rowClass: string | undefined = undefined; + rowClass: string; // Icons faDownload = faDownload; @@ -217,7 +217,7 @@ export class CourseGroupComponent implements OnDestroy { */ flashRowClass = (className: string) => { this.rowClass = className; - setTimeout(() => (this.rowClass = undefined)); + setTimeout(() => (this.rowClass = '')); }; /** diff --git a/src/main/webapp/app/core/course/shared/course-sidebar/course-sidebar.component.spec.ts b/src/main/webapp/app/core/course/shared/course-sidebar/course-sidebar.component.spec.ts index 06c276675dba..312c300667b7 100644 --- a/src/main/webapp/app/core/course/shared/course-sidebar/course-sidebar.component.spec.ts +++ b/src/main/webapp/app/core/course/shared/course-sidebar/course-sidebar.component.spec.ts @@ -107,7 +107,7 @@ describe('CourseSidebarComponent', () => { MockComponent(SecuredImageComponent), MockDirective(NgbDropdown), MockDirective(TranslateDirective), - MockComponent(FaIconComponent), + FaIconComponent, MockDirective(FeatureToggleHideDirective), MockPipe(ArtemisDatePipe), MockPipe(ArtemisTranslatePipe), diff --git a/src/main/webapp/app/core/course/shared/course-title-bar/course-title-bar.component.spec.ts b/src/main/webapp/app/core/course/shared/course-title-bar/course-title-bar.component.spec.ts index ea4e1a8006c0..e841aaec98c4 100644 --- a/src/main/webapp/app/core/course/shared/course-title-bar/course-title-bar.component.spec.ts +++ b/src/main/webapp/app/core/course/shared/course-title-bar/course-title-bar.component.spec.ts @@ -141,10 +141,10 @@ describe('CourseTitleBarComponent', () => { // Verify icon types const sidebarIcon = faIconElements[0].componentInstance; - expect(sidebarIcon.icon).toBe(facSidebar); + expect(sidebarIcon.icon()).toBe(facSidebar); const chevronIcon = faIconElements[1].componentInstance; - expect(chevronIcon.icon).toBe(faChevronRight); + expect(chevronIcon.icon()).toBe(faChevronRight); }); it('should have the correct styling classes on the title bar', () => { diff --git a/src/main/webapp/app/core/interceptor/artemis-version.interceptor.spec.ts b/src/main/webapp/app/core/interceptor/artemis-version.interceptor.spec.ts index 6f56cb7c8378..d0c0df2a17cc 100644 --- a/src/main/webapp/app/core/interceptor/artemis-version.interceptor.spec.ts +++ b/src/main/webapp/app/core/interceptor/artemis-version.interceptor.spec.ts @@ -71,9 +71,8 @@ describe(`ArtemisVersionInterceptor`, () => { it('should check for an update after 30s if app is not stable', fakeAsync(() => { const isStableSubject = new Subject(); const appRef = TestBed.inject(ApplicationRef); - (appRef as any).isStable = isStableSubject.asObservable(); + jest.spyOn(appRef, 'isStable', 'get').mockReturnValue(isStableSubject.asObservable()); TestBed.inject(ArtemisVersionInterceptor); - isStableSubject.next(false); expect(checkForUpdateSpy).not.toHaveBeenCalled(); tick(30000); expect(checkForUpdateSpy).toHaveBeenCalledOnce(); diff --git a/src/main/webapp/app/core/legal/data-export/confirmation/data-export-request-button.directive.spec.ts b/src/main/webapp/app/core/legal/data-export/confirmation/data-export-request-button.directive.spec.ts index 5a4ccd7724fb..26761a6e7f9c 100644 --- a/src/main/webapp/app/core/legal/data-export/confirmation/data-export-request-button.directive.spec.ts +++ b/src/main/webapp/app/core/legal/data-export/confirmation/data-export-request-button.directive.spec.ts @@ -6,6 +6,7 @@ import { DataExportRequestButtonDirective } from 'app/core/legal/data-export/con import { DataExportConfirmationDialogService } from 'app/core/legal/data-export/confirmation/data-export-confirmation-dialog.service'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; @Component({ selector: 'jhi-test-component', @@ -21,19 +22,19 @@ describe('DataExportRequestButtonDirective', () => { let translateService: TranslateService; let translateSpy: jest.SpyInstance; - beforeEach(() => - TestBed.configureTestingModule({ - imports: [TestComponent], + beforeEach(() => { + const mockModalService = { + open: jest.fn().mockReturnValue({ + result: Promise.resolve(), + componentInstance: {}, + }), + }; + + return TestBed.configureTestingModule({ + imports: [TestComponent, FaIconComponent], providers: [ - { - provide: TranslateService, - useClass: MockTranslateService, - }, - // if we don't provide the NgbModal, the dialogError subscriptions are undefined. - { - provide: NgbModal, - useValue: null, - }, + { provide: TranslateService, useClass: MockTranslateService }, + { provide: NgbModal, useValue: mockModalService }, ], }) .compileComponents() @@ -43,8 +44,8 @@ describe('DataExportRequestButtonDirective', () => { dataExportConfirmationDialogService = TestBed.inject(DataExportConfirmationDialogService); translateService = TestBed.inject(TranslateService); translateSpy = jest.spyOn(translateService, 'instant'); - }), - ); + }); + }); afterEach(() => { jest.restoreAllMocks(); diff --git a/src/main/webapp/app/core/legal/imprint.component.spec.ts b/src/main/webapp/app/core/legal/imprint.component.spec.ts index 6f3440d96519..adc96e546ddc 100644 --- a/src/main/webapp/app/core/legal/imprint.component.spec.ts +++ b/src/main/webapp/app/core/legal/imprint.component.spec.ts @@ -12,7 +12,7 @@ import { ImprintComponent } from 'app/core/legal/imprint.component'; import { LegalDocumentService } from 'app/core/legal/legal-document.service'; import { MockActivatedRoute } from 'test/helpers/mocks/activated-route/mock-activated-route'; import { ActivatedRoute } from '@angular/router'; -import { provideHttpClient } from '@angular/common/http'; +import { provideHttpClient, withFetch } from '@angular/common/http'; describe('ImprintComponent', () => { let component: ImprintComponent; @@ -29,7 +29,7 @@ describe('ImprintComponent', () => { useClass: MockSyncStorage, }, { provide: ActivatedRoute, useValue: new MockActivatedRoute() }, - provideHttpClient(), + provideHttpClient(withFetch()), ], }).compileComponents(); fixture = TestBed.createComponent(ImprintComponent); diff --git a/src/main/webapp/app/core/legal/privacy.component.spec.ts b/src/main/webapp/app/core/legal/privacy.component.spec.ts index daaa6895f4b7..b46695116496 100644 --- a/src/main/webapp/app/core/legal/privacy.component.spec.ts +++ b/src/main/webapp/app/core/legal/privacy.component.spec.ts @@ -14,7 +14,7 @@ import { ActivatedRoute, RouterModule } from '@angular/router'; import { MockActivatedRoute } from 'test/helpers/mocks/activated-route/mock-activated-route'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from 'test/helpers/mocks/service/mock-account.service'; -import { provideHttpClient } from '@angular/common/http'; +import { provideHttpClient, withFetch } from '@angular/common/http'; describe('PrivacyComponent', () => { let component: PrivacyComponent; @@ -33,7 +33,7 @@ describe('PrivacyComponent', () => { }, { provide: ActivatedRoute, useValue: new MockActivatedRoute() }, { provide: AccountService, useClass: MockAccountService }, - provideHttpClient(), + provideHttpClient(withFetch()), ], }).compileComponents(); fixture = TestBed.createComponent(PrivacyComponent); diff --git a/src/main/webapp/app/core/navbar/navbar.component.spec.ts b/src/main/webapp/app/core/navbar/navbar.component.spec.ts index 976e1981916f..75ecd7b7f3a3 100644 --- a/src/main/webapp/app/core/navbar/navbar.component.spec.ts +++ b/src/main/webapp/app/core/navbar/navbar.component.spec.ts @@ -86,7 +86,7 @@ describe('NavbarComponent', () => { MockComponent(LoadingNotificationComponent), MockComponent(JhiConnectionWarningComponent), MockComponent(SystemNotificationComponent), - MockComponent(FaIconComponent), + FaIconComponent, MockComponent(ThemeSwitchComponent), ], providers: [ diff --git a/src/main/webapp/app/core/theme/shared/theme.service.spec.ts b/src/main/webapp/app/core/theme/shared/theme.service.spec.ts index 1e00a51cf7c1..1f1d9055f92e 100644 --- a/src/main/webapp/app/core/theme/shared/theme.service.spec.ts +++ b/src/main/webapp/app/core/theme/shared/theme.service.spec.ts @@ -62,11 +62,11 @@ describe('ThemeService', () => { }); it('applies theme changes correctly', () => { - TestBed.flushEffects(); + TestBed.tick(); expect(documentGetElementMock).toHaveBeenCalledOnce(); service.applyThemePreference(Theme.DARK); - TestBed.flushEffects(); + TestBed.tick(); expect(documentGetElementMock).toHaveBeenCalledTimes(2); expect(documentGetElementMock).toHaveBeenCalledWith(THEME_OVERRIDE_ID); @@ -92,7 +92,7 @@ describe('ThemeService', () => { expect(service.currentTheme()).toBe(Theme.DARK); service.applyThemePreference(Theme.LIGHT); - TestBed.flushEffects(); + TestBed.tick(); expect(documentGetElementMock).toHaveBeenCalledTimes(3); expect(documentGetElementMock).toHaveBeenNthCalledWith(3, THEME_OVERRIDE_ID); @@ -104,7 +104,7 @@ describe('ThemeService', () => { const retrieveSpy = jest.spyOn(localStorageService, 'retrieve').mockReturnValue('LIGHT'); service.initialize(); - TestBed.flushEffects(); + TestBed.tick(); expect(retrieveSpy).toHaveBeenCalledOnce(); expect(service.currentTheme()).toBe(Theme.LIGHT); @@ -124,7 +124,7 @@ describe('ThemeService', () => { }); service.initialize(); - TestBed.flushEffects(); + TestBed.tick(); // @ts-ignore newElement?.onload(); @@ -138,7 +138,7 @@ describe('ThemeService', () => { const retrieveSpy = jest.spyOn(localStorageService, 'retrieve').mockReturnValue(undefined); service.initialize(); - TestBed.flushEffects(); + TestBed.tick(); expect(retrieveSpy).toHaveBeenCalledOnce(); expect(windowMatchMediaSpy).toHaveBeenCalledOnce(); @@ -154,7 +154,7 @@ describe('ThemeService', () => { const docSpy = jest.spyOn(document, 'getElementById').mockReturnValue(returnedElement as any as HTMLElement); service.print(); - TestBed.flushEffects(); + TestBed.tick(); expect(docSpy).toHaveBeenCalledTimes(2); expect(docSpy).toHaveBeenCalledWith(THEME_OVERRIDE_ID); diff --git a/src/main/webapp/app/core/theme/theme-switch.component.ts b/src/main/webapp/app/core/theme/theme-switch.component.ts index 7317eb6f8d5c..dcb0315966f5 100644 --- a/src/main/webapp/app/core/theme/theme-switch.component.ts +++ b/src/main/webapp/app/core/theme/theme-switch.component.ts @@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, OnInit, computed, inject, input, vi import { TranslateModule } from '@ngx-translate/core'; import { NgbModule, NgbPopover } from '@ng-bootstrap/ng-bootstrap'; -import { PlacementArray } from '@ng-bootstrap/ng-bootstrap/util/positioning'; +import { Placement } from '@ng-bootstrap/ng-bootstrap'; import { Theme, ThemeService } from 'app/core/theme/shared/theme.service'; import { fromEvent } from 'rxjs'; import { faSync } from '@fortawesome/free-solid-svg-icons'; @@ -26,7 +26,7 @@ export class ThemeSwitchComponent implements OnInit { private readonly themeService = inject(ThemeService); - popoverPlacement = input.required(); + popoverPlacement = input.required(); popover = viewChild.required('popover'); isDarkTheme = computed(() => this.themeService.currentTheme() === Theme.DARK); diff --git a/src/main/webapp/app/core/user/settings/global-notifications-settings/global-notifications-settings.component.spec.ts b/src/main/webapp/app/core/user/settings/global-notifications-settings/global-notifications-settings.component.spec.ts index abfcf97c6857..328f2a95b0ac 100644 --- a/src/main/webapp/app/core/user/settings/global-notifications-settings/global-notifications-settings.component.spec.ts +++ b/src/main/webapp/app/core/user/settings/global-notifications-settings/global-notifications-settings.component.spec.ts @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; import { FormsModule } from '@angular/forms'; +import { By } from '@angular/platform-browser'; import { of, throwError } from 'rxjs'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { GLOBAL_NOTIFICATION_TYPES, GlobalNotificationsSettingsComponent } from './global-notifications-settings.component'; @@ -143,13 +144,13 @@ describe('GlobalNotificationsSettingsComponent', () => { tick(); fixture.detectChanges(); - const element: HTMLElement = fixture.nativeElement; - const links = element.querySelectorAll('a.small'); + const anchorElements = fixture.debugElement.queryAll(By.directive(RouterLink)); + const actualRouterLinks = anchorElements.map((debugElement) => (debugElement.injector.get(RouterLink).routerLink as string[]).join('/')); + const expectedRouterLinks = component.notificationTypeLinks.map((link) => link.routerLink.join('/')); - const notificationLinks = component.notificationTypeLinks; - notificationLinks.forEach((link) => { - const matchingLink = Array.from(links).find((a) => a.getAttribute('ng-reflect-router-link') === link.routerLink.join(',')); - expect(matchingLink).toBeDefined(); + expectedRouterLinks.forEach((expected) => { + const found = actualRouterLinks.some((actual) => actual === expected); + expect(found).toBeTrue(); }); })); }); diff --git a/src/main/webapp/app/exam/manage/exams/detail/exam-detail.component.spec.ts b/src/main/webapp/app/exam/manage/exams/detail/exam-detail.component.spec.ts index e5c772b72510..6ec594ee4051 100644 --- a/src/main/webapp/app/exam/manage/exams/detail/exam-detail.component.spec.ts +++ b/src/main/webapp/app/exam/manage/exams/detail/exam-detail.component.spec.ts @@ -75,6 +75,7 @@ describe('ExamDetailComponent', () => { ]), ExerciseDetailDirective, MockComponent(NoDataComponent), + FaIconComponent, ], declarations: [ DetailOverviewListComponent, @@ -82,7 +83,6 @@ describe('ExamDetailComponent', () => { DummyComponent, MockPipe(ArtemisTranslatePipe), MockPipe(ArtemisDatePipe), - MockComponent(FaIconComponent), MockDirective(TranslateDirective), MockDirective(HasAnyAuthorityDirective), ExamChecklistComponent, diff --git a/src/main/webapp/app/exam/manage/exams/exam-import/exam-import.component.spec.ts b/src/main/webapp/app/exam/manage/exams/exam-import/exam-import.component.spec.ts index 9babb89a3d81..7a7eecd58f4f 100644 --- a/src/main/webapp/app/exam/manage/exams/exam-import/exam-import.component.spec.ts +++ b/src/main/webapp/app/exam/manage/exams/exam-import/exam-import.component.spec.ts @@ -25,6 +25,7 @@ import { TranslateService } from '@ngx-translate/core'; import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service'; import { MockProfileService } from 'test/helpers/mocks/service/mock-profile.service'; import { MODULE_FEATURE_TEXT } from 'app/app.constants'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('Exam Import Component', () => { let component: ExamImportComponent; @@ -47,7 +48,7 @@ describe('Exam Import Component', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [FormsModule], + imports: [FormsModule, FaIconComponent], declarations: [ ExamImportComponent, ExamExerciseImportComponent, diff --git a/src/main/webapp/app/exam/manage/student-exams/student-exam-detail-table-row/student-exam-detail-table-row.component.spec.ts b/src/main/webapp/app/exam/manage/student-exams/student-exam-detail-table-row/student-exam-detail-table-row.component.spec.ts index 95a2d92e8367..f666c12d15c1 100644 --- a/src/main/webapp/app/exam/manage/student-exams/student-exam-detail-table-row/student-exam-detail-table-row.component.spec.ts +++ b/src/main/webapp/app/exam/manage/student-exams/student-exam-detail-table-row/student-exam-detail-table-row.component.spec.ts @@ -27,6 +27,7 @@ import { provideRouter } from '@angular/router'; import { input } from '@angular/core'; import { StudentExam } from 'app/exam/shared/entities/student-exam.model'; import { TextSubmission } from 'app/text/shared/entities/text-submission.model'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('StudentExamDetailTableRowComponent', () => { let studentExamDetailTableRowComponentFixture: ComponentFixture; @@ -51,7 +52,7 @@ describe('StudentExamDetailTableRowComponent', () => { exercise.studentParticipations = [studentParticipation]; return TestBed.configureTestingModule({ - imports: [NgbModule, NgxDatatableModule, ReactiveFormsModule, TranslateModule.forRoot()], + imports: [NgbModule, NgxDatatableModule, ReactiveFormsModule, TranslateModule.forRoot(), FaIconComponent], declarations: [StudentExamDetailTableRowComponent, MockComponent(DataTableComponent), MockTranslateValuesDirective, MockPipe(ArtemisTranslatePipe)], providers: [provideRouter([]), MockProvider(AlertService), MockDirective(TranslateDirective)], }) diff --git a/src/main/webapp/app/exam/manage/students/exam-students.component.spec.ts b/src/main/webapp/app/exam/manage/students/exam-students.component.spec.ts index 4f71d4846161..2a0a88dc1b9d 100644 --- a/src/main/webapp/app/exam/manage/students/exam-students.component.spec.ts +++ b/src/main/webapp/app/exam/manage/students/exam-students.component.spec.ts @@ -23,6 +23,7 @@ import { ExamUser } from 'app/exam/shared/entities/exam-user.model'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from 'test/helpers/mocks/service/mock-account.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('ExamStudentsComponent', () => { const course = { id: 1 } as Course; @@ -62,7 +63,7 @@ describe('ExamStudentsComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [NgxDatatableModule], + imports: [NgxDatatableModule, FaIconComponent], declarations: [ ExamStudentsComponent, MockComponent(UsersImportButtonComponent), diff --git a/src/main/webapp/app/exam/manage/students/upload-images/students-upload-images-dialog.component.spec.ts b/src/main/webapp/app/exam/manage/students/upload-images/students-upload-images-dialog.component.spec.ts index 85ee0486ea81..96a9db6bcf65 100644 --- a/src/main/webapp/app/exam/manage/students/upload-images/students-upload-images-dialog.component.spec.ts +++ b/src/main/webapp/app/exam/manage/students/upload-images/students-upload-images-dialog.component.spec.ts @@ -29,14 +29,8 @@ describe('StudentsUploadImagesDialogComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [FormsModule], - declarations: [ - StudentsUploadImagesDialogComponent, - MockDirective(TranslateDirective), - MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), - MockComponent(HelpIconComponent), - ], + imports: [FaIconComponent, FormsModule], + declarations: [StudentsUploadImagesDialogComponent, MockDirective(TranslateDirective), MockPipe(ArtemisTranslatePipe), MockComponent(HelpIconComponent)], providers: [ MockProvider(NgbActiveModal), MockProvider(AlertService), @@ -56,7 +50,7 @@ describe('StudentsUploadImagesDialogComponent', () => { fixture.componentRef.setInput('courseId', course.id); fixture.componentRef.setInput('exam', exam); - ngbModal = TestBed.get(NgbActiveModal); + ngbModal = TestBed.inject(NgbActiveModal); }); }); diff --git a/src/main/webapp/app/exam/overview/exam-cover/exam-participation-cover.component.spec.ts b/src/main/webapp/app/exam/overview/exam-cover/exam-participation-cover.component.spec.ts index 9cdc4cec2c4f..03fd91e4b289 100644 --- a/src/main/webapp/app/exam/overview/exam-cover/exam-participation-cover.component.spec.ts +++ b/src/main/webapp/app/exam/overview/exam-cover/exam-participation-cover.component.spec.ts @@ -49,11 +49,10 @@ describe('ExamParticipationCoverComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientModule, FormsModule], + imports: [HttpClientModule, FormsModule, FaIconComponent], declarations: [ ExamParticipationCoverComponent, MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), MockComponent(ExamTimerComponent), MockComponent(ExamGeneralInformationComponent), MockDirective(TranslateDirective), diff --git a/src/main/webapp/app/exam/overview/exercises/exercise-save-button/exercise-save-button.component.spec.ts b/src/main/webapp/app/exam/overview/exercises/exercise-save-button/exercise-save-button.component.spec.ts index c1c6d7932aaa..bdd4f50d21e6 100644 --- a/src/main/webapp/app/exam/overview/exercises/exercise-save-button/exercise-save-button.component.spec.ts +++ b/src/main/webapp/app/exam/overview/exercises/exercise-save-button/exercise-save-button.component.spec.ts @@ -64,7 +64,7 @@ describe('ExerciseSaveButtonComponent', () => { fixture.detectChanges(); const icon = fixture.debugElement.query(By.directive(FaIconComponent)); - expect(icon.componentInstance.icon).toBe(facSaveSuccess); + expect(icon.componentInstance.icon()).toBe(facSaveSuccess); }); it('should display faFloppyDisk icon if submission is not synced and submitted', () => { @@ -74,7 +74,7 @@ describe('ExerciseSaveButtonComponent', () => { fixture.detectChanges(); const icon = fixture.debugElement.query(By.directive(FaIconComponent)); - expect(icon.componentInstance.icon).toBe(faFloppyDisk); + expect(icon.componentInstance.icon()).toBe(faFloppyDisk); }); it('should call onSave when the button is clicked and submission is not synced', () => { diff --git a/src/main/webapp/app/exam/overview/exercises/modeling/modeling-exam-submission.component.spec.ts b/src/main/webapp/app/exam/overview/exercises/modeling/modeling-exam-submission.component.spec.ts index bfd70c2a6ad9..ddf4f7e317c1 100644 --- a/src/main/webapp/app/exam/overview/exercises/modeling/modeling-exam-submission.component.spec.ts +++ b/src/main/webapp/app/exam/overview/exercises/modeling/modeling-exam-submission.component.spec.ts @@ -20,6 +20,7 @@ import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from 'test/helpers/mocks/service/mock-account.service'; import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service'; import { MockProfileService } from 'test/helpers/mocks/service/mock-profile.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('ModelingExamSubmissionComponent', () => { let fixture: ComponentFixture; @@ -42,6 +43,7 @@ describe('ModelingExamSubmissionComponent', () => { beforeEach(async () => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ ModelingExamSubmissionComponent, TranslatePipeMock, diff --git a/src/main/webapp/app/exam/overview/summary/exam-result-summary.component.spec.ts b/src/main/webapp/app/exam/overview/summary/exam-result-summary.component.spec.ts index a251cccc8471..79b3adc60a29 100644 --- a/src/main/webapp/app/exam/overview/summary/exam-result-summary.component.spec.ts +++ b/src/main/webapp/app/exam/overview/summary/exam-result-summary.component.spec.ts @@ -40,6 +40,7 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; import { MockSyncStorage } from 'test/helpers/mocks/service/mock-sync-storage.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; let fixture: ComponentFixture; let component: ExamResultSummaryComponent; @@ -156,6 +157,7 @@ const gradeInfo: StudentExamWithGradeDTO = { function sharedSetup(url: string[]) { beforeEach(() => { return TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ ExamResultSummaryComponent, MockComponent(ExamResultOverviewComponent), diff --git a/src/main/webapp/app/exercise/additional-feedback/additional-feedback.component.spec.ts b/src/main/webapp/app/exercise/additional-feedback/additional-feedback.component.spec.ts index b36e12b530e3..395a1c3bb8df 100644 --- a/src/main/webapp/app/exercise/additional-feedback/additional-feedback.component.spec.ts +++ b/src/main/webapp/app/exercise/additional-feedback/additional-feedback.component.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MockComponent, MockPipe, MockProvider } from 'ng-mocks'; +import { MockPipe, MockProvider } from 'ng-mocks'; import { AdditionalFeedbackComponent } from 'app/exercise/additional-feedback/additional-feedback.component'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; @@ -13,7 +13,8 @@ describe('AdditionalFeedbackComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - declarations: [AdditionalFeedbackComponent, MockPipe(ArtemisTranslatePipe), MockComponent(FaIconComponent)], + imports: [FaIconComponent], + declarations: [AdditionalFeedbackComponent, MockPipe(ArtemisTranslatePipe)], providers: [ { provide: TranslateService, useClass: MockTranslateService }, MockProvider(LocaleConversionService, { diff --git a/src/main/webapp/app/exercise/exercise-create-buttons/exercise-create-button/exercise-create-button.component.spec.ts b/src/main/webapp/app/exercise/exercise-create-buttons/exercise-create-button/exercise-create-button.component.spec.ts index 76ee012fb230..d85eca2be28a 100644 --- a/src/main/webapp/app/exercise/exercise-create-buttons/exercise-create-button/exercise-create-button.component.spec.ts +++ b/src/main/webapp/app/exercise/exercise-create-buttons/exercise-create-button/exercise-create-button.component.spec.ts @@ -9,7 +9,6 @@ import { MockNgbModalService } from 'test/helpers/mocks/service/mock-ngb-modal.s import { ExerciseCreateButtonComponent } from 'app/exercise/exercise-create-buttons/exercise-create-button/exercise-create-button.component'; import { ExerciseType } from 'app/exercise/shared/entities/exercise/exercise.model'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; -import { MockComponent } from 'ng-mocks'; import { faFileUpload, faFont, faKeyboard, faProjectDiagram } from '@fortawesome/free-solid-svg-icons'; import { provideHttpClient } from '@angular/common/http'; @@ -21,7 +20,7 @@ describe('ExerciseCreateButtonComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MockComponent(FaIconComponent), ExerciseCreateButtonComponent], + imports: [FaIconComponent, ExerciseCreateButtonComponent], providers: [ { provide: TranslateService, useClass: MockTranslateService }, { provide: Router, useClass: MockRouter }, diff --git a/src/main/webapp/app/exercise/exercise-create-buttons/exercise-import-button/exercise-import-button.component.spec.ts b/src/main/webapp/app/exercise/exercise-create-buttons/exercise-import-button/exercise-import-button.component.spec.ts index efded0ad80b7..15bbbe66e3ac 100644 --- a/src/main/webapp/app/exercise/exercise-create-buttons/exercise-import-button/exercise-import-button.component.spec.ts +++ b/src/main/webapp/app/exercise/exercise-create-buttons/exercise-import-button/exercise-import-button.component.spec.ts @@ -8,7 +8,6 @@ import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate. import { MockRouter } from 'test/helpers/mocks/mock-router'; import { MockNgbModalService } from 'test/helpers/mocks/service/mock-ngb-modal.service'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; -import { MockComponent } from 'ng-mocks'; import { TranslateService } from '@ngx-translate/core'; import { Router } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; @@ -22,7 +21,7 @@ describe('ExerciseImportButtonComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MockComponent(FaIconComponent), ExerciseImportButtonComponent], + imports: [FaIconComponent, ExerciseImportButtonComponent], providers: [ { provide: TranslateService, useClass: MockTranslateService }, { provide: Router, useClass: MockRouter }, diff --git a/src/main/webapp/app/exercise/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.component.spec.ts b/src/main/webapp/app/exercise/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.component.spec.ts index fdc1ba908f0a..975be1b55ff2 100644 --- a/src/main/webapp/app/exercise/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.component.spec.ts +++ b/src/main/webapp/app/exercise/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.component.spec.ts @@ -26,6 +26,7 @@ import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service import { MockActivatedRoute } from 'test/helpers/mocks/activated-route/mock-activated-route'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('Exercise detail common actions Component', () => { let comp: NonProgrammingExerciseDetailCommonActionsComponent; @@ -35,6 +36,7 @@ describe('Exercise detail common actions Component', () => { beforeEach(() => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ NonProgrammingExerciseDetailCommonActionsComponent, MockComponent(SubmissionExportButtonComponent), diff --git a/src/main/webapp/app/exercise/exercise-scores/export-button/exercise-scores-export-button.component.spec.ts b/src/main/webapp/app/exercise/exercise-scores/export-button/exercise-scores-export-button.component.spec.ts index b913d0c3a6b1..54f2b9a50b75 100644 --- a/src/main/webapp/app/exercise/exercise-scores/export-button/exercise-scores-export-button.component.spec.ts +++ b/src/main/webapp/app/exercise/exercise-scores/export-button/exercise-scores-export-button.component.spec.ts @@ -3,7 +3,7 @@ import { TranslateService } from '@ngx-translate/core'; import { ExerciseScoresExportButtonComponent } from 'app/exercise/exercise-scores/export-button/exercise-scores-export-button.component'; import { of } from 'rxjs'; import { HttpResponse } from '@angular/common/http'; -import { MockComponent, MockDirective, MockPipe, MockProvider } from 'ng-mocks'; +import { MockDirective, MockPipe, MockProvider } from 'ng-mocks'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { ResultService } from 'app/exercise/result/result.service'; import { Result } from 'app/exercise/shared/entities/result/result.model'; @@ -165,8 +165,8 @@ describe('ExerciseScoresExportButtonComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockDirective(NgbTooltip)], - declarations: [ExerciseScoresExportButtonComponent, MockComponent(FaIconComponent), MockDirective(TranslateDirective), MockPipe(ArtemisTranslatePipe)], + imports: [MockDirective(NgbTooltip), FaIconComponent], + declarations: [ExerciseScoresExportButtonComponent, MockDirective(TranslateDirective), MockPipe(ArtemisTranslatePipe)], providers: [MockProvider(AlertService), { provide: ResultService, useClass: MockResultService }, { provide: TranslateService, useClass: MockTranslateService }], }).compileComponents(); diff --git a/src/main/webapp/app/exercise/import/exercise-import.component.spec.ts b/src/main/webapp/app/exercise/import/exercise-import.component.spec.ts index 27d05f27d126..538fd59bbf54 100644 --- a/src/main/webapp/app/exercise/import/exercise-import.component.spec.ts +++ b/src/main/webapp/app/exercise/import/exercise-import.component.spec.ts @@ -25,6 +25,7 @@ import { of } from 'rxjs'; import { FileUploadExercisePagingService } from 'app/fileupload/manage/services/file-upload-exercise-paging.service'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { provideHttpClient } from '@angular/common/http'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('ExerciseImportComponent', () => { let fixture: ComponentFixture; @@ -42,7 +43,7 @@ describe('ExerciseImportComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [FormsModule, MockComponent(NgbPagination)], + imports: [FaIconComponent, FormsModule, MockComponent(NgbPagination)], declarations: [ ExerciseImportComponent, MockPipe(ExerciseCourseTitlePipe), @@ -57,7 +58,7 @@ describe('ExerciseImportComponent', () => { .then(() => { fixture = TestBed.createComponent(ExerciseImportComponent); comp = fixture.componentInstance; - quizExercisePagingService = TestBed.get(QuizExercisePagingService); + quizExercisePagingService = TestBed.inject(QuizExercisePagingService); sortService = TestBed.inject(SortService); injector = TestBed.inject(Injector); activeModal = TestBed.inject(NgbActiveModal); diff --git a/src/main/webapp/app/exercise/import/from-file/exercise-import-from-file.component.spec.ts b/src/main/webapp/app/exercise/import/from-file/exercise-import-from-file.component.spec.ts index 01bbc4f90eac..51e606f58ef6 100644 --- a/src/main/webapp/app/exercise/import/from-file/exercise-import-from-file.component.spec.ts +++ b/src/main/webapp/app/exercise/import/from-file/exercise-import-from-file.component.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; - +import { By } from '@angular/platform-browser'; import { ExerciseImportFromFileComponent } from 'app/exercise/import/from-file/exercise-import-from-file.component'; import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { HelpIconComponent } from 'app/shared/components/help-icon/help-icon.component'; @@ -17,6 +17,8 @@ import { QuizExercise } from 'app/quiz/shared/entities/quiz-exercise.model'; import { UMLDiagramType } from '@ls1intum/apollon'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; +import { FeatureToggleService } from 'app/shared/feature-toggle/feature-toggle.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('ExerciseImportFromFileComponent', () => { let component: ExerciseImportFromFileComponent; @@ -27,9 +29,9 @@ describe('ExerciseImportFromFileComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MockComponent(HelpIconComponent), MockComponent(ButtonComponent)], + imports: [MockComponent(HelpIconComponent), ButtonComponent, FaIconComponent], declarations: [ExerciseImportFromFileComponent, MockDirective(TranslateDirective)], - providers: [MockProvider(NgbActiveModal), { provide: TranslateService, useClass: MockTranslateService }], + providers: [MockProvider(NgbActiveModal), { provide: TranslateService, useClass: MockTranslateService }, MockProvider(FeatureToggleService)], }).compileComponents(); fixture = TestBed.createComponent(ExerciseImportFromFileComponent); @@ -121,19 +123,17 @@ describe('ExerciseImportFromFileComponent', () => { it('should disable upload button as long as no file is selected', () => { component.fileForImport = undefined; fixture.detectChanges(); - const uploadButton: HTMLButtonElement = fixture.debugElement.nativeElement.querySelector('#upload-exercise-btn'); - //that's the only way we can access the disabled property of the button, the standard way doesn't work - // @ts-ignore - expect(JSON.parse(uploadButton.attributes.getNamedItem('ng-reflect-disabled').value)).toBeTrue(); + + const uploadButton = fixture.debugElement.query(By.css('#upload-exercise-btn')); + expect(uploadButton.componentInstance.disabled).toBeTrue(); }); it('should enable upload button once file is selected', () => { component.fileForImport = new File([''], 'test.zip', { type: 'application/zip' }); fixture.detectChanges(); - const uploadButton = fixture.debugElement.nativeElement.querySelector('#upload-exercise-btn'); - //that's the only way we can access the disabled property of the button, the standard way doesn't work - // @ts-ignore - expect(JSON.parse(uploadButton.attributes.getNamedItem('ng-reflect-disabled').value)).toBeFalse(); + + const uploadButton = fixture.debugElement.query(By.css('#upload-exercise-btn')); + expect(uploadButton.componentInstance.disabled).toBeFalse(); }); async function assertErrorAlertIsRaisedWithoutOneValidJsonFile() { diff --git a/src/main/webapp/app/exercise/participation-submission/participation-submission.component.spec.ts b/src/main/webapp/app/exercise/participation-submission/participation-submission.component.spec.ts index 091e1513b75d..652ee6ac882d 100644 --- a/src/main/webapp/app/exercise/participation-submission/participation-submission.component.spec.ts +++ b/src/main/webapp/app/exercise/participation-submission/participation-submission.component.spec.ts @@ -45,6 +45,7 @@ import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate. import { TranslateService } from '@ngx-translate/core'; import { MockTranslateValuesDirective } from 'test/helpers/mocks/directive/mock-translate-values.directive'; import { provideHttpClientTesting } from '@angular/common/http/testing'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('ParticipationSubmissionComponent', () => { let comp: ParticipationSubmissionComponent; @@ -83,7 +84,7 @@ describe('ParticipationSubmissionComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [NgxDatatableModule, RouterModule.forRoot([])], + imports: [NgxDatatableModule, RouterModule.forRoot([]), FaIconComponent], declarations: [ ParticipationSubmissionComponent, MockComponent(UpdatingResultComponent), diff --git a/src/main/webapp/app/exercise/result-history/result-history.component.spec.ts b/src/main/webapp/app/exercise/result-history/result-history.component.spec.ts index 45a180c781cc..822fd72848a4 100644 --- a/src/main/webapp/app/exercise/result-history/result-history.component.spec.ts +++ b/src/main/webapp/app/exercise/result-history/result-history.component.spec.ts @@ -1,4 +1,4 @@ -import { input, runInInjectionContext } from '@angular/core'; +import { input } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ResultHistoryComponent } from 'app/exercise/result-history/result-history.component'; import { MockPipe } from 'ng-mocks'; @@ -25,7 +25,7 @@ describe('ResultHistoryComponent', () => { }); it('should initialize with same rated results', () => { - runInInjectionContext(TestBed, () => { + TestBed.runInInjectionContext(() => { component.results = input([ { rated: true, id: 1 }, { rated: true, id: 2 }, @@ -41,7 +41,7 @@ describe('ResultHistoryComponent', () => { expect(component.showPreviousDivider).toBeFalse(); expect(component.movedLastRatedResult).toBeFalsy(); - runInInjectionContext(TestBed, () => { + TestBed.runInInjectionContext(() => { component.results = input([ { rated: false, id: 1 }, { rated: false, id: 2 }, @@ -64,7 +64,7 @@ describe('ResultHistoryComponent', () => { }); it('should initialize with mixed rated results', () => { - runInInjectionContext(TestBed, () => { + TestBed.runInInjectionContext(() => { component.results = input([ { rated: true, id: 1 }, { rated: false, id: 2 }, @@ -80,7 +80,7 @@ describe('ResultHistoryComponent', () => { expect(component.showPreviousDivider).toBeFalse(); expect(component.movedLastRatedResult).toBeFalsy(); - runInInjectionContext(TestBed, () => { + TestBed.runInInjectionContext(() => { component.results = input([ { rated: true, id: 1 }, { rated: false, id: 2 }, diff --git a/src/main/webapp/app/exercise/services/exercise-paging.service.spec.ts b/src/main/webapp/app/exercise/services/exercise-paging.service.spec.ts index d1e7c139eba9..3051f158e9a7 100644 --- a/src/main/webapp/app/exercise/services/exercise-paging.service.spec.ts +++ b/src/main/webapp/app/exercise/services/exercise-paging.service.spec.ts @@ -26,7 +26,7 @@ describe('Exercise Paging Service', () => { ], }); httpMock = TestBed.inject(HttpTestingController); - const httpClient = TestBed.get(HttpClient); + const httpClient = TestBed.inject(HttpClient); service = new DummyPagingService(httpClient); }); diff --git a/src/main/webapp/app/exercise/team/team-update-dialog/team-update-dialog.component.spec.ts b/src/main/webapp/app/exercise/team/team-update-dialog/team-update-dialog.component.spec.ts index ae2a7d0d2de9..55764d40b7f5 100644 --- a/src/main/webapp/app/exercise/team/team-update-dialog/team-update-dialog.component.spec.ts +++ b/src/main/webapp/app/exercise/team/team-update-dialog/team-update-dialog.component.spec.ts @@ -18,6 +18,7 @@ import { TeamStudentSearchComponent } from 'app/exercise/team/team-student-searc import { TranslateDirective } from 'app/shared/language/translate.directive'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('TeamUpdateDialogComponent', () => { let comp: TeamUpdateDialogComponent; @@ -27,7 +28,7 @@ describe('TeamUpdateDialogComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [FormsModule], + imports: [FormsModule, FaIconComponent], declarations: [ TeamUpdateDialogComponent, MockPipe(ArtemisTranslatePipe), diff --git a/src/main/webapp/app/fileupload/manage/assess/file-upload-assessment.component.spec.ts b/src/main/webapp/app/fileupload/manage/assess/file-upload-assessment.component.spec.ts index 1d001078c864..2edfd24fae83 100644 --- a/src/main/webapp/app/fileupload/manage/assess/file-upload-assessment.component.spec.ts +++ b/src/main/webapp/app/fileupload/manage/assess/file-upload-assessment.component.spec.ts @@ -40,6 +40,7 @@ import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('FileUploadAssessmentComponent', () => { let comp: FileUploadAssessmentComponent; @@ -71,7 +72,7 @@ describe('FileUploadAssessmentComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [RouterModule.forRoot([routes[0]])], + imports: [RouterModule.forRoot([routes[0]]), FaIconComponent], declarations: [ FileUploadAssessmentComponent, MockComponent(UpdatingResultComponent), diff --git a/src/main/webapp/app/fileupload/overview/file-upload-submission/file-upload-submission.component.spec.ts b/src/main/webapp/app/fileupload/overview/file-upload-submission/file-upload-submission.component.spec.ts index 9bdf094ab9b1..254e5143ca9a 100644 --- a/src/main/webapp/app/fileupload/overview/file-upload-submission/file-upload-submission.component.spec.ts +++ b/src/main/webapp/app/fileupload/overview/file-upload-submission/file-upload-submission.component.spec.ts @@ -41,6 +41,7 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { provideHttpClient } from '@angular/common/http'; import { provideRouter } from '@angular/router'; import { FileService } from 'app/shared/service/file.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('FileUploadSubmissionComponent', () => { let comp: FileUploadSubmissionComponent; @@ -53,7 +54,7 @@ describe('FileUploadSubmissionComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [NgxDatatableModule], + imports: [NgxDatatableModule, FaIconComponent], declarations: [ FileUploadSubmissionComponent, MockComponent(ComplaintsForTutorComponent), @@ -209,8 +210,7 @@ describe('FileUploadSubmissionComponent', () => { tick(); const submitButton = debugElement.query(By.css('jhi-button')); - expect(submitButton).toBeDefined(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('true'); + expect(submitButton.componentInstance.disabled).toBeTrue(); tick(); fixture.destroy(); @@ -229,8 +229,7 @@ describe('FileUploadSubmissionComponent', () => { expect(comp.isLate).toBeTrue(); const submitButton = debugElement.query(By.css('jhi-button')); - expect(submitButton).toBeDefined(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('false'); + expect(submitButton.componentInstance.disabled).toBeFalse(); tick(); fixture.destroy(); @@ -247,9 +246,9 @@ describe('FileUploadSubmissionComponent', () => { comp.result = result; fixture.detectChanges(); + expect(comp.isLate).toBeTrue(); const submitButton = debugElement.query(By.css('jhi-button')); - expect(submitButton).toBeDefined(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('true'); + expect(submitButton.componentInstance.disabled).toBeTrue(); tick(); fixture.destroy(); diff --git a/src/main/webapp/app/iris/manage/settings/iris-settings-update/iris-settings-update-component.spec.ts b/src/main/webapp/app/iris/manage/settings/iris-settings-update/iris-settings-update-component.spec.ts index 5d4967596f92..543f4ea3f771 100644 --- a/src/main/webapp/app/iris/manage/settings/iris-settings-update/iris-settings-update-component.spec.ts +++ b/src/main/webapp/app/iris/manage/settings/iris-settings-update/iris-settings-update-component.spec.ts @@ -18,6 +18,7 @@ import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate. import { TranslateService } from '@ngx-translate/core'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from 'test/helpers/mocks/service/mock-account.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('IrisSettingsUpdateComponent', () => { let component: IrisSettingsUpdateComponent; @@ -43,7 +44,7 @@ describe('IrisSettingsUpdateComponent', () => { }; TestBed.configureTestingModule({ - imports: [MockJhiTranslateDirective, IrisCourseSettingsUpdateComponent, IrisSettingsUpdateComponent, IrisCommonSubSettingsUpdateComponent], + imports: [MockJhiTranslateDirective, IrisCourseSettingsUpdateComponent, IrisSettingsUpdateComponent, IrisCommonSubSettingsUpdateComponent, FaIconComponent], declarations: [MockPipe(ArtemisTranslatePipe), MockComponent(ButtonComponent)], providers: [ MockProvider(IrisSettingsService, irisSettingsServiceMock), diff --git a/src/main/webapp/app/iris/overview/base-chatbot/chat-history-item/chat-history-item.component.spec.ts b/src/main/webapp/app/iris/overview/base-chatbot/chat-history-item/chat-history-item.component.spec.ts index bdf5f495a0b5..5069005278ee 100644 --- a/src/main/webapp/app/iris/overview/base-chatbot/chat-history-item/chat-history-item.component.spec.ts +++ b/src/main/webapp/app/iris/overview/base-chatbot/chat-history-item/chat-history-item.component.spec.ts @@ -81,7 +81,7 @@ describe('ChatHistoryItemComponent', () => { const iconDebugEl = fixture.debugElement.query(By.directive(FaIconComponent)); const iconInstance = iconDebugEl.componentInstance as FaIconComponent; const entityNameEl = fixture.debugElement.query(By.css('.related-entity-name')).nativeElement; - expect(iconInstance.icon).toBe(expectedIcon); + expect(iconInstance.icon()).toBe(expectedIcon); expect(component.tooltipKey()).toBe(expectedTooltipKey); expect(entityNameEl.textContent).toContain(expectedEntityName); } diff --git a/src/main/webapp/app/iris/overview/base-chatbot/iris-base-chatbot.component.spec.ts b/src/main/webapp/app/iris/overview/base-chatbot/iris-base-chatbot.component.spec.ts index bd9bb1e66c04..65fc8d54429c 100644 --- a/src/main/webapp/app/iris/overview/base-chatbot/iris-base-chatbot.component.spec.ts +++ b/src/main/webapp/app/iris/overview/base-chatbot/iris-base-chatbot.component.spec.ts @@ -781,7 +781,7 @@ describe('IrisBaseChatbotComponent', () => { const relatedEntityButton = fixture.nativeElement.querySelector('.related-entity-button') as HTMLButtonElement; expect(relatedEntityButton).not.toBeNull(); - expect(relatedEntityButton.getAttribute('ng-reflect-router-link')).toContain(expectedLinkFragment); + expect(component.relatedEntityRoute()).toBe(expectedLinkFragment); }; it('should display correct related entity button when lecture session selected', fakeAsync(() => { diff --git a/src/main/webapp/app/lecture/manage/lecture-units/attachment-video-unit-form/attachment-video-unit-form.component.spec.ts b/src/main/webapp/app/lecture/manage/lecture-units/attachment-video-unit-form/attachment-video-unit-form.component.spec.ts index e632b8d75a51..02b80d3ab2a2 100644 --- a/src/main/webapp/app/lecture/manage/lecture-units/attachment-video-unit-form/attachment-video-unit-form.component.spec.ts +++ b/src/main/webapp/app/lecture/manage/lecture-units/attachment-video-unit-form/attachment-video-unit-form.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { FaIconComponent } from '@fortawesome/angular-fontawesome'; +import { FontAwesomeTestingModule } from '@fortawesome/angular-fontawesome/testing'; import { AttachmentVideoUnitFormComponent, AttachmentVideoUnitFormData } from 'app/lecture/manage/lecture-units/attachment-video-unit-form/attachment-video-unit-form.component'; import { FormDateTimePickerComponent } from 'app/shared/date-time-picker/date-time-picker.component'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; @@ -19,14 +19,8 @@ describe('AttachmentVideoUnitFormComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ReactiveFormsModule, FormsModule, MockDirective(NgbTooltip), MockModule(OwlDateTimeModule), MockModule(OwlNativeDateTimeModule)], - declarations: [ - AttachmentVideoUnitFormComponent, - FormDateTimePickerComponent, - MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), - MockComponent(CompetencySelectionComponent), - ], + imports: [ReactiveFormsModule, FormsModule, MockDirective(NgbTooltip), MockModule(OwlDateTimeModule), MockModule(OwlNativeDateTimeModule), FontAwesomeTestingModule], + declarations: [AttachmentVideoUnitFormComponent, FormDateTimePickerComponent, MockPipe(ArtemisTranslatePipe), MockComponent(CompetencySelectionComponent)], providers: [{ provide: TranslateService, useClass: MockTranslateService }], }).compileComponents(); diff --git a/src/main/webapp/app/lecture/manage/lecture-units/attachment-video-units/attachment-video-units.component.spec.ts b/src/main/webapp/app/lecture/manage/lecture-units/attachment-video-units/attachment-video-units.component.spec.ts index 1de66ac41fea..e64f5f9e0277 100644 --- a/src/main/webapp/app/lecture/manage/lecture-units/attachment-video-units/attachment-video-units.component.spec.ts +++ b/src/main/webapp/app/lecture/manage/lecture-units/attachment-video-units/attachment-video-units.component.spec.ts @@ -17,6 +17,7 @@ import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; import dayjs from 'dayjs/esm'; import { HttpResponse } from '@angular/common/http'; import { FormsModule } from '@angular/forms'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; @Component({ selector: 'jhi-lecture-unit-layout', template: '' }) class LectureUnitLayoutStubComponent { @@ -66,7 +67,7 @@ describe('AttachmentVideoUnitsComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [FormsModule, MockModule(NgbTooltipModule)], + imports: [FormsModule, MockModule(NgbTooltipModule), FaIconComponent], declarations: [ AttachmentVideoUnitsComponent, LectureUnitLayoutStubComponent, diff --git a/src/main/webapp/app/lecture/manage/lecture-units/create-exercise-unit/create-exercise-unit.component.spec.ts b/src/main/webapp/app/lecture/manage/lecture-units/create-exercise-unit/create-exercise-unit.component.spec.ts index 88e2aec2a863..7caccf099dfb 100644 --- a/src/main/webapp/app/lecture/manage/lecture-units/create-exercise-unit/create-exercise-unit.component.spec.ts +++ b/src/main/webapp/app/lecture/manage/lecture-units/create-exercise-unit/create-exercise-unit.component.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; -import { MockComponent, MockDirective, MockPipe, MockProvider } from 'ng-mocks'; +import { MockDirective, MockPipe, MockProvider } from 'ng-mocks'; import { ActivatedRoute, Router } from '@angular/router'; import { MockRouter } from 'test/helpers/mocks/mock-router'; import { of } from 'rxjs'; @@ -38,13 +38,8 @@ describe('CreateExerciseUnitComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - declarations: [ - CreateExerciseUnitComponent, - MockPipe(ArtemisTranslatePipe), - MockDirective(SortDirective), - MockDirective(SortByDirective), - MockComponent(FaIconComponent), - ], + imports: [FaIconComponent], + declarations: [CreateExerciseUnitComponent, MockPipe(ArtemisTranslatePipe), MockDirective(SortDirective), MockDirective(SortByDirective)], providers: [ MockProvider(CourseManagementService), MockProvider(AlertService), diff --git a/src/main/webapp/app/lecture/manage/lecture-units/management/lecture-unit-management.component.spec.ts b/src/main/webapp/app/lecture/manage/lecture-units/management/lecture-unit-management.component.spec.ts index d1f82108beae..1ad6459d25a0 100644 --- a/src/main/webapp/app/lecture/manage/lecture-units/management/lecture-unit-management.component.spec.ts +++ b/src/main/webapp/app/lecture/manage/lecture-units/management/lecture-unit-management.component.spec.ts @@ -69,7 +69,7 @@ describe('LectureUnitManagementComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MockDirective(NgbTooltip)], + imports: [MockDirective(NgbTooltip), FaIconComponent], declarations: [ LectureUnitManagementComponent, MockComponent(UnitCreationCardComponent), @@ -79,7 +79,6 @@ describe('LectureUnitManagementComponent', () => { MockComponent(ExerciseUnitComponent), MockComponent(AttachmentVideoUnitComponent), MockComponent(TextUnitComponent), - MockComponent(FaIconComponent), MockDirective(DeleteButtonDirective), MockDirective(HasAnyAuthorityDirective), MockRouterLinkDirective, diff --git a/src/main/webapp/app/lecture/manage/lecture-units/online-unit-form/online-unit-form.component.spec.ts b/src/main/webapp/app/lecture/manage/lecture-units/online-unit-form/online-unit-form.component.spec.ts index f70d3c387b32..f0699342b3aa 100644 --- a/src/main/webapp/app/lecture/manage/lecture-units/online-unit-form/online-unit-form.component.spec.ts +++ b/src/main/webapp/app/lecture/manage/lecture-units/online-unit-form/online-unit-form.component.spec.ts @@ -5,7 +5,6 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { MockComponent, MockModule, MockPipe, MockProvider } from 'ng-mocks'; import { FormDateTimePickerComponent } from 'app/shared/date-time-picker/date-time-picker.component'; -import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { OnlineUnitService } from 'app/lecture/manage/lecture-units/services/onlineUnit.service'; import { OnlineResourceDTO } from 'app/lecture/manage/lecture-units/online-resource-dto.model'; import { HttpResponse } from '@angular/common/http'; @@ -15,6 +14,7 @@ import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; import { CompetencySelectionComponent } from 'app/atlas/shared/competency-selection/competency-selection.component'; +import { FontAwesomeTestingModule } from '@fortawesome/angular-fontawesome/testing'; describe('OnlineUnitFormComponent', () => { let onlineUnitFormComponentFixture: ComponentFixture; @@ -22,14 +22,8 @@ describe('OnlineUnitFormComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ReactiveFormsModule, FormsModule, MockModule(NgbTooltipModule), MockModule(OwlDateTimeModule), MockModule(OwlNativeDateTimeModule)], - declarations: [ - OnlineUnitFormComponent, - FormDateTimePickerComponent, - MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), - MockComponent(CompetencySelectionComponent), - ], + imports: [ReactiveFormsModule, FormsModule, MockModule(NgbTooltipModule), MockModule(OwlDateTimeModule), MockModule(OwlNativeDateTimeModule), FontAwesomeTestingModule], + declarations: [OnlineUnitFormComponent, FormDateTimePickerComponent, MockPipe(ArtemisTranslatePipe), MockComponent(CompetencySelectionComponent)], providers: [MockProvider(OnlineUnitService), { provide: TranslateService, useClass: MockTranslateService }], }) .compileComponents() diff --git a/src/main/webapp/app/lecture/manage/lecture-units/text-unit-form/text-unit-form.component.spec.ts b/src/main/webapp/app/lecture/manage/lecture-units/text-unit-form/text-unit-form.component.spec.ts index c850c54375ee..94223075eef9 100644 --- a/src/main/webapp/app/lecture/manage/lecture-units/text-unit-form/text-unit-form.component.spec.ts +++ b/src/main/webapp/app/lecture/manage/lecture-units/text-unit-form/text-unit-form.component.spec.ts @@ -15,6 +15,7 @@ import { MockResizeObserver } from 'test/helpers/mocks/service/mock-resize-obser import { MarkdownEditorMonacoComponent } from 'app/shared/markdown-editor/monaco/markdown-editor-monaco.component'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { CompetencySelectionComponent } from 'app/atlas/shared/competency-selection/competency-selection.component'; +import { FontAwesomeTestingModule } from '@fortawesome/angular-fontawesome/testing'; type Store = { [key: string]: any; @@ -40,7 +41,7 @@ describe('TextUnitFormComponent', () => { }); await TestBed.configureTestingModule({ - imports: [ReactiveFormsModule, FormsModule, MockModule(NgbTooltipModule), MockModule(OwlDateTimeModule), MockModule(OwlNativeDateTimeModule)], + imports: [ReactiveFormsModule, FormsModule, MockModule(NgbTooltipModule), MockModule(OwlDateTimeModule), MockModule(OwlNativeDateTimeModule), FontAwesomeTestingModule], declarations: [ TextUnitFormComponent, MockComponent(MarkdownEditorMonacoComponent), diff --git a/src/main/webapp/app/lecture/manage/lecture-units/unit-creation-card/unit-creation-card.component.spec.ts b/src/main/webapp/app/lecture/manage/lecture-units/unit-creation-card/unit-creation-card.component.spec.ts index 394f079ea58f..a8ca4d031c58 100644 --- a/src/main/webapp/app/lecture/manage/lecture-units/unit-creation-card/unit-creation-card.component.spec.ts +++ b/src/main/webapp/app/lecture/manage/lecture-units/unit-creation-card/unit-creation-card.component.spec.ts @@ -14,14 +14,8 @@ describe('UnitCreationCardComponent', () => { let unitCreationCardComponent: UnitCreationCardComponent; beforeEach(() => { TestBed.configureTestingModule({ - imports: [RouterModule.forRoot([])], - declarations: [ - UnitCreationCardComponent, - MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), - MockComponent(DocumentationButtonComponent), - MockDirective(TranslateDirective), - ], + imports: [RouterModule.forRoot([]), FaIconComponent], + declarations: [UnitCreationCardComponent, MockPipe(ArtemisTranslatePipe), MockComponent(DocumentationButtonComponent), MockDirective(TranslateDirective)], providers: [MockProvider(TranslateService)], }) .compileComponents() diff --git a/src/main/webapp/app/lecture/manage/lecture-update/lecture-update.component.spec.ts b/src/main/webapp/app/lecture/manage/lecture-update/lecture-update.component.spec.ts index f4ca93586164..9b46df96f9e2 100644 --- a/src/main/webapp/app/lecture/manage/lecture-update/lecture-update.component.spec.ts +++ b/src/main/webapp/app/lecture/manage/lecture-update/lecture-update.component.spec.ts @@ -34,6 +34,7 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from 'test/helpers/mocks/service/mock-account.service'; import { FormStatusBarComponent } from 'app/shared/form/form-status-bar/form-status-bar.component'; +import { FontAwesomeTestingModule } from '@fortawesome/angular-fontawesome/testing'; import { CalendarEventService } from 'app/core/calendar/shared/service/calendar-event.service'; describe('LectureUpdateComponent', () => { @@ -41,7 +42,6 @@ describe('LectureUpdateComponent', () => { let lectureUpdateComponentFixture: ComponentFixture; let lectureUpdateComponent: LectureUpdateComponent; let router: Router; - let activatedRoute: ActivatedRoute; let pastLecture: Lecture; @@ -54,7 +54,7 @@ describe('LectureUpdateComponent', () => { pastLecture.endDate = yesterday; TestBed.configureTestingModule({ - imports: [FormsModule, MockModule(NgbTooltipModule), MockModule(OwlDateTimeModule)], + imports: [FormsModule, MockModule(NgbTooltipModule), MockModule(OwlDateTimeModule), FontAwesomeTestingModule], declarations: [ LectureUpdateComponent, LectureTitleChannelNameComponent, @@ -77,44 +77,43 @@ describe('LectureUpdateComponent', () => { providers: [ { provide: TranslateService, useClass: MockTranslateService }, { provide: Router, useClass: MockRouter }, - { - provide: ActivatedRoute, - useValue: { - parent: { - data: of({ course: { id: 1 } }), - }, - queryParams: of({ - params: {}, - }), - snapshot: { - paramMap: convertToParamMap({ - courseId: '1', - }), - }, - }, - }, { provide: AccountService, useClass: MockAccountService }, provideHttpClient(), provideHttpClientTesting(), MockProvider(CalendarEventService), ], - }) - .compileComponents() - .then(() => { - lectureUpdateComponentFixture = TestBed.createComponent(LectureUpdateComponent); - lectureUpdateComponent = lectureUpdateComponentFixture.componentInstance; - - lectureService = TestBed.inject(LectureService); - router = TestBed.get(Router); - activatedRoute = TestBed.inject(ActivatedRoute); - }); + }); }); afterEach(() => { jest.restoreAllMocks(); }); - it('should create lecture', () => { + async function configureActiveRouteMockAndCompileComponents(parentData: any = { course: { id: 1 } }) { + const activatedRouteMock = { + parent: { + data: of(parentData), + }, + queryParams: of({}), + snapshot: { + paramMap: convertToParamMap({ courseId: '1' }), + }, + }; + + TestBed.overrideProvider(ActivatedRoute, { useValue: activatedRouteMock }); + + await TestBed.compileComponents(); + + lectureUpdateComponentFixture = TestBed.createComponent(LectureUpdateComponent); + lectureUpdateComponent = lectureUpdateComponentFixture.componentInstance; + + lectureService = TestBed.inject(LectureService); + router = TestBed.inject(Router); + TestBed.inject(ActivatedRoute); + } + + it('should create lecture', async () => { + await configureActiveRouteMockAndCompileComponents(); lectureUpdateComponent.lecture.set({ title: 'test1', channelName: 'test1' } as Lecture); const createSpy = jest.spyOn(lectureService, 'create').mockReturnValue( @@ -141,8 +140,8 @@ describe('LectureUpdateComponent', () => { expect(refreshSpy).toHaveBeenCalledOnce(); }); - it('should edit a lecture', fakeAsync(() => { - activatedRoute.parent!.data = of({ course: { id: 1 }, lecture: { id: 6 } }); + it('should edit a lecture', async () => { + await configureActiveRouteMockAndCompileComponents({ course: { id: 1 }, lecture: { id: 6 } }); const navigateSpy = jest.spyOn(router, 'navigate'); lectureUpdateComponentFixture.detectChanges(); @@ -165,7 +164,6 @@ describe('LectureUpdateComponent', () => { const refreshSpy = jest.spyOn(calendarEventService, 'refresh'); lectureUpdateComponent.save(); - tick(); lectureUpdateComponentFixture.detectChanges(); const expectedPath = ['course-management', 1, 'lectures', 6]; @@ -174,20 +172,19 @@ describe('LectureUpdateComponent', () => { expect(updateSpy).toHaveBeenCalledOnce(); expect(updateSpy).toHaveBeenCalledWith({ id: 6, title: 'test1Updated', channelName: 'test1Updated' }); expect(refreshSpy).toHaveBeenCalledOnce(); - })); + }); - it('should select process units checkbox', fakeAsync(() => { + it('should select process units checkbox', async () => { + await configureActiveRouteMockAndCompileComponents(); lectureUpdateComponent.processUnitMode = false; const selectProcessUnit = jest.spyOn(lectureUpdateComponent, 'onSelectProcessUnit'); lectureUpdateComponent.onSelectProcessUnit(); - tick(); expect(selectProcessUnit).toHaveBeenCalledOnce(); expect(lectureUpdateComponent.processUnitMode).toBeTrue(); - })); + }); - it('should navigate to previous state', fakeAsync(() => { - activatedRoute = TestBed.inject(ActivatedRoute); - activatedRoute.parent!.data = of({ course: { id: 1 }, lecture: { id: 6, title: '', course: { id: 1 } } }); + it('should navigate to previous state', async () => { + await configureActiveRouteMockAndCompileComponents({ course: { id: 1 }, lecture: { id: 6, title: '', course: { id: 1 } } }); lectureUpdateComponent.ngOnInit(); lectureUpdateComponentFixture.detectChanges(); @@ -195,12 +192,12 @@ describe('LectureUpdateComponent', () => { const navigateSpy = jest.spyOn(router, 'navigate'); const previousState = jest.spyOn(lectureUpdateComponent, 'previousState'); lectureUpdateComponent.previousState(); - tick(); + expect(previousState).toHaveBeenCalledOnce(); const expectedPath = ['course-management', '1', 'lectures', '6']; expect(navigateSpy).toHaveBeenCalledWith(expectedPath); - })); + }); it('should create a lecture and then redirect to unit split', fakeAsync(() => { lectureUpdateComponent.file = new File([''], 'testFile.pdf', { type: 'application/pdf' }); @@ -236,7 +233,8 @@ describe('LectureUpdateComponent', () => { expect(navigateSpy).toHaveBeenCalledWith(expectedPath, { state: { file: lectureUpdateComponent.file, fileName: lectureUpdateComponent.fileName } }); })); - it('should call onFileChange on changed file', () => { + it('should call onFileChange on changed file', async () => { + await configureActiveRouteMockAndCompileComponents(); lectureUpdateComponent.processUnitMode = false; lectureUpdateComponentFixture.detectChanges(); expect(lectureUpdateComponentFixture.debugElement.nativeElement.querySelector('#fileInput')).toBeFalsy(); @@ -254,9 +252,8 @@ describe('LectureUpdateComponent', () => { expect(onFileChangeStub).toHaveBeenCalledOnce(); }); - it('should set lecture visible date, start date and end date correctly', fakeAsync(() => { - activatedRoute = TestBed.inject(ActivatedRoute); - activatedRoute.parent!.data = of({ course: { id: 1 }, lecture: { id: 6 } }); + it('should set lecture visible date, start date and end date correctly', async () => { + await configureActiveRouteMockAndCompileComponents({ course: { id: 1 }, lecture: { id: 6 } }); lectureUpdateComponentFixture.detectChanges(); lectureUpdateComponent.lecture.set({ id: 6, title: 'test1Updated' } as Lecture); @@ -274,7 +271,7 @@ describe('LectureUpdateComponent', () => { expect(lectureUpdateComponent.lecture().startDate).toEqual(lectureUpdateComponent.lecture().visibleDate); lectureUpdateComponentFixture.detectChanges(); - tick(); + await lectureUpdateComponentFixture.whenStable(); lectureUpdateComponent.lecture().startDate = undefined; lectureUpdateComponent.lecture().endDate = undefined; @@ -288,7 +285,7 @@ describe('LectureUpdateComponent', () => { expect(lectureUpdateComponent.lecture().visibleDate).toBeUndefined(); lectureUpdateComponentFixture.detectChanges(); - tick(); + await lectureUpdateComponentFixture.whenStable(); lectureUpdateComponent.lecture().visibleDate = dayjs().year(2022).month(1).date(1); lectureUpdateComponent.lecture().startDate = dayjs().year(2022).month(1).date(2); @@ -308,10 +305,11 @@ describe('LectureUpdateComponent', () => { } else { throw new Error('startDate and endDate should not be undefined'); } - })); + }); describe('isChangeMadeToTitleSection', () => { - it('should detect changes made to the title section', () => { + it('should detect changes made to the title section', async () => { + await configureActiveRouteMockAndCompileComponents(); lectureUpdateComponent.lecture.set({ title: 'new title', channelName: 'new channel', description: 'new description' } as Lecture); lectureUpdateComponent.lectureOnInit = { title: 'old title', channelName: 'old channel', description: 'old description' } as Lecture; expect(lectureUpdateComponent.isChangeMadeToTitleSection()).toBeTrue(); @@ -324,7 +322,8 @@ describe('LectureUpdateComponent', () => { expect(lectureUpdateComponent.isChangeMadeToTitleSection()).toBeFalse(); }); - it('should handle undefined from description properly', () => { + it('should handle undefined from description properly', async () => { + await configureActiveRouteMockAndCompileComponents(); lectureUpdateComponent.lecture.set({ title: 'new title', channelName: 'new channel', description: 'new description' } as Lecture); lectureUpdateComponent.lectureOnInit = { title: 'old title', channelName: 'old channel', description: undefined } as Lecture; expect(lectureUpdateComponent.isChangeMadeToTitleSection()).toBeTrue(); @@ -339,7 +338,8 @@ describe('LectureUpdateComponent', () => { }); describe('isChangeMadeToPeriodSection', () => { - it('should detect changes made to the period section', () => { + it('should detect changes made to the period section', async () => { + await configureActiveRouteMockAndCompileComponents(); lectureUpdateComponent.lecture.set({ visibleDate: dayjs().add(1, 'day'), startDate: dayjs().add(2, 'day'), endDate: dayjs().add(3, 'day') } as Lecture); lectureUpdateComponent.lectureOnInit = { visibleDate: dayjs(), startDate: dayjs(), endDate: dayjs() } as Lecture; expect(lectureUpdateComponent.isChangeMadeToPeriodSection()).toBeTrue(); @@ -352,7 +352,8 @@ describe('LectureUpdateComponent', () => { expect(lectureUpdateComponent.isChangeMadeToPeriodSection()).toBeFalse(); }); - it('should not consider resetting an undefined date as a change', () => { + it('should not consider resetting an undefined date as a change', async () => { + await configureActiveRouteMockAndCompileComponents(); lectureUpdateComponent.lecture.set({ visibleDate: dayjs().add(1, 'day'), startDate: dayjs().add(2, 'day'), endDate: dayjs().add(3, 'day') } as Lecture); lectureUpdateComponent.lectureOnInit = { visibleDate: undefined, startDate: undefined, endDate: undefined } as Lecture; expect(lectureUpdateComponent.isChangeMadeToPeriodSection()).toBeTrue(); @@ -367,7 +368,8 @@ describe('LectureUpdateComponent', () => { }); describe('updateFormStatusBar', () => { - it('should update form status bar correctly in edit mode', () => { + it('should update form status bar correctly in edit mode', async () => { + await configureActiveRouteMockAndCompileComponents(); lectureUpdateComponent.isEditMode.set(true); lectureUpdateComponent.titleSection = signal({ titleChannelNameComponent: () => ({ @@ -390,7 +392,8 @@ describe('LectureUpdateComponent', () => { ]); }); - it('should update form status bar correctly in create mode', () => { + it('should update form status bar correctly in create mode', async () => { + await configureActiveRouteMockAndCompileComponents(); lectureUpdateComponent.isEditMode.set(false); lectureUpdateComponent.titleSection = signal({ titleChannelNameComponent: () => ({ @@ -409,7 +412,8 @@ describe('LectureUpdateComponent', () => { ]); }); - it('should handle invalid sections correctly', () => { + it('should handle invalid sections correctly', async () => { + await configureActiveRouteMockAndCompileComponents(); lectureUpdateComponent.isEditMode.set(true); lectureUpdateComponent.titleSection = signal({ titleChannelNameComponent: () => ({ diff --git a/src/main/webapp/app/lecture/manage/lecture/lecture.component.spec.ts b/src/main/webapp/app/lecture/manage/lecture/lecture.component.spec.ts index c51eb6cc7207..409ff99a1d5c 100644 --- a/src/main/webapp/app/lecture/manage/lecture/lecture.component.spec.ts +++ b/src/main/webapp/app/lecture/manage/lecture/lecture.component.spec.ts @@ -27,6 +27,7 @@ import { IngestionState } from 'app/lecture/shared/entities/lecture-unit/attachm import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ProfileInfo } from 'app/core/layouts/profiles/profile-info.model'; import { IrisSettingsService } from 'app/iris/manage/settings/shared/iris-settings.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('Lecture', () => { let lectureComponentFixture: ComponentFixture; @@ -104,6 +105,7 @@ describe('Lecture', () => { } as unknown as ProfileInfo; TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ LectureComponent, MockPipe(ArtemisTranslatePipe), diff --git a/src/main/webapp/app/lecture/overview/course-lectures/details/course-lecture-details.component.spec.ts b/src/main/webapp/app/lecture/overview/course-lectures/details/course-lecture-details.component.spec.ts index afd5f6d67c98..1dd853245cbc 100644 --- a/src/main/webapp/app/lecture/overview/course-lectures/details/course-lecture-details.component.spec.ts +++ b/src/main/webapp/app/lecture/overview/course-lectures/details/course-lecture-details.component.spec.ts @@ -95,7 +95,7 @@ describe('CourseLectureDetailsComponent', () => { const response = of(new HttpResponse({ body: lecture, headers, status: 200 })); await TestBed.configureTestingModule({ - imports: [MockDirective(NgbTooltip), MockDirective(NgbCollapse), MockDirective(NgbPopover)], + imports: [MockDirective(NgbTooltip), MockDirective(NgbCollapse), MockDirective(NgbPopover), FaIconComponent], declarations: [ CourseLectureDetailsComponent, MockComponent(AttachmentVideoUnitComponent), @@ -113,7 +113,6 @@ describe('CourseLectureDetailsComponent', () => { MockComponent(CourseExerciseRowComponent), MockComponent(ExerciseDetailsStudentActionsComponent), MockComponent(SidePanelComponent), - MockComponent(FaIconComponent), MockDirective(TranslateDirective), MockComponent(SubmissionResultStatusComponent), MockComponent(DiscussionSectionComponent), diff --git a/src/main/webapp/app/lecture/overview/course-lectures/lecture-row/course-lecture-row.component.spec.ts b/src/main/webapp/app/lecture/overview/course-lectures/lecture-row/course-lecture-row.component.spec.ts index dc8d8e561477..bb91dba144cf 100644 --- a/src/main/webapp/app/lecture/overview/course-lectures/lecture-row/course-lecture-row.component.spec.ts +++ b/src/main/webapp/app/lecture/overview/course-lectures/lecture-row/course-lecture-row.component.spec.ts @@ -8,7 +8,7 @@ import { ArtemisDatePipe } from 'app/shared/pipes/artemis-date.pipe'; import { ArtemisTimeAgoPipe } from 'app/shared/pipes/artemis-time-ago.pipe'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import dayjs from 'dayjs/esm'; -import { MockComponent, MockDirective, MockPipe } from 'ng-mocks'; +import { MockDirective, MockPipe } from 'ng-mocks'; import { Location } from '@angular/common'; import { Component } from '@angular/core'; import { Router, RouterModule } from '@angular/router'; @@ -35,15 +35,9 @@ describe('CourseLectureRow', () => { { path: 'courses/:courseId/lectures', component: DummyComponent }, { path: 'courses/:courseId/lectures/:lectureId', component: DummyComponent }, ]), + FaIconComponent, ], - declarations: [ - DummyComponent, - CourseLectureRowComponent, - MockPipe(ArtemisTranslatePipe), - MockPipe(ArtemisDatePipe), - MockComponent(FaIconComponent), - MockPipe(ArtemisTimeAgoPipe), - ], + declarations: [DummyComponent, CourseLectureRowComponent, MockPipe(ArtemisTranslatePipe), MockPipe(ArtemisDatePipe), MockPipe(ArtemisTimeAgoPipe)], providers: [{ provide: TranslateService, useClass: MockTranslateService }], }) .compileComponents() diff --git a/src/main/webapp/app/modeling/manage/example-modeling/example-modeling-submission.component.spec.ts b/src/main/webapp/app/modeling/manage/example-modeling/example-modeling-submission.component.spec.ts index 39a095ed0b55..229e954b1e13 100644 --- a/src/main/webapp/app/modeling/manage/example-modeling/example-modeling-submission.component.spec.ts +++ b/src/main/webapp/app/modeling/manage/example-modeling/example-modeling-submission.component.spec.ts @@ -34,6 +34,7 @@ import { MockAccountService } from 'test/helpers/mocks/service/mock-account.serv import { ThemeService } from 'app/core/theme/shared/theme.service'; import { MockThemeService } from 'test/helpers/mocks/service/mock-theme.service'; import { TutorParticipationService } from 'app/assessment/shared/assessment-dashboard/exercise-dashboard/tutor-participation.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('Example Modeling Submission Component', () => { let comp: ExampleModelingSubmissionComponent; @@ -95,7 +96,7 @@ describe('Example Modeling Submission Component', () => { } as ActivatedRoute; TestBed.configureTestingModule({ - imports: [FormsModule], + imports: [FormsModule, FaIconComponent], declarations: [ ExampleModelingSubmissionComponent, ModelingAssessmentComponent, diff --git a/src/main/webapp/app/modeling/overview/modeling-submission/modeling-submission-team.component.spec.ts b/src/main/webapp/app/modeling/overview/modeling-submission/modeling-submission-team.component.spec.ts index b8e1789e867f..cb407f587827 100644 --- a/src/main/webapp/app/modeling/overview/modeling-submission/modeling-submission-team.component.spec.ts +++ b/src/main/webapp/app/modeling/overview/modeling-submission/modeling-submission-team.component.spec.ts @@ -190,7 +190,7 @@ describe('ModelingSubmissionComponent', () => { const submitButton = debugElement.query(By.css('jhi-button')); expect(submitButton).not.toBeNull(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('false'); + expect(submitButton.componentInstance.disabled).toBeFalse(); expect(comp.isActive).toBeTrue(); }); @@ -203,7 +203,7 @@ describe('ModelingSubmissionComponent', () => { const submitButton = debugElement.query(By.css('jhi-button')); expect(submitButton).not.toBeNull(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('true'); + expect(submitButton.componentInstance.disabled).toBeTrue(); }); it('should allow to submit after the due date if the initialization date is after the due date and not submitted', () => { @@ -217,7 +217,7 @@ describe('ModelingSubmissionComponent', () => { expect(comp.isLate).toBeTrue(); const submitButton = debugElement.query(By.css('jhi-button')); expect(submitButton).not.toBeNull(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('false'); + expect(submitButton.componentInstance.disabled).toBeFalse(); submission.submitted = true; }); @@ -229,7 +229,7 @@ describe('ModelingSubmissionComponent', () => { const submitButton = debugElement.query(By.css('jhi-button')); expect(submitButton).not.toBeNull(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('true'); + expect(submitButton.componentInstance.disabled).toBeTrue(); }); it('should get inactive as soon as the due date passes the current date', () => { diff --git a/src/main/webapp/app/modeling/overview/modeling-submission/modeling-submission.component.spec.ts b/src/main/webapp/app/modeling/overview/modeling-submission/modeling-submission.component.spec.ts index da2b95d6a839..522e8101337d 100644 --- a/src/main/webapp/app/modeling/overview/modeling-submission/modeling-submission.component.spec.ts +++ b/src/main/webapp/app/modeling/overview/modeling-submission/modeling-submission.component.spec.ts @@ -214,7 +214,7 @@ describe('ModelingSubmissionComponent', () => { const submitButton = debugElement.query(By.css('jhi-button')); expect(submitButton).not.toBeNull(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('false'); + expect(submitButton.componentInstance.disabled).toBeFalse(); expect(comp.isActive).toBeTrue(); }); @@ -229,7 +229,7 @@ describe('ModelingSubmissionComponent', () => { const submitButton = debugElement.query(By.css('jhi-button')); expect(submitButton).not.toBeNull(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('true'); + expect(submitButton.componentInstance.disabled).toBeTrue(); }); it('should allow to submit after the due date if the initialization date is after the due date and not submitted', () => { @@ -245,7 +245,7 @@ describe('ModelingSubmissionComponent', () => { expect(comp.isLate).toBeTrue(); const submitButton = debugElement.query(By.css('jhi-button')); expect(submitButton).not.toBeNull(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('false'); + expect(submitButton.componentInstance.disabled).toBeFalse(); submission.submitted = true; }); @@ -259,7 +259,7 @@ describe('ModelingSubmissionComponent', () => { const submitButton = debugElement.query(By.css('jhi-button')); expect(submitButton).not.toBeNull(); - expect(submitButton.attributes['ng-reflect-disabled']).toBe('true'); + expect(submitButton.componentInstance.disabled).toBeTrue(); }); it('should get inactive as soon as the due date passes the current date', () => { diff --git a/src/main/webapp/app/plagiarism/manage/instructor-view/plagiarism-cases-instructor-view.component.spec.ts b/src/main/webapp/app/plagiarism/manage/instructor-view/plagiarism-cases-instructor-view.component.spec.ts index 164428cc4bb6..92f9a90ca80c 100644 --- a/src/main/webapp/app/plagiarism/manage/instructor-view/plagiarism-cases-instructor-view.component.spec.ts +++ b/src/main/webapp/app/plagiarism/manage/instructor-view/plagiarism-cases-instructor-view.component.spec.ts @@ -21,6 +21,7 @@ import { PlagiarismCaseVerdictComponent } from 'app/plagiarism/shared/verdict/pl import { Component, ElementRef, signal } from '@angular/core'; import { Location } from '@angular/common'; import { provideHttpClientTesting } from '@angular/common/http/testing'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; @Component({ template: '' }) class DummyComponent {} @@ -113,6 +114,7 @@ describe('Plagiarism Cases Instructor View Component', () => { component: DummyComponent, }, ]), + FaIconComponent, ], declarations: [ PlagiarismCasesInstructorViewComponent, diff --git a/src/main/webapp/app/programming/manage/assess/code-editor-tutor-assessment-inline-feedback/suggestion/code-editor-tutor-assessment-inline-feedback-suggestion.component.spec.ts b/src/main/webapp/app/programming/manage/assess/code-editor-tutor-assessment-inline-feedback/suggestion/code-editor-tutor-assessment-inline-feedback-suggestion.component.spec.ts index 819b83457fd5..dc0f865b43af 100644 --- a/src/main/webapp/app/programming/manage/assess/code-editor-tutor-assessment-inline-feedback/suggestion/code-editor-tutor-assessment-inline-feedback-suggestion.component.spec.ts +++ b/src/main/webapp/app/programming/manage/assess/code-editor-tutor-assessment-inline-feedback/suggestion/code-editor-tutor-assessment-inline-feedback-suggestion.component.spec.ts @@ -8,6 +8,7 @@ import { MockComponent } from 'ng-mocks'; import { FeedbackSuggestionBadgeComponent } from 'app/exercise/feedback/feedback-suggestion-badge/feedback-suggestion-badge.component'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('CodeEditorTutorAssessmentInlineFeedbackSuggestionComponent', () => { let component: CodeEditorTutorAssessmentInlineFeedbackSuggestionComponent; @@ -15,6 +16,7 @@ describe('CodeEditorTutorAssessmentInlineFeedbackSuggestionComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [CodeEditorTutorAssessmentInlineFeedbackSuggestionComponent, MockComponent(FeedbackSuggestionBadgeComponent)], providers: [{ provide: TranslateService, useClass: MockTranslateService }], }).compileComponents(); diff --git a/src/main/webapp/app/programming/manage/code-editor/file-browser/code-editor-file-browser.component.spec.ts b/src/main/webapp/app/programming/manage/code-editor/file-browser/code-editor-file-browser.component.spec.ts index 920efbaaa7e4..6e718caf7f90 100644 --- a/src/main/webapp/app/programming/manage/code-editor/file-browser/code-editor-file-browser.component.spec.ts +++ b/src/main/webapp/app/programming/manage/code-editor/file-browser/code-editor-file-browser.component.spec.ts @@ -19,6 +19,7 @@ import { MockTranslateService, TranslatePipeMock } from 'test/helpers/mocks/serv import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { TranslateService } from '@ngx-translate/core'; import { TreeViewItem } from 'app/programming/shared/code-editor/treeview/models/tree-view-item'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('CodeEditorFileBrowserComponent', () => { let comp: CodeEditorFileBrowserComponent; @@ -38,6 +39,7 @@ describe('CodeEditorFileBrowserComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ CodeEditorFileBrowserComponent, CodeEditorFileBrowserFileComponent, diff --git a/src/main/webapp/app/programming/manage/grading/configure/programming-exercise-configure-grading.component.spec.ts b/src/main/webapp/app/programming/manage/grading/configure/programming-exercise-configure-grading.component.spec.ts index 4d0894ddea92..8dc4762dc36d 100644 --- a/src/main/webapp/app/programming/manage/grading/configure/programming-exercise-configure-grading.component.spec.ts +++ b/src/main/webapp/app/programming/manage/grading/configure/programming-exercise-configure-grading.component.spec.ts @@ -56,6 +56,7 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { provideHttpClient } from '@angular/common/http'; import { TranslateService } from '@ngx-translate/core'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('ProgrammingExerciseConfigureGradingComponent', () => { let comp: ProgrammingExerciseConfigureGradingComponent; @@ -193,7 +194,7 @@ describe('ProgrammingExerciseConfigureGradingComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [NgxDatatableModule, MockModule(NgbTooltipModule)], + imports: [NgxDatatableModule, MockModule(NgbTooltipModule), FaIconComponent], declarations: [ ProgrammingExerciseConfigureGradingComponent, ProgrammingExerciseConfigureGradingStatusComponent, diff --git a/src/main/webapp/app/programming/manage/grading/configure/programming-exercise-configure-grading.component.ts b/src/main/webapp/app/programming/manage/grading/configure/programming-exercise-configure-grading.component.ts index 8447ad644145..5e6d94fe9160 100644 --- a/src/main/webapp/app/programming/manage/grading/configure/programming-exercise-configure-grading.component.ts +++ b/src/main/webapp/app/programming/manage/grading/configure/programming-exercise-configure-grading.component.ts @@ -31,7 +31,7 @@ import { NgbAlert, NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; import { ProgrammingExerciseGradingTasksTableComponent } from '../tasks/programming-exercise-grading-tasks-table/programming-exercise-grading-tasks-table.component'; import { TestCaseDistributionChartComponent } from '../charts/test-case-distribution-chart.component'; import { ProgrammingExerciseGradingTableActionsComponent } from '../table-actions/programming-exercise-grading-table-actions.component'; -import { NgxDatatableModule } from '@siemens/ngx-datatable'; +import { NgxDatatableModule, SortPropDir } from '@siemens/ngx-datatable'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { FormsModule } from '@angular/forms'; import { TableEditableFieldComponent } from 'app/shared/table/editable-field/table-editable-field.component'; @@ -635,7 +635,10 @@ export class ProgrammingExerciseConfigureGradingComponent implements OnInit, OnD return this.gradingStatistics?.categoryIssuesMap ? this.gradingStatistics.categoryIssuesMap[categoryName] : undefined; } - tableSorts = { testCases: [{ prop: 'testName', dir: 'asc' }], codeAnalysis: [{ prop: 'name', dir: 'asc' }] }; + tableSorts: Record = { + testCases: [{ prop: 'testName', dir: 'asc' }], + codeAnalysis: [{ prop: 'name', dir: 'asc' }], + }; onSort(table: Table, config: any) { this.tableSorts[table] = config.sorts; } diff --git a/src/main/webapp/app/programming/manage/instructions-editor/programming-exercise-editable-instruction.component.spec.ts b/src/main/webapp/app/programming/manage/instructions-editor/programming-exercise-editable-instruction.component.spec.ts index 0f88629aad18..22157d0185bd 100644 --- a/src/main/webapp/app/programming/manage/instructions-editor/programming-exercise-editable-instruction.component.spec.ts +++ b/src/main/webapp/app/programming/manage/instructions-editor/programming-exercise-editable-instruction.component.spec.ts @@ -33,6 +33,7 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from 'test/helpers/mocks/service/mock-account.service'; import { ProfileInfo } from 'app/core/layouts/profiles/profile-info.model'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { ConsistencyCheckAction } from 'app/shared/monaco-editor/model/actions/artemis-intelligence/consistency-check.action'; import { RewriteAction } from 'app/shared/monaco-editor/model/actions/artemis-intelligence/rewrite.action'; @@ -73,7 +74,7 @@ describe('ProgrammingExerciseEditableInstructionComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [MockDirective(NgbTooltip)], + imports: [MockDirective(NgbTooltip), FaIconComponent], declarations: [ ProgrammingExerciseEditableInstructionComponent, MockComponent(ProgrammingExerciseInstructionAnalysisComponent), diff --git a/src/main/webapp/app/programming/shared/code-editor/monaco/code-editor-monaco.component.spec.ts b/src/main/webapp/app/programming/shared/code-editor/monaco/code-editor-monaco.component.spec.ts index 49afa56efefb..552137b0de79 100644 --- a/src/main/webapp/app/programming/shared/code-editor/monaco/code-editor-monaco.component.spec.ts +++ b/src/main/webapp/app/programming/shared/code-editor/monaco/code-editor-monaco.component.spec.ts @@ -317,7 +317,6 @@ describe('CodeEditorMonacoComponent', () => { fixture.componentRef.setInput('isTutorAssessment', true); fixture.componentRef.setInput('selectedFile', 'file1.java'); fixture.componentRef.setInput('feedbacks', exampleFeedbacks); - TestBed.flushEffects(); fixture.detectChanges(); // Use .then() here instead of await so fakeAsync does not break. comp.ngOnChanges({ selectedFile: new SimpleChange(undefined, 'file1', false) }).then(() => { @@ -374,7 +373,6 @@ describe('CodeEditorMonacoComponent', () => { comp.onUpdateFeedback.subscribe(updateFeedbackCallbackStub); // Copy the original example feedback in to ensure changes here do not affect the component. fixture.componentRef.setInput('feedbacks', [...exampleFeedbacks]); - TestBed.flushEffects(); fixture.detectChanges(); feedbackToUpdate.text = 'some other text'; comp.updateFeedback(feedbackToUpdate); @@ -391,7 +389,6 @@ describe('CodeEditorMonacoComponent', () => { comp.onUpdateFeedback.subscribe(updateFeedbackCallbackStub); comp.newFeedbackLines.set([newFeedbackLine]); fixture.componentRef.setInput('feedbacks', [...remainingFeedbacks]); - TestBed.flushEffects(); fixture.detectChanges(); comp.updateFeedback(feedbackToSave); const expectedFeedbacks = [...remainingFeedbacks, feedbackToSave]; @@ -406,7 +403,6 @@ describe('CodeEditorMonacoComponent', () => { const acceptSuggestionCallbackStub = jest.fn(); const suggestionToAccept: Feedback = exampleFeedbacks[0]; fixture.componentRef.setInput('feedbackSuggestions', [suggestionToAccept]); - TestBed.flushEffects(); comp.onAcceptSuggestion.subscribe(acceptSuggestionCallbackStub); fixture.detectChanges(); comp.acceptSuggestion(suggestionToAccept); @@ -419,7 +415,6 @@ describe('CodeEditorMonacoComponent', () => { const discardSuggestionCallbackStub = jest.fn(); const suggestionToDiscard = exampleFeedbacks[0]; fixture.componentRef.setInput('feedbackSuggestions', [suggestionToDiscard]); - TestBed.flushEffects(); comp.onDiscardSuggestion.subscribe(discardSuggestionCallbackStub); fixture.detectChanges(); comp.discardSuggestion(suggestionToDiscard); diff --git a/src/main/webapp/app/quiz/manage/re-evaluate/multiple-choice-question/re-evaluate-multiple-choice-question.component.spec.ts b/src/main/webapp/app/quiz/manage/re-evaluate/multiple-choice-question/re-evaluate-multiple-choice-question.component.spec.ts index 3ba6e46bd592..7ce55e00839e 100644 --- a/src/main/webapp/app/quiz/manage/re-evaluate/multiple-choice-question/re-evaluate-multiple-choice-question.component.spec.ts +++ b/src/main/webapp/app/quiz/manage/re-evaluate/multiple-choice-question/re-evaluate-multiple-choice-question.component.spec.ts @@ -4,6 +4,7 @@ import { MockBuilder, MockProvider } from 'ng-mocks'; import { ReEvaluateMultipleChoiceQuestionComponent } from 'app/quiz/manage/re-evaluate/multiple-choice-question/re-evaluate-multiple-choice-question.component'; import { MultipleChoiceQuestion } from 'app/quiz/shared/entities/multiple-choice-question.model'; import { AnswerOption } from 'app/quiz/shared/entities/answer-option.model'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('ReEvaluateMultipleChoiceQuestionComponent', () => { let fixture: ComponentFixture; @@ -13,7 +14,7 @@ describe('ReEvaluateMultipleChoiceQuestionComponent', () => { const answerBackup = { id: 1, text: 'backup' } as AnswerOption; beforeEach(async () => { - await MockBuilder(ReEvaluateMultipleChoiceQuestionComponent).provide(MockProvider(TranslateService)); + await MockBuilder(ReEvaluateMultipleChoiceQuestionComponent).keep(FaIconComponent).provide(MockProvider(TranslateService)); fixture = TestBed.createComponent(ReEvaluateMultipleChoiceQuestionComponent); component = fixture.componentInstance; diff --git a/src/main/webapp/app/quiz/manage/short-answer-question/short-answer-question-edit.component.spec.ts b/src/main/webapp/app/quiz/manage/short-answer-question/short-answer-question-edit.component.spec.ts index 6f11cd97d482..4238bc875d82 100644 --- a/src/main/webapp/app/quiz/manage/short-answer-question/short-answer-question-edit.component.spec.ts +++ b/src/main/webapp/app/quiz/manage/short-answer-question/short-answer-question-edit.component.spec.ts @@ -24,6 +24,7 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { provideHttpClient } from '@angular/common/http'; import { ThemeService } from 'app/core/theme/shared/theme.service'; import { MockThemeService } from 'src/test/javascript/spec/helpers/mocks/service/mock-theme.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; const question = new ShortAnswerQuestion(); question.id = 1; @@ -55,7 +56,7 @@ describe('ShortAnswerQuestionEditComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockModule(FormsModule), MockModule(DragDropModule), MockDirective(NgbCollapse)], + imports: [MockModule(FormsModule), MockModule(DragDropModule), MockDirective(NgbCollapse), FaIconComponent], declarations: [ ShortAnswerQuestionEditComponent, MockPipe(ArtemisTranslatePipe), diff --git a/src/main/webapp/app/quiz/overview/participation/quiz-participation.component.spec.ts b/src/main/webapp/app/quiz/overview/participation/quiz-participation.component.spec.ts index 81ce24af720c..ad4f81ba81a3 100644 --- a/src/main/webapp/app/quiz/overview/participation/quiz-participation.component.spec.ts +++ b/src/main/webapp/app/quiz/overview/participation/quiz-participation.component.spec.ts @@ -36,6 +36,7 @@ import { ShortAnswerQuestionComponent } from '../../shared/questions/short-answe import { DragAndDropQuestionComponent } from '../../shared/questions/drag-and-drop-question/drag-and-drop-question.component'; import { MultipleChoiceQuestionComponent } from '../../shared/questions/multiple-choice-question/multiple-choice-question.component'; import { ShortAnswerQuestion } from '../../shared/entities/short-answer-question.model'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; const now = dayjs(); const question1: QuizQuestion = { @@ -145,6 +146,7 @@ describe('QuizParticipationComponent', () => { describe('live mode', () => { beforeEach(waitForAsync(() => { MockBuilder(QuizParticipationComponent) + .keep(FaIconComponent) .keep(MultipleChoiceQuestionComponent) .keep(DragAndDropQuestionComponent) .keep(ShortAnswerQuestionComponent) @@ -518,6 +520,7 @@ describe('QuizParticipationComponent', () => { describe('preview mode', () => { beforeEach(() => { MockBuilder(QuizParticipationComponent) + .keep(FaIconComponent) .keep(MultipleChoiceQuestionComponent) .keep(DragAndDropQuestionComponent) .keep(ShortAnswerQuestionComponent) @@ -599,6 +602,7 @@ describe('QuizParticipationComponent', () => { describe('practice mode', () => { beforeEach(() => { MockBuilder(QuizParticipationComponent) + .keep(FaIconComponent) .keep(MultipleChoiceQuestionComponent) .keep(DragAndDropQuestionComponent) .keep(ShortAnswerQuestionComponent) @@ -686,6 +690,7 @@ describe('QuizParticipationComponent', () => { describe('solution mode', () => { beforeEach(() => { MockBuilder(QuizParticipationComponent) + .keep(FaIconComponent) .keep(MultipleChoiceQuestionComponent) .keep(DragAndDropQuestionComponent) .keep(ShortAnswerQuestionComponent) diff --git a/src/main/webapp/app/quiz/shared/questions/multiple-choice-question/visual-question/multiple-choice-visual-question.component.spec.ts b/src/main/webapp/app/quiz/shared/questions/multiple-choice-question/visual-question/multiple-choice-visual-question.component.spec.ts index 010a617858b3..82cc6768429f 100644 --- a/src/main/webapp/app/quiz/shared/questions/multiple-choice-question/visual-question/multiple-choice-visual-question.component.spec.ts +++ b/src/main/webapp/app/quiz/shared/questions/multiple-choice-question/visual-question/multiple-choice-visual-question.component.spec.ts @@ -5,7 +5,7 @@ import { CourseManagementService } from 'app/core/course/manage/services/course- import { of } from 'rxjs'; import { MockRouter } from 'test/helpers/mocks/mock-router'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; -import { MockComponent, MockModule, MockPipe, MockProvider } from 'ng-mocks'; +import { MockModule, MockPipe, MockProvider } from 'ng-mocks'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { ArtemisNavigationUtilService } from 'app/shared/util/navigation.utils'; import { MultipleChoiceVisualQuestionComponent } from 'app/quiz/shared/questions/multiple-choice-question/visual-question/multiple-choice-visual-question.component'; @@ -20,7 +20,7 @@ describe('QuizVisualEditorComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MultipleChoiceVisualQuestionComponent, MockModule(NgbTooltipModule), MockComponent(FaIconComponent)], + imports: [MultipleChoiceVisualQuestionComponent, MockModule(NgbTooltipModule), FaIconComponent], declarations: [MockPipe(ArtemisTranslatePipe)], providers: [ MockProvider(ArtemisNavigationUtilService), diff --git a/src/main/webapp/app/shared/components/buttons/course-exam-archive-button/course-exam-archive-button.component.spec.ts b/src/main/webapp/app/shared/components/buttons/course-exam-archive-button/course-exam-archive-button.component.spec.ts index 68aa7286b6cd..d372b929848c 100644 --- a/src/main/webapp/app/shared/components/buttons/course-exam-archive-button/course-exam-archive-button.component.spec.ts +++ b/src/main/webapp/app/shared/components/buttons/course-exam-archive-button/course-exam-archive-button.component.spec.ts @@ -16,12 +16,11 @@ import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { MockRouterLinkDirective } from 'test/helpers/mocks/directive/mock-router-link.directive'; import { DeleteButtonDirective } from 'app/shared/delete-dialog/directive/delete-button.directive'; import { ArtemisDatePipe } from 'app/shared/pipes/artemis-date.pipe'; -import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { CourseExamArchiveButtonComponent, CourseExamArchiveState } from 'app/shared/components/buttons/course-exam-archive-button/course-exam-archive-button.component'; import { Exam } from 'app/exam/shared/entities/exam.model'; import { ExamManagementService } from 'app/exam/manage/services/exam-management.service'; import { AccountService } from 'app/core/auth/account.service'; -import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'; import { TranslateDirective } from 'app/shared/language/translate.directive'; import { AlertService } from 'app/shared/service/alert.service'; import { provideHttpClientTesting } from '@angular/common/http/testing'; diff --git a/src/main/webapp/app/shared/components/buttons/documentation-button/documentation-button.component.spec.ts b/src/main/webapp/app/shared/components/buttons/documentation-button/documentation-button.component.spec.ts index 63e91463987d..282894e21fc9 100644 --- a/src/main/webapp/app/shared/components/buttons/documentation-button/documentation-button.component.spec.ts +++ b/src/main/webapp/app/shared/components/buttons/documentation-button/documentation-button.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { DocumentationButtonComponent } from 'app/shared/components/buttons/documentation-button/documentation-button.component'; -import { MockComponent, MockDirective, MockPipe, MockProvider } from 'ng-mocks'; +import { MockDirective, MockPipe, MockProvider } from 'ng-mocks'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; @@ -13,8 +13,8 @@ describe('DocumentationButtonComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockDirective(NgbTooltip)], - declarations: [DocumentationButtonComponent, MockPipe(ArtemisTranslatePipe), MockComponent(FaIconComponent)], + imports: [MockDirective(NgbTooltip), FaIconComponent], + declarations: [DocumentationButtonComponent, MockPipe(ArtemisTranslatePipe)], providers: [MockProvider(TranslateService)], }) .compileComponents() diff --git a/src/main/webapp/app/shared/delete-dialog/directive/delete-button.directive.spec.ts b/src/main/webapp/app/shared/delete-dialog/directive/delete-button.directive.spec.ts index 7b0219a5380c..33dd1e7b85ad 100644 --- a/src/main/webapp/app/shared/delete-dialog/directive/delete-button.directive.spec.ts +++ b/src/main/webapp/app/shared/delete-dialog/directive/delete-button.directive.spec.ts @@ -25,13 +25,20 @@ describe('DeleteDialogDirective', () => { let translateService: TranslateService; let translateSpy: jest.SpyInstance; + const mockNgbModal = { + open: jest.fn().mockReturnValue({ + result: Promise.resolve(), // or whatever you expect + componentInstance: {}, + }), + }; + beforeEach(() => TestBed.configureTestingModule({ imports: [TestComponent], providers: [ { provide: TranslateService, useClass: MockTranslateService }, // if we don't provide the NgbModal, the dialogError subscriptions are undefined. - { provide: NgbModal, useValue: null }, + { provide: NgbModal, useValue: mockNgbModal }, ], }) .compileComponents() diff --git a/src/main/webapp/app/shared/exercise-filter/exercise-filter-modal.component.spec.ts b/src/main/webapp/app/shared/exercise-filter/exercise-filter-modal.component.spec.ts index 5df9a9032ccf..a4c0162c0277 100644 --- a/src/main/webapp/app/shared/exercise-filter/exercise-filter-modal.component.spec.ts +++ b/src/main/webapp/app/shared/exercise-filter/exercise-filter-modal.component.spec.ts @@ -15,6 +15,7 @@ import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate. import { TranslateService } from '@ngx-translate/core'; import { SidebarCardElement } from 'app/shared/types/sidebar'; import { CustomExerciseCategoryBadgeComponent } from 'app/exercise/exercise-categories/custom-exercise-category-badge/custom-exercise-category-badge.component'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; const EXERCISE_1 = { categories: [new ExerciseCategory('category1', undefined), new ExerciseCategory('category2', '#1b97ca')], maxPoints: 5, type: ExerciseType.TEXT } as Exercise; const EXERCISE_2 = { @@ -76,7 +77,7 @@ describe('ExerciseFilterModalComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockModule(FormsModule), MockModule(ReactiveFormsModule), MockModule(FontAwesomeModule)], + imports: [MockModule(FormsModule), MockModule(ReactiveFormsModule), MockModule(FontAwesomeModule), FaIconComponent], declarations: [ExerciseFilterModalComponent, MockComponent(CustomExerciseCategoryBadgeComponent), MockComponent(RangeSliderComponent)], providers: [ MockProvider(NgbActiveModal), diff --git a/src/main/webapp/app/shared/export/modal/export-modal.component.spec.ts b/src/main/webapp/app/shared/export/modal/export-modal.component.spec.ts index 19e8fdb2661b..2715bc40649a 100644 --- a/src/main/webapp/app/shared/export/modal/export-modal.component.spec.ts +++ b/src/main/webapp/app/shared/export/modal/export-modal.component.spec.ts @@ -3,7 +3,7 @@ import { NgbActiveModal, NgbNavModule } from '@ng-bootstrap/ng-bootstrap'; import { TranslateService } from '@ngx-translate/core'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; -import { MockComponent, MockDirective, MockPipe, MockProvider } from 'ng-mocks'; +import { MockDirective, MockPipe, MockProvider } from 'ng-mocks'; import { CsvDecimalSeparator, CsvExportOptions, CsvFieldSeparator, CsvQuoteStrings, ExportModalComponent } from 'app/shared/export/modal/export-modal.component'; import { TranslateDirective } from 'app/shared/language/translate.directive'; import { By } from '@angular/platform-browser'; @@ -16,8 +16,8 @@ describe('ExportModalComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [NgbNavModule], - declarations: [ExportModalComponent, MockPipe(ArtemisTranslatePipe), MockComponent(FaIconComponent), MockDirective(TranslateDirective)], + imports: [NgbNavModule, FaIconComponent], + declarations: [ExportModalComponent, MockPipe(ArtemisTranslatePipe), MockDirective(TranslateDirective)], providers: [MockProvider(NgbActiveModal), MockProvider(TranslateService)], }) .compileComponents() diff --git a/src/main/webapp/app/shared/import/import.component.ts b/src/main/webapp/app/shared/import/import.component.ts index 219710b3e32f..ac2ed23d41a9 100644 --- a/src/main/webapp/app/shared/import/import.component.ts +++ b/src/main/webapp/app/shared/import/import.component.ts @@ -50,6 +50,7 @@ export abstract class ImportComponent implements OnInit { protected readonly search = new Subject(); protected readonly sort = new Subject(); + // eslint-disable-next-line @angular-eslint/prefer-inject protected constructor(protected pagingService?: PagingService) {} get page(): number { diff --git a/src/main/webapp/app/shared/monaco-editor/service/monaco-editor.service.spec.ts b/src/main/webapp/app/shared/monaco-editor/service/monaco-editor.service.spec.ts index 3501d9fcd43d..96b562a57560 100644 --- a/src/main/webapp/app/shared/monaco-editor/service/monaco-editor.service.spec.ts +++ b/src/main/webapp/app/shared/monaco-editor/service/monaco-editor.service.spec.ts @@ -40,17 +40,17 @@ describe('MonacoEditorService', () => { }); it('should correctly handle themes', () => { - TestBed.flushEffects(); + TestBed.tick(); // Initialization: The editor should be in light mode since that is what we initialized the themeSubject with expect(setThemeSpy).toHaveBeenCalledExactlyOnceWith(MONACO_LIGHT_THEME_DEFINITION.id); // Switch to dark theme themeService.applyThemePreference(Theme.DARK); - TestBed.flushEffects(); + TestBed.tick(); expect(setThemeSpy).toHaveBeenCalledTimes(2); expect(setThemeSpy).toHaveBeenNthCalledWith(2, MONACO_DARK_THEME_DEFINITION.id); // Switch back to light theme themeService.applyThemePreference(Theme.LIGHT); - TestBed.flushEffects(); + TestBed.tick(); expect(setThemeSpy).toHaveBeenCalledTimes(3); expect(setThemeSpy).toHaveBeenNthCalledWith(3, MONACO_LIGHT_THEME_DEFINITION.id); }); diff --git a/src/main/webapp/app/shared/pipes/artemis-translate.pipe.ts b/src/main/webapp/app/shared/pipes/artemis-translate.pipe.ts index 860beabb0d97..185bbdd7a00e 100644 --- a/src/main/webapp/app/shared/pipes/artemis-translate.pipe.ts +++ b/src/main/webapp/app/shared/pipes/artemis-translate.pipe.ts @@ -20,6 +20,7 @@ export class ArtemisTranslatePipe implements PipeTransform, OnDestroy { * this exception should be okay. */ // NOTE: we cannot use inject() here because of a limitation as this pipe is a wrapper + // eslint-disable-next-line @angular-eslint/prefer-inject constructor(translateService: TranslateService, changeDetectorRef: ChangeDetectorRef) { this.translatePipe = new TranslatePipe(translateService, changeDetectorRef); } diff --git a/src/main/webapp/app/shared/search-filter/search-filter.component.spec.ts b/src/main/webapp/app/shared/search-filter/search-filter.component.spec.ts index ec687c3b2880..25ca9b151039 100644 --- a/src/main/webapp/app/shared/search-filter/search-filter.component.spec.ts +++ b/src/main/webapp/app/shared/search-filter/search-filter.component.spec.ts @@ -6,6 +6,7 @@ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; import { By } from '@angular/platform-browser'; import { MockTranslateService } from 'test/helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('SearchFilterComponent', () => { let component: SearchFilterComponent; @@ -13,7 +14,7 @@ describe('SearchFilterComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockModule(ReactiveFormsModule), MockModule(FormsModule), MockModule(FontAwesomeModule)], + imports: [MockModule(ReactiveFormsModule), MockModule(FormsModule), MockModule(FontAwesomeModule), FaIconComponent], declarations: [SearchFilterComponent], providers: [{ provide: TranslateService, useClass: MockTranslateService }], }).compileComponents(); diff --git a/src/main/webapp/app/shared/sidebar/sidebar-accordion/sidebar-accordion.component.spec.ts b/src/main/webapp/app/shared/sidebar/sidebar-accordion/sidebar-accordion.component.spec.ts index 45f978db3c80..5b9b8d735cf5 100644 --- a/src/main/webapp/app/shared/sidebar/sidebar-accordion/sidebar-accordion.component.spec.ts +++ b/src/main/webapp/app/shared/sidebar/sidebar-accordion/sidebar-accordion.component.spec.ts @@ -15,6 +15,7 @@ import { By } from '@angular/platform-browser'; import { MockActivatedRoute } from 'test/helpers/mocks/activated-route/mock-activated-route'; import { MetisConversationService } from 'app/communication/service/metis-conversation.service'; import { MockMetisConversationService } from 'test/helpers/mocks/service/mock-metis-conversation.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('SidebarAccordionComponent', () => { let component: SidebarAccordionComponent; @@ -22,7 +23,7 @@ describe('SidebarAccordionComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockModule(NgbTooltipModule), MockModule(NgbCollapseModule), MockModule(RouterModule)], + imports: [MockModule(NgbTooltipModule), MockModule(NgbCollapseModule), MockModule(RouterModule), FaIconComponent], declarations: [ SidebarAccordionComponent, SidebarCardMediumComponent, diff --git a/src/main/webapp/app/shared/sidebar/sidebar.component.spec.ts b/src/main/webapp/app/shared/sidebar/sidebar.component.spec.ts index 3f6740972932..dd777275b55f 100644 --- a/src/main/webapp/app/shared/sidebar/sidebar.component.spec.ts +++ b/src/main/webapp/app/shared/sidebar/sidebar.component.spec.ts @@ -25,6 +25,7 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service'; import { MockProfileService } from 'test/helpers/mocks/service/mock-profile.service'; import { SidebarCardElement, SidebarData } from 'app/shared/types/sidebar'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('SidebarComponent', () => { let component: SidebarComponent; @@ -39,6 +40,7 @@ describe('SidebarComponent', () => { MockModule(RouterModule), MockDirective(TranslateDirective), MockComponent(ExerciseFilterModalComponent), + FaIconComponent, ], declarations: [ SidebarComponent, @@ -98,11 +100,10 @@ describe('SidebarComponent', () => { ungroupedData: [] as SidebarCardElement[], }; - const noDataMessageElement = fixture.debugElement.query(By.css('.scrollable-item-content')).nativeElement; - + const noDataMessageElement = fixture.debugElement.query(By.css('.scrollable-item-content')); expect(noDataMessageElement).toBeTruthy(); - // unfortunately the translation key is cut off in debug mode that seems to be used for testing - expect(noDataMessageElement.getAttribute('ng-reflect-jhi-translate')).toBe('artemisApp.courseOverview.gene'); + const directiveInstance = noDataMessageElement.injector.get(TranslateDirective); + expect(directiveInstance.jhiTranslate).toBe('artemisApp.courseOverview.general.noDataFound'); }); it('should give the correct size for exercises', () => { diff --git a/src/main/webapp/app/shared/sort/directive/sort-by.directive.spec.ts b/src/main/webapp/app/shared/sort/directive/sort-by.directive.spec.ts index 469290915287..02fb547cfb72 100644 --- a/src/main/webapp/app/shared/sort/directive/sort-by.directive.spec.ts +++ b/src/main/webapp/app/shared/sort/directive/sort-by.directive.spec.ts @@ -56,7 +56,7 @@ describe('Directive: SortByDirective', () => { // THEN expect(sortByDirective.jhiSortBy).toBe('name'); expect(component.predicate).toBe('_score'); - expect(sortByDirective.iconComponent?.icon).toBe(faSort); + expect(sortByDirective.iconComponent?.icon()).toBe(faSort); expect(component.transition).not.toHaveBeenCalled(); }); @@ -71,7 +71,7 @@ describe('Directive: SortByDirective', () => { // THEN expect(sortByDirective.jhiSortBy).toBe('name'); expect(component.predicate).toBe('id'); - expect(sortByDirective.iconComponent?.icon).toBe(faSort); + expect(sortByDirective.iconComponent?.icon()).toBe(faSort); expect(component.transition).not.toHaveBeenCalled(); }); @@ -88,7 +88,7 @@ describe('Directive: SortByDirective', () => { expect(sortByDirective.jhiSortBy).toBe('name'); expect(component.predicate).toBe('name'); expect(component.ascending).toBeTrue(); - expect(sortByDirective.iconComponent?.icon).toBe(faSortUp); + expect(sortByDirective.iconComponent?.icon()).toBe(faSortUp); expect(component.transition).not.toHaveBeenCalled(); }); @@ -107,7 +107,7 @@ describe('Directive: SortByDirective', () => { expect(sortByDirective.jhiSortBy).toBe('name'); expect(component.predicate).toBe('name'); expect(component.ascending).toBeTrue(); - expect(sortByDirective.iconComponent?.icon).toBe(faSortUp); + expect(sortByDirective.iconComponent?.icon()).toBe(faSortUp); expect(component.transition).toHaveBeenCalledOnce(); }); @@ -125,7 +125,7 @@ describe('Directive: SortByDirective', () => { // THEN expect(component.predicate).toBe('name'); expect(component.ascending).toBeFalse(); - expect(sortByDirective.iconComponent?.icon).toBe(faSortDown); + expect(sortByDirective.iconComponent?.icon()).toBe(faSortDown); expect(component.transition).toHaveBeenCalledOnce(); }); @@ -148,7 +148,7 @@ describe('Directive: SortByDirective', () => { // THEN expect(component.predicate).toBe('name'); expect(component.ascending).toBeTrue(); - expect(sortByDirective.iconComponent?.icon).toBe(faSortUp); + expect(sortByDirective.iconComponent?.icon()).toBe(faSortUp); expect(component.transition).toHaveBeenCalledTimes(2); }); }); diff --git a/src/main/webapp/app/shared/sort/directive/sort-by.directive.ts b/src/main/webapp/app/shared/sort/directive/sort-by.directive.ts index 0b92cf9af226..70fc7ab1c59e 100644 --- a/src/main/webapp/app/shared/sort/directive/sort-by.directive.ts +++ b/src/main/webapp/app/shared/sort/directive/sort-by.directive.ts @@ -50,8 +50,7 @@ export class SortByDirective implements AfterContentInit, OnDestroy { if (this.sort.predicate === this.jhiSortBy) { icon = this.sort.ascending ? this.sortAscIcon : this.sortDescIcon; } - this.iconComponent.icon = icon; - this.iconComponent.render(); + this.iconComponent.icon.set(icon); } } } diff --git a/src/main/webapp/app/shared/user-import/dialog/user-import-dialog.component.spec.ts b/src/main/webapp/app/shared/user-import/dialog/user-import-dialog.component.spec.ts index f0bc409f7c12..757ebd701448 100644 --- a/src/main/webapp/app/shared/user-import/dialog/user-import-dialog.component.spec.ts +++ b/src/main/webapp/app/shared/user-import/dialog/user-import-dialog.component.spec.ts @@ -34,14 +34,8 @@ describe('UsersImportDialogComponent', () => { const testDir = path.join(process.cwd(), 'src', 'test', 'javascript', 'spec', 'helpers', 'sample', 'user-import'); beforeEach(() => { return TestBed.configureTestingModule({ - imports: [FormsModule], - declarations: [ - UsersImportDialogComponent, - MockDirective(TranslateDirective), - MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), - MockComponent(HelpIconComponent), - ], + imports: [FormsModule, FaIconComponent], + declarations: [UsersImportDialogComponent, MockDirective(TranslateDirective), MockPipe(ArtemisTranslatePipe), MockComponent(HelpIconComponent)], providers: [ MockProvider(NgbActiveModal), MockProvider(AlertService), diff --git a/src/main/webapp/app/text/manage/assess/submission-assessment/text-submission-assessment.component.spec.ts b/src/main/webapp/app/text/manage/assess/submission-assessment/text-submission-assessment.component.spec.ts index 003e26f20f13..b845fae3ffb9 100644 --- a/src/main/webapp/app/text/manage/assess/submission-assessment/text-submission-assessment.component.spec.ts +++ b/src/main/webapp/app/text/manage/assess/submission-assessment/text-submission-assessment.component.spec.ts @@ -48,6 +48,7 @@ import { TranslateDirective } from 'app/shared/language/translate.directive'; import { provideHttpClientTesting } from '@angular/common/http/testing'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from 'test/helpers/mocks/service/mock-account.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('TextSubmissionAssessmentComponent', () => { let component: TextSubmissionAssessmentComponent; @@ -147,6 +148,7 @@ describe('TextSubmissionAssessmentComponent', () => { } as unknown as ActivatedRoute; TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ TextSubmissionAssessmentComponent, TextAssessmentAreaComponent, diff --git a/src/main/webapp/app/text/manage/assess/textblock-assessment-card/text-block-assessment-card.component.spec.ts b/src/main/webapp/app/text/manage/assess/textblock-assessment-card/text-block-assessment-card.component.spec.ts index 957b1a69c1ec..967f2bf4f538 100644 --- a/src/main/webapp/app/text/manage/assess/textblock-assessment-card/text-block-assessment-card.component.spec.ts +++ b/src/main/webapp/app/text/manage/assess/textblock-assessment-card/text-block-assessment-card.component.spec.ts @@ -22,6 +22,7 @@ import { MockActivatedRoute } from 'test/helpers/mocks/activated-route/mock-acti import { TranslateService } from '@ngx-translate/core'; import { ActivatedRoute } from '@angular/router'; import { AssessmentCorrectionRoundBadgeComponent } from 'app/assessment/manage/unreferenced-feedback-detail/assessment-correction-round-badge/assessment-correction-round-badge.component'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('TextblockAssessmentCardComponent', () => { let component: TextBlockAssessmentCardComponent; @@ -29,7 +30,7 @@ describe('TextblockAssessmentCardComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [MockDirective(NgbTooltip)], + imports: [MockDirective(NgbTooltip), FaIconComponent], declarations: [ TextBlockAssessmentCardComponent, TextBlockFeedbackEditorComponent, diff --git a/src/main/webapp/app/text/manage/assess/textblock-feedback-editor/text-block-feedback-editor.component.html b/src/main/webapp/app/text/manage/assess/textblock-feedback-editor/text-block-feedback-editor.component.html index eca9b750c594..74144cf629de 100644 --- a/src/main/webapp/app/text/manage/assess/textblock-feedback-editor/text-block-feedback-editor.component.html +++ b/src/main/webapp/app/text/manage/assess/textblock-feedback-editor/text-block-feedback-editor.component.html @@ -5,7 +5,7 @@ @if (!readOnly) {
@if (canDismiss) { - + } @else { }
diff --git a/src/main/webapp/app/text/manage/assess/textblock-feedback-editor/textblock-feedback-editor.component.spec.ts b/src/main/webapp/app/text/manage/assess/textblock-feedback-editor/textblock-feedback-editor.component.spec.ts index 55074490a966..400a0c4c9def 100644 --- a/src/main/webapp/app/text/manage/assess/textblock-feedback-editor/textblock-feedback-editor.component.spec.ts +++ b/src/main/webapp/app/text/manage/assess/textblock-feedback-editor/textblock-feedback-editor.component.spec.ts @@ -25,6 +25,7 @@ import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service import { MockProfileService } from 'test/helpers/mocks/service/mock-profile.service'; import { provideHttpClient } from '@angular/common/http'; import { AssessmentCorrectionRoundBadgeComponent } from 'app/assessment/manage/unreferenced-feedback-detail/assessment-correction-round-badge/assessment-correction-round-badge.component'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('TextBlockFeedbackEditorComponent', () => { let component: TextBlockFeedbackEditorComponent; @@ -35,7 +36,7 @@ describe('TextBlockFeedbackEditorComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [TranslateModule.forRoot(), MockDirective(NgbTooltip)], + imports: [TranslateModule.forRoot(), MockDirective(NgbTooltip), FaIconComponent], declarations: [ TextBlockFeedbackEditorComponent, AssessmentCorrectionRoundBadgeComponent, @@ -81,37 +82,37 @@ describe('TextBlockFeedbackEditorComponent', () => { }); it('should show delete button for empty feedback only', () => { - let button = compiled.querySelector('.close fa-icon[ng-reflect-icon="[object Object]"]'); - let confirm = compiled.querySelector('.close jhi-confirm-icon'); + let button = compiled.querySelector('#dismiss-icon'); + let confirm = compiled.querySelector('#confirm-icon'); expect(button).toBeTruthy(); expect(confirm).toBeFalsy(); component.feedback.credits = 1; fixture.detectChanges(); - button = compiled.querySelector('.close fa-icon[ng-reflect-icon="[object Object]"]'); - confirm = compiled.querySelector('.close jhi-confirm-icon'); + button = compiled.querySelector('#dismiss-icon'); + confirm = compiled.querySelector('#confirm-icon'); expect(button).toBeFalsy(); expect(confirm).toBeTruthy(); component.feedback.detailText = 'Lorem Ipsum'; fixture.detectChanges(); - button = compiled.querySelector('.close fa-icon[ng-reflect-icon="[object Object]"]'); - confirm = compiled.querySelector('.close jhi-confirm-icon'); + button = compiled.querySelector('#dismiss-icon'); + confirm = compiled.querySelector('#confirm-icon'); expect(button).toBeFalsy(); expect(confirm).toBeTruthy(); component.feedback.credits = 0; fixture.detectChanges(); - button = compiled.querySelector('.close fa-icon[ng-reflect-icon="[object Object]"]'); - confirm = compiled.querySelector('.close jhi-confirm-icon'); + button = compiled.querySelector('#dismiss-icon'); + confirm = compiled.querySelector('#confirm-icon'); expect(button).toBeFalsy(); expect(confirm).toBeTruthy(); component.feedback.detailText = ''; fixture.detectChanges(); - button = compiled.querySelector('.close fa-icon[ng-reflect-icon="[object Object]"]'); - confirm = compiled.querySelector('.close jhi-confirm-icon'); + button = compiled.querySelector('#dismiss-icon'); + confirm = compiled.querySelector('#confirm-icon'); expect(button).toBeTruthy(); expect(confirm).toBeFalsy(); }); diff --git a/src/main/webapp/app/text/manage/example-text-submission/example-text-submission.component.spec.ts b/src/main/webapp/app/text/manage/example-text-submission/example-text-submission.component.spec.ts index 171cb57f6749..7cf1ed8bcdae 100644 --- a/src/main/webapp/app/text/manage/example-text-submission/example-text-submission.component.spec.ts +++ b/src/main/webapp/app/text/manage/example-text-submission/example-text-submission.component.spec.ts @@ -37,6 +37,7 @@ import { MockAccountService } from 'test/helpers/mocks/service/mock-account.serv import { MockRouter } from 'test/helpers/mocks/mock-router'; import { TutorParticipationService } from 'app/assessment/shared/assessment-dashboard/exercise-dashboard/tutor-participation.service'; import { ExampleSubmissionService } from 'app/assessment/shared/services/example-submission.service'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('ExampleTextSubmissionComponent', () => { let fixture: ComponentFixture; @@ -64,7 +65,7 @@ describe('ExampleTextSubmissionComponent', () => { }, } as any; TestBed.configureTestingModule({ - imports: [FormsModule], + imports: [FormsModule, FaIconComponent], declarations: [ MockDirective(TranslateDirective), ExampleTextSubmissionComponent, diff --git a/src/main/webapp/app/text/overview/text-editor/text-editor.component.spec.ts b/src/main/webapp/app/text/overview/text-editor/text-editor.component.spec.ts index ff9935ce6935..9cb16cf4c604 100644 --- a/src/main/webapp/app/text/overview/text-editor/text-editor.component.spec.ts +++ b/src/main/webapp/app/text/overview/text-editor/text-editor.component.spec.ts @@ -1,4 +1,4 @@ -import { input, runInInjectionContext } from '@angular/core'; +import { input } from '@angular/core'; import dayjs from 'dayjs/esm'; import { ActivatedRoute, RouterModule, convertToParamMap } from '@angular/router'; import { ComponentFixture, TestBed, fakeAsync, flush, tick } from '@angular/core/testing'; @@ -50,6 +50,7 @@ import { IrisSettingsService } from 'app/iris/manage/settings/shared/iris-settin import { MockProfileService } from 'test/helpers/mocks/service/mock-profile.service'; import { ProfileService } from 'app/core/layouts/profiles/shared/profile.service'; import { ProfileInfo } from 'app/core/layouts/profiles/profile-info.model'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('TextEditorComponent', () => { let comp: TextEditorComponent; @@ -74,7 +75,7 @@ describe('TextEditorComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [RouterModule.forRoot([textEditorRoute[0]])], + imports: [RouterModule.forRoot([textEditorRoute[0]]), FaIconComponent], declarations: [ TextEditorComponent, MockComponent(SubmissionResultStatusComponent), @@ -124,7 +125,7 @@ describe('TextEditorComponent', () => { }); it('should use inputValues if present instead of loading new details', fakeAsync(() => { - runInInjectionContext(TestBed, () => { + TestBed.runInInjectionContext(() => { comp.inputExercise = input(textExercise); comp.inputParticipation = input(participation); comp.inputSubmission = input({ id: 1, text: 'test' }); diff --git a/src/main/webapp/app/tutorialgroup/manage/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-period-row-buttons/tutorial-group-free-period-row-buttons.component.spec.ts b/src/main/webapp/app/tutorialgroup/manage/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-period-row-buttons/tutorial-group-free-period-row-buttons.component.spec.ts index 7d775a0acb34..ab707acbe1ea 100644 --- a/src/main/webapp/app/tutorialgroup/manage/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-period-row-buttons/tutorial-group-free-period-row-buttons.component.spec.ts +++ b/src/main/webapp/app/tutorialgroup/manage/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-period-row-buttons/tutorial-group-free-period-row-buttons.component.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; -import { MockComponent, MockDirective, MockPipe, MockProvider } from 'ng-mocks'; +import { MockDirective, MockPipe, MockProvider } from 'ng-mocks'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { MockRouterLinkDirective } from 'test/helpers/mocks/directive/mock-router-link.directive'; import { DeleteButtonDirective } from 'app/shared/delete-dialog/directive/delete-button.directive'; @@ -30,10 +30,10 @@ describe('TutorialGroupFreePeriodRowButtonsComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ TutorialGroupFreePeriodRowButtonsComponent, MockPipe(ArtemisDatePipe), - MockComponent(FaIconComponent), MockRouterLinkDirective, MockDirective(DeleteButtonDirective), MockPipe(ArtemisTranslatePipe), diff --git a/src/main/webapp/app/tutorialgroup/manage/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-periods-management.component.spec.ts b/src/main/webapp/app/tutorialgroup/manage/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-periods-management.component.spec.ts index 53df383e70c3..3f462afd2e05 100644 --- a/src/main/webapp/app/tutorialgroup/manage/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-periods-management.component.spec.ts +++ b/src/main/webapp/app/tutorialgroup/manage/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-periods-management.component.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; -import { MockComponent, MockDirective, MockPipe, MockProvider } from 'ng-mocks'; +import { MockDirective, MockPipe, MockProvider } from 'ng-mocks'; import { AlertService } from 'app/shared/service/alert.service'; import { MockRouter } from 'test/helpers/mocks/mock-router'; import { of } from 'rxjs'; @@ -47,12 +47,12 @@ describe('TutorialGroupFreePeriodsManagementComponent', () => { const router = new MockRouter(); beforeEach(() => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ TutorialGroupFreePeriodsManagementComponent, LoadingIndicatorContainerStubComponent, MockPipe(ArtemisTranslatePipe), MockPipe(ArtemisDatePipe), - MockComponent(FaIconComponent), MockRouterLinkDirective, TutorialGroupFreePeriodsTableComponent, MockDirective(TranslateDirective), diff --git a/src/main/webapp/app/tutorialgroup/manage/tutorial-group-sessions/tutorial-group-sessions-management/tutorial-group-sessions-management.component.spec.ts b/src/main/webapp/app/tutorialgroup/manage/tutorial-group-sessions/tutorial-group-sessions-management/tutorial-group-sessions-management.component.spec.ts index be08e83250d6..d5a4552f321f 100644 --- a/src/main/webapp/app/tutorialgroup/manage/tutorial-group-sessions/tutorial-group-sessions-management/tutorial-group-sessions-management.component.spec.ts +++ b/src/main/webapp/app/tutorialgroup/manage/tutorial-group-sessions/tutorial-group-sessions-management/tutorial-group-sessions-management.component.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { MockComponent, MockPipe, MockProvider } from 'ng-mocks'; +import { MockPipe, MockProvider } from 'ng-mocks'; import { AlertService } from 'app/shared/service/alert.service'; import { of } from 'rxjs'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; @@ -46,6 +46,7 @@ describe('TutorialGroupSessionsManagement', () => { beforeEach(() => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ TutorialGroupSessionsManagementComponent, TutorialGroupSessionRowStubComponent, @@ -53,7 +54,6 @@ describe('TutorialGroupSessionsManagement', () => { LoadingIndicatorContainerStubComponent, MockPipe(ArtemisTranslatePipe), MockPipe(RemoveSecondsPipe), - MockComponent(FaIconComponent), MockRouterLinkDirective, ], providers: [ diff --git a/src/main/webapp/app/tutorialgroup/manage/tutorial-groups-checklist/tutorial-groups-checklist.component.spec.ts b/src/main/webapp/app/tutorialgroup/manage/tutorial-groups-checklist/tutorial-groups-checklist.component.spec.ts index 055f2b7bc628..6712fc52d2cf 100644 --- a/src/main/webapp/app/tutorialgroup/manage/tutorial-groups-checklist/tutorial-groups-checklist.component.spec.ts +++ b/src/main/webapp/app/tutorialgroup/manage/tutorial-groups-checklist/tutorial-groups-checklist.component.spec.ts @@ -30,11 +30,11 @@ describe('TutorialGroupsChecklistComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ TutorialGroupsChecklistComponent, LoadingIndicatorContainerStubComponent, MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), MockComponent(ChecklistCheckComponent), MockRouterLinkDirective, ], diff --git a/src/main/webapp/app/tutorialgroup/manage/tutorial-groups-configuration/crud/tutorial-groups-configuration-form/tutorial-groups-configuration-form.component.spec.ts b/src/main/webapp/app/tutorialgroup/manage/tutorial-groups-configuration/crud/tutorial-groups-configuration-form/tutorial-groups-configuration-form.component.spec.ts index 987cf6eda07a..eeed2fc1498d 100644 --- a/src/main/webapp/app/tutorialgroup/manage/tutorial-groups-configuration/crud/tutorial-groups-configuration-form/tutorial-groups-configuration-form.component.spec.ts +++ b/src/main/webapp/app/tutorialgroup/manage/tutorial-groups-configuration/crud/tutorial-groups-configuration-form/tutorial-groups-configuration-form.component.spec.ts @@ -1,7 +1,7 @@ import { ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; -import { MockComponent, MockDirective, MockPipe } from 'ng-mocks'; +import { MockDirective, MockPipe } from 'ng-mocks'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap'; import { OwlDateTimeModule, OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker'; @@ -28,14 +28,8 @@ describe('TutorialGroupsConfigurationFormComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ReactiveFormsModule, FormsModule, NgbTypeaheadModule, OwlDateTimeModule, OwlNativeDateTimeModule], - declarations: [ - TutorialGroupsConfigurationFormComponent, - MockPipe(ArtemisTranslatePipe), - MockPipe(ArtemisDateRangePipe), - MockComponent(FaIconComponent), - MockDirective(TranslateDirective), - ], + imports: [ReactiveFormsModule, FormsModule, NgbTypeaheadModule, OwlDateTimeModule, OwlNativeDateTimeModule, FaIconComponent], + declarations: [TutorialGroupsConfigurationFormComponent, MockPipe(ArtemisTranslatePipe), MockPipe(ArtemisDateRangePipe), MockDirective(TranslateDirective)], }) .compileComponents() .then(() => { diff --git a/src/main/webapp/app/tutorialgroup/manage/tutorial-groups/crud/tutorial-group-form/tutorial-group-form.component.spec.ts b/src/main/webapp/app/tutorialgroup/manage/tutorial-groups/crud/tutorial-group-form/tutorial-group-form.component.spec.ts index c246e0f1efaf..bb18f76e7cc0 100644 --- a/src/main/webapp/app/tutorialgroup/manage/tutorial-groups/crud/tutorial-group-form/tutorial-group-form.component.spec.ts +++ b/src/main/webapp/app/tutorialgroup/manage/tutorial-groups/crud/tutorial-group-form/tutorial-group-form.component.spec.ts @@ -1,7 +1,7 @@ import { ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; -import { MockComponent, MockPipe, MockProvider } from 'ng-mocks'; +import { MockPipe, MockProvider } from 'ng-mocks'; import { TutorialGroupFormComponent, TutorialGroupFormData } from 'app/tutorialgroup/manage/tutorial-groups/crud/tutorial-group-form/tutorial-group-form.component'; import { CourseManagementService } from 'app/core/course/manage/services/course-management.service'; import { AlertService } from 'app/shared/service/alert.service'; @@ -60,13 +60,12 @@ describe('TutorialGroupFormComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ReactiveFormsModule, FormsModule, NgbTypeaheadModule, NgbTimepickerModule, OwlDateTimeModule, OwlNativeDateTimeModule], + imports: [ReactiveFormsModule, FormsModule, NgbTypeaheadModule, NgbTimepickerModule, OwlDateTimeModule, OwlNativeDateTimeModule, FaIconComponent], declarations: [ TutorialGroupFormComponent, ScheduleFormComponent, MarkdownEditorStubComponent, MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), MockPipe(ArtemisDatePipe), MockPipe(ArtemisDateRangePipe), ], diff --git a/src/main/webapp/app/tutorialgroup/manage/tutorial-groups/tutorial-groups-management/tutorial-groups-import-dialog/tutorial-groups-registration-import-dialog.component.spec.ts b/src/main/webapp/app/tutorialgroup/manage/tutorial-groups/tutorial-groups-management/tutorial-groups-import-dialog/tutorial-groups-registration-import-dialog.component.spec.ts index dce117ba2231..dd48d9221828 100644 --- a/src/main/webapp/app/tutorialgroup/manage/tutorial-groups/tutorial-groups-management/tutorial-groups-import-dialog/tutorial-groups-registration-import-dialog.component.spec.ts +++ b/src/main/webapp/app/tutorialgroup/manage/tutorial-groups/tutorial-groups-management/tutorial-groups-import-dialog/tutorial-groups-registration-import-dialog.component.spec.ts @@ -2,7 +2,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { TutorialGroupsRegistrationImportDialogComponent } from 'app/tutorialgroup/manage/tutorial-groups/tutorial-groups-management/tutorial-groups-import-dialog/tutorial-groups-registration-import-dialog.component'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; -import { MockComponent, MockDirective, MockPipe, MockProvider } from 'ng-mocks'; +import { MockDirective, MockPipe, MockProvider } from 'ng-mocks'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { TranslateService } from '@ngx-translate/core'; import { TutorialGroupsService } from 'app/tutorialgroup/shared/service/tutorial-groups.service'; @@ -31,8 +31,8 @@ describe('TutorialGroupsRegistrationImportDialog', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [FormsModule, ReactiveFormsModule], - declarations: [TutorialGroupsRegistrationImportDialogComponent, MockPipe(ArtemisTranslatePipe), MockComponent(FaIconComponent), MockDirective(TranslateDirective)], + imports: [FormsModule, ReactiveFormsModule, FaIconComponent], + declarations: [TutorialGroupsRegistrationImportDialogComponent, MockPipe(ArtemisTranslatePipe), MockDirective(TranslateDirective)], providers: [MockProvider(TranslateService), MockProvider(AlertService), MockProvider(TutorialGroupsService), MockProvider(NgbActiveModal)], }).compileComponents(); diff --git a/src/main/webapp/app/tutorialgroup/overview/course-tutorial-group-card/course-tutorial-group-card.component.spec.ts b/src/main/webapp/app/tutorialgroup/overview/course-tutorial-group-card/course-tutorial-group-card.component.spec.ts index 6a36a660e616..f32677488ca9 100644 --- a/src/main/webapp/app/tutorialgroup/overview/course-tutorial-group-card/course-tutorial-group-card.component.spec.ts +++ b/src/main/webapp/app/tutorialgroup/overview/course-tutorial-group-card/course-tutorial-group-card.component.spec.ts @@ -5,7 +5,7 @@ import { generateExampleTutorialGroup } from 'test/helpers/sample/tutorialgroup/ import { User } from 'app/core/user/user.model'; import { TutorialGroup } from 'app/tutorialgroup/shared/entities/tutorial-group.model'; import { TranslateDirective } from 'app/shared/language/translate.directive'; -import { MockComponent, MockDirective } from 'ng-mocks'; +import { MockDirective } from 'ng-mocks'; import { TranslatePipeMock } from 'test/helpers/mocks/service/mock-translate.service'; import { RouterModule } from '@angular/router'; import { CourseTutorialGroupCardComponent } from 'app/tutorialgroup/overview/course-tutorial-group-card/course-tutorial-group-card.component'; @@ -18,8 +18,8 @@ describe('CourseTutorialGroupCardComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [RouterModule.forRoot([])], - declarations: [CourseTutorialGroupCardComponent, MockComponent(FaIconComponent), TranslatePipeMock, MockDirective(TranslateDirective)], + imports: [RouterModule.forRoot([]), FaIconComponent], + declarations: [CourseTutorialGroupCardComponent, TranslatePipeMock, MockDirective(TranslateDirective)], providers: [ { provide: TranslateService, diff --git a/src/main/webapp/app/tutorialgroup/shared/tutorial-group-detail/tutorial-group-detail.component.spec.ts b/src/main/webapp/app/tutorialgroup/shared/tutorial-group-detail/tutorial-group-detail.component.spec.ts index 6ac96b29a962..9d73aa9a9f01 100644 --- a/src/main/webapp/app/tutorialgroup/shared/tutorial-group-detail/tutorial-group-detail.component.spec.ts +++ b/src/main/webapp/app/tutorialgroup/shared/tutorial-group-detail/tutorial-group-detail.component.spec.ts @@ -55,7 +55,7 @@ describe('TutorialGroupDetailWrapperTest', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [RouterModule.forRoot([])], + imports: [RouterModule.forRoot([]), FaIconComponent], declarations: [ TutorialGroupDetailComponent, MockWrapperComponent, @@ -63,7 +63,6 @@ describe('TutorialGroupDetailWrapperTest', () => { MockComponent(IconCardComponent), MockPipe(ArtemisTranslatePipe), MockPipe(RemoveSecondsPipe), - MockComponent(FaIconComponent), MockComponent(TutorialGroupUtilizationIndicatorComponent), MockDirective(TranslateDirective), MockComponent(ProfilePictureComponent), @@ -108,11 +107,10 @@ describe('TutorialGroupDetailComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [RouterModule.forRoot([])], + imports: [RouterModule.forRoot([]), FaIconComponent], declarations: [ TutorialGroupDetailComponent, MockPipe(ArtemisTranslatePipe), - MockComponent(FaIconComponent), MockComponent(IconCardComponent), MockComponent(TutorialGroupUtilizationIndicatorComponent), MockPipe(RemoveSecondsPipe), diff --git a/src/main/webapp/app/tutorialgroup/shared/tutorial-groups-table/tutorial-groups-table.component.spec.ts b/src/main/webapp/app/tutorialgroup/shared/tutorial-groups-table/tutorial-groups-table.component.spec.ts index 82e8fd750a63..edc99fd0b1fc 100644 --- a/src/main/webapp/app/tutorialgroup/shared/tutorial-groups-table/tutorial-groups-table.component.spec.ts +++ b/src/main/webapp/app/tutorialgroup/shared/tutorial-groups-table/tutorial-groups-table.component.spec.ts @@ -60,6 +60,7 @@ describe('TutorialGroupTableWrapperTest', () => { beforeEach(() => { TestBed.configureTestingModule({ + imports: [FaIconComponent], declarations: [ TutorialGroupsTableComponent, TutorialGroupRowStubComponent, @@ -67,11 +68,9 @@ describe('TutorialGroupTableWrapperTest', () => { MockExtraColumnComponent, MockPipe(ArtemisTranslatePipe), MockPipe(ArtemisDatePipe), - MockComponent(FaIconComponent), MockRouterLinkDirective, MockDirective(SortDirective), MockDirective(SortByDirective), - MockComponent(FaIconComponent), MockComponent(TutorialGroupUtilizationIndicatorComponent), MockDirective(TranslateDirective), ], diff --git a/src/test/javascript/spec/helpers/mocks/mock-router.ts b/src/test/javascript/spec/helpers/mocks/mock-router.ts index 5efda9aeed53..270b4db95141 100644 --- a/src/test/javascript/spec/helpers/mocks/mock-router.ts +++ b/src/test/javascript/spec/helpers/mocks/mock-router.ts @@ -4,7 +4,7 @@ import { NavigationEnd, RouterEvent, RouterState, UrlTree } from '@angular/route // When using the spies, bear in mind jest.resetAllMocks does not affect them, they need to be reset manually export class MockRouter { _url = '/'; - navigateByUrl = jest.fn().mockReturnValue(true); + navigateByUrl = jest.fn().mockReturnValue(Promise.resolve(true)); navigate = jest.fn().mockReturnValue(Promise.resolve(true)); routerState: RouterState; createUrlTree = jest.fn().mockReturnValue({ path: 'testValue' } as unknown as UrlTree); diff --git a/src/test/javascript/spec/helpers/sample/problemStatement.json b/src/test/javascript/spec/helpers/sample/problemStatement.json index 4f4ebc395ca4..1f7d0a63a068 100644 --- a/src/test/javascript/spec/helpers/sample/problemStatement.json +++ b/src/test/javascript/spec/helpers/sample/problemStatement.json @@ -7,8 +7,8 @@ "problemStatementBothFailedRendered": "
    \n
  1. Implement Bubble Sort: artemisApp.editor.testStatusLabels.noResult
    \nImplement the method performSort(List<Date>) in the class BubbleSort. Make sure to follow the Bubble Sort algorithm exactly.
  2. \n
  3. Implement Merge Sort: artemisApp.editor.testStatusLabels.noResult
    \nImplement the method performSort(List<Date>) in the class MergeSort. Make sure to follow the Merge Sort algorithm exactly.
  4. \n
\n", "problemStatementBothFailedHtml": "
    \n
  1. Implement Bubble Sort: artemisApp.editor.testStatusLabels.testFailing
    \nImplement the method performSort(List<Date>) in the class BubbleSort. Make sure to follow the Bubble Sort algorithm exactly.
  2. \n
  3. Implement Merge Sort: artemisApp.editor.testStatusLabels.testPassing
    \nImplement the method performSort(List<Date>) in the class MergeSort. Make sure to follow the Merge Sort algorithm exactly.
  4. \n
\n", "problemStatementBubbleSortFailsRendered": "
    \n
  1. Implement Bubble Sort: artemisApp.editor.testStatusLabels.noResult
    \nImplement the method performSort(List<Date>) in the class BubbleSort. Make sure to follow the Bubble Sort algorithm exactly.
  2. \n
  3. Implement Merge Sort: artemisApp.editor.testStatusLabels.noResult
    \nImplement the method performSort(List<Date>) in the class MergeSort. Make sure to follow the Merge Sort algorithm exactly.
  4. \n
\n", - "problemStatementBubbleSortNotExecutedHtml": "
    \n
  1. Implement Bubble SortartemisApp.editor.testStatusLabels.totalTestsPassing
    \nImplement the method performSort(List<Date>) in the class BubbleSort. Make sure to follow the Bubble Sort algorithm exactly.
  2. \n
  3. Implement Merge SortartemisApp.editor.testStatusLabels.totalTestsPassing
    \nImplement the method performSort(List<Date>) in the class MergeSort. Make sure to follow the Merge Sort algorithm exactly.
  4. \n
", + "problemStatementBubbleSortNotExecutedHtml": "
    \n
  1. Implement Bubble SortartemisApp.editor.testStatusLabels.totalTestsPassing
    \nImplement the method performSort(List<Date>) in the class BubbleSort. Make sure to follow the Bubble Sort algorithm exactly.
  2. \n
  3. Implement Merge SortartemisApp.editor.testStatusLabels.totalTestsPassing
    \nImplement the method performSort(List<Date>) in the class MergeSort. Make sure to follow the Merge Sort algorithm exactly.
  4. \n
", "problemStatementEmptySecondTask": "1. [task][Bubble Sort](1) \n Implement the method. \n 2. [task][Merge Sort]() \n Implement the method.", - "problemStatementEmptySecondTaskNotExecutedHtml": "
    \n
  1. Bubble SortartemisApp.editor.testStatusLabels.totalTestsPassing
    \nImplement the method.
  2. \n
  3. Merge SortartemisApp.editor.testStatusLabels.noTests
    \nImplement the method.
  4. \n
", + "problemStatementEmptySecondTaskNotExecutedHtml": "
    \n
  1. Bubble SortartemisApp.editor.testStatusLabels.totalTestsPassing
    \nImplement the method.
  2. \n
  3. Merge SortartemisApp.editor.testStatusLabels.noTests
    \nImplement the method.
  4. \n
", "problemStatementPlantUMLWithTest": "@startuml\nclass Policy {\n1)>+configure()\n2)>+testWithParenthesis()}\n@enduml" } diff --git a/src/test/javascript/spec/integration/code-editor/code-editor-instructor.integration.spec.ts b/src/test/javascript/spec/integration/code-editor/code-editor-instructor.integration.spec.ts index 785a451a7195..887375dc6282 100644 --- a/src/test/javascript/spec/integration/code-editor/code-editor-instructor.integration.spec.ts +++ b/src/test/javascript/spec/integration/code-editor/code-editor-instructor.integration.spec.ts @@ -69,6 +69,7 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'; import { provideHttpClient } from '@angular/common/http'; import { ProfileInfo } from 'app/core/layouts/profiles/profile-info.model'; import { Submission } from 'app/exercise/shared/entities/submission/submission.model'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; describe('CodeEditorInstructorIntegration', () => { let comp: CodeEditorInstructorAndEditorContainerComponent; @@ -98,7 +99,7 @@ describe('CodeEditorInstructorIntegration', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [TranslateModule.forRoot(), MockModule(NgbTooltipModule)], + imports: [TranslateModule.forRoot(), MockModule(NgbTooltipModule), FaIconComponent], declarations: [ CodeEditorInstructorAndEditorContainerComponent, CodeEditorContainerComponent,